摘要:
动态规划 最大连续子序列和 最大连续子序列问题如下: 给定一个数字序列,A1,A2,A3,......,An,求 i,j ( 1i+......+Aj 最大,输出这个最大和。 这个问题如果使用暴力法,枚举左端点 i 和右端点 j ,需要 O(n2)的时间复杂度,再计算 A[i] + ... + A[ 阅读全文
摘要:
动态规划 [TOC] 动态规划(Dynamic Programming, DP)是一种用来解决一类 最优化问题 的算法思想。 简单来说,动态规划是将一个复杂的问题分解成若干个子问题,通过综合子问题的最优解来得到原问题的最优解。动态规划会把每个求解过的子问题的解记录下来,这样当下一次碰到同样的子问题时 阅读全文
摘要:
最小生成树 [TOC] 最小生成树(Minimum Spanning Tree,MST)是在一个给定的无向图G(V,E)中求一棵树 T,使得这棵树拥有图 G中的所有顶点,且所有边都是来自图 G 中的边,并且满足整棵树的边权之和最小。 最小生成树有三个性质需要掌握: 最小生成树是树,因此其边数等于顶点 阅读全文
摘要:
拓扑排序 [TOC] 有向无环图 如果一个有向图的任意顶点都无法通过一些有向边回到自身,那么称这个图为有向无环图(Directed Acyclic Graph, DAG)。 拓扑排序 拓扑排序是将有向无环图 G 的所有顶点排序成一个线性序列,使得对图 G 中的任意两个顶点 u,v,如果存在边 u v 阅读全文
摘要:
最短路径 [TOC] 最短路径问题: 给定任意的图 和起点 S,终点 T,如何求从 S 到 T 的最短路径。 解决最短路径的常用方法有 Dijkstra 算法 Bellman Ford 算法 SPFA 算法 Floyd 算法 这里主要对 Dijkstra 算法及其变种进行总结。 Dijkstra 算 阅读全文