Dijkstra算法的步骤
- 格式:pdf
- 大小:205.48 KB
- 文档页数:1
Dijkstra算法(最短路)的具体步骤:
(1)开始时,令
,)(,,0,0,,0
0
jsjsssvTvvvpvsi令对每个.,sks
j
(2) 设 kv是刚获得P标号的点.考察每个使 )(,),(
jjijjkvTvsvAvv将的点且
修改为即
kjkjjwvPvTvT)(),(min)( (7.6)
如果 ,)()(
kjkjwvPvT则把T(vj)修改为 kjkwvP)(,把 j修改为 k;否则不修
改.
(3)令
)(min)(
jsvjvTvT
iji
. (7.7)
如果 T,则把 ijv的T标号变为P标号,即令 )()(
iijjvTvP,令
ijiivSS
1,k=ji,把i换成i+1,如果1iSV
,算法终止,这时对每一个
1jivS
有
)()(
jjvPvl;而对每一个
1jivS
,有
jjvTvl.否则返回(2);
“最邻近方法”是构造最小哈密顿环的一个较好的方法,具体步骤如下:
(1)有任意选择的结点开始,找一个与起始点最近的结点,形成一条边的
初始路径。
(2)设x表示最新加到这条路上的结点,从不在路上的所有结点中间选一
个与x最接近的结点,将连接x与这一结点的边加到这条路上。重复这一步,直
到图中所有结点包含在路上。
(3)将连接起始点与最后加入的结点之间的边加到这条路上,就得到一个
环。
求最小生成树的Kruskal算法,具体步骤如下:
设(,,)GVEf是一具有n个结点的连通有权图,
(1)选取G中一条边
1e,使
1e在G的所有边中有最小的权,
11(,)GVS,
11Se,1i;
(2)若已选好
12,,,
iiSeee,从
iES中选一条边
1ie
满足下列条件:
①
1iiSe
中不含有环;
②在
iES的满足①的所有边中,
1ie
有最小的权。
若满足上述条件的边
1ie
不存在,则(,)
iiGVS就是最小生成树。否则,令
11iiiSSe
,
11(,)
iiGVS
;
(3)令1ii,并返回第(2)步。