图
文章平均质量分 78
Scandinavians
明天会更好!
展开
-
单源多目标最短路径之Dijkstra算法
Dijkstra算法(单源最短路径) 单源最短路径问题,即在图中求出给定顶点到其它任一顶点的最短路径。在弄清楚如何求算单源最短路径问题之前,必须弄清楚最短路径的最优子结构性质。一.最短路径的最优子结构性质 该性质描述为:如果P(i,j)={Vi....Vk..Vs...Vj}是从顶点i到j的最短路径,k和s是这条路径上的一个中间顶点,那么P(k,s)必定是从k到s的最短路原创 2014-06-29 16:17:30 · 2600 阅读 · 0 评论 -
图的最小生成树(MST)之Prim算法
Prim算法的思想:原创 2014-06-29 05:23:10 · 1015 阅读 · 0 评论 -
图的深度优先遍历(邻接表存储)
深度优先遍历的思路:从源点开始,标记源点,原创 2014-06-28 21:22:16 · 1257 阅读 · 0 评论 -
有向图单源最短路径之Bellman-Ford算法
Dijkstra算法是处理单源最短路径的有效算法,但它局限于边的权值非负的情况,若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的。这时候,就需要使用其他的算法来求解最短路径,Bellman-Ford算法就是其中最常用的一个。该算法由美国数学家理查德•贝尔曼(Richard Bellman, 动态规划的提出者)和小莱斯特•福特(Lester Ford)发明。原创 2014-06-29 18:52:29 · 761 阅读 · 0 评论 -
所有顶点对之间的最短路径之Floyd-Warshall算法
Floyd算法用于求最短路径。Floyd算法可以说是Warshall算法的扩展,三个for循环就可以解决问题,所以它的时间复杂度为O(n^3)。Floyd算法的基本思想如下:从任意节点A到任意节点B的最短路径不外乎2种可能,1是直接从A到B,2是从A经过若干个节点X到B。所以,我们假设Dis(AB)为节点A到节点B的最短路径的距离,对于每一个节点X,我们检查Dis(AX) + Dis(XB原创 2014-06-29 16:49:23 · 582 阅读 · 0 评论 -
图的最小生成树(MST)之Kruskal算法
克鲁斯卡尔(Kruskal)算法(只与边相关)算法描述:克鲁斯卡尔算法需要对图的边进行访问,所以克鲁斯卡尔算法的时间复杂度只和边又关系,可以证明其时间复杂度为O(eloge)。算法过程:1.将图各边按照权值进行排序2.将图遍历一次,找出权值最小的边,(条件:此次找出的边不能和已加入最小生成树集合的边构成环),若符合条件,则加入最小生成树的集合中。不符合条原创 2014-06-29 01:46:54 · 634 阅读 · 0 评论 -
图的广度优先遍历
图的广度优先遍历:原创 2014-06-28 22:18:53 · 510 阅读 · 0 评论