图最短路径 Graph V2
单源最短路径
Dijkstra
给定带权有向图 G =(V,E),其中每条边的权是非负实数。另外,还给定 V 中的一个顶点,称为源。
- 单源最短路径:要计算从源到所有其他各顶点的各边权之和的最短长度

最小生成树
设 G=(V, E) 是连通无向带权图,V = {1, 2,..., n},即一个网络。E 中每条边 (v, w) 的权位 c[v][w]。
-
生成树:如果
G的子图G'是一颗包含G的所有顶点的树,则称G'为G的生成树。 -
最小生成树:生成树上各边权的总和称为该生成树的耗费。在
G的所有生成树中,耗费最小的生成树称为G的最小生成树。
构造 G 的最小生成树算法:
- Prim 避圈法
- Kruskai 破圈法
Prim 避圈法
-
首先初始化构造集
X={1} -
然后,只要
X是V的真子集,就作如下的贪心选择选取权重最小的边(x,y),其中x ∈ X,y ∈ Y,-
将边
(x,y)加入当前的最小生成树, -
将顶点
y从Y移到X中,
-
-
这个过程一直进行到构造集
X=V时为止。在这个过程中选取到的所有边恰好构成G的一棵最小生成树。

Kruskai 破圈法
- 对
G的边E按权重以非降序排列 - 初始时输出树
T={}依次取排序表中的每条边,若加入T不形成回路,则加入T否则将其丢弃; - 不断重复步骤 2,直到树
T包含n-1条边(即n个节点),算法结束。
