简单的算法备忘录,个人总结[长期更新]

四边形不等式优化

  若$DP(i,j)=max(DP(i,k-1),DP(k,j)+W(i,j))$  其中$i≤k≤j$ ,并记最优的$k$值为$S(i,j)$

  如果$W(i,j)$满足区间包含单调性和四边形不等式,则$DP(i,j)$也满足四边形不等式,

  而如果$DP(i,j)$满足四边形不等式,则$S(i,j)$满足区间包含单调性,即$S(i,j)≤S(i,j+1)≤S(i+1,j+1)$
  则转移方程可以简化为$DP(i,j)=max{DP(i,k-1),DP(k,j)}+W(i,j)(S(i,j-1)≤k≤S(i-1,j+1)$复杂度下降一个阶

带权并查集

  把当前点和其他点的关系进行路径压缩,转化为和根节点的关系 合并时,修改根节点并更新关系

强连通分量

  对图进行dfs,当解答树中一个节点所能回溯的最早的访问时间等于自身访问时间,说明为当前强连通分量的根,其后深度优先遍历的所有点皆为一个强连通分量

割点

  对图进行dfs,当解答树中一个子节点所能回溯的最早访问时间小于等于自身访问时间,该点为一个割点

树的直径

  在树上任意一点(通常是树根)找最远的一个点,再从最远的点找到它最远的另外一个点,这两个点的路径就是树的一条直径

$A*$启发式搜索

  用估价函数$F(x)=g(x)+h(x)$对当前局面进行估值,放进优先队列,用$f,g,h$三个价值之一进行排序,每次取出最优值进行BFS

posted @ 2018-04-05 20:37  nervending  阅读(319)  评论(0编辑  收藏  举报