一:
最短路径算法
1. 迪杰斯特拉算法
2. 弗洛伊德算法
二:
1.
迪杰斯特拉算法
求
从源点到其余各点的最短路径
依
最短路径的长度递增
的次序求得各条
路径
路径长度最短
的最短路径的特点:
在这条路径上,
必定只含一条弧
,并且这条
弧的
权值最小
。
下一条
路径长度次短
的最短路径的特点:
它只可能有两种情况:或是
直接从源点到该
点
(
只含一条弧
)
;
或者是
从源点经过顶点
v
1
,再到达该顶点
(
由两条弧组成
)
。
再下一条
路径长度次短
的最短路径的特点
:
它可能有三种情况:或者是
直接从源点到该
点
(
只含一条弧
)
;
或者是
从源点经过顶点
v
1
,再到达该顶点
(
由两条弧组成
)
;或者是
从源点经过顶点
v
2
,再到达该顶点。
其余最短路径的特点:
它或者是
直接从源点到该点
(
只含一条弧
)
;
或者是
从源点经过已求得最短路径的顶点,
再到达该顶点
。
迪杰斯特拉算法
算法:
(a)
初始化:
用起点v到该顶点w的直接边(弧)初始化最短路径,否则设为∞;
(b)
从未求得最短路径的终点中选择路径长度最小的终点u:即求得v到u的最短路径;
(c)
修改最短路径: