
算法导论
文章平均质量分 81
csy463168656
这个作者很懒,什么都没留下…
展开
-
贪心算法之Dijkstra
三角不等式:单源最短路径:对于给定的一个源顶点s∈V,对所有v∈V找出最短路径权重为δ(s,v),如果所有边权重w(u,v)是非负的,则s到所有点的最短路径肯定存在。思想:1. 有一个顶点集合S,从s到他的最短路径是未知的。2. 在每一步,添加从s到v∈V-S的路径是最短的v到S中3. 更新顶点邻接表中到v的距离算法如下:最后结果如下:算法分析如下:原创 2012-10-30 08:55:01 · 977 阅读 · 0 评论 -
贪心算法之Bellman-Ford
前面都是边的权值是正的情况,如果一个图包含负权值的环,那么最短路径可能不存在。而Bellman-Ford算法:从源s∈V到所有v∈V找到所有的最短路径的长度或者检测是否有一个负环路存在。算法如下:算法的前面还是和Dijkstra一样的,只是在后面多了一个检测负权环的for循环,即对所有的边松弛完毕后,开始检测如果d[v]>d[u]+w(u,v)任然存在那么显然有一个负权环代码如下:原创 2012-10-30 14:49:51 · 1375 阅读 · 0 评论 -
动态规划之LCS
最长公共子序列的意思就是两个序列,有公共的部分,公共部分在这两个序列的位置上不一定相等,但序列的逻辑顺序是相等的例如给定两个序列x[1..m]和y[1..n],找出一个(注,这里说的是一个而不是这个,也就是说可能有很多个)最长的公共序列,其中 x: A B C B D A B y: B D C A B A则LCS(x,y) = BCBA .........此处LC原创 2012-10-25 08:36:31 · 767 阅读 · 0 评论 -
最小生成树算法之prim
输入无向图G=(V,E),它的权重函数是w: E→R输出一个最小生成树T----一棵用最小权重连接所有顶点的树:移去任何属于(u,v)∈T则T被分割成两棵子树T1,T2。还是用剪切和粘贴法来证明如下:从它的性质我们可以知道它符合动态规划的两个性质,所以我们可以用动态规划来设计算法,但是此处还有一个更好的性质:子问题的最优解也是全局最优解证明,同样适用反证法和原创 2012-10-25 15:44:07 · 642 阅读 · 0 评论