Dijkstra最短路径算法
求单源到其他所有节点的最短路径,时间复杂度o( n^2 )
算法特点:
每次找出前一次迭代后具有最低费用的节点,添加到集合中;
第k次迭代后,可以知道到k个目的节点的最低费用路径;
伪代码:
Initialize:
N'={u}
for all nodes v
if v is a neighbor of u
then D(v) =C(u,v)
else D(v)=∞
Loop
find w not in N' such that D(w) is a minimum
add w to N'
update D(v) for each neighbor v of w and not in N'
D(v) =min (D(v), D(w)+C(w,v))
/** new cost to v is either old cost to v or known
least path cost to w plus cost from w to v
*/
Until N'=N
以下是一个实例(出现在计算机网络的路由选择问题中):

以下表格展示了算法的执行过程:
D(v) 表示从源节点到v的路径大小,
P(v)表示从源节点到v的最短路径的前一节点
| 步骤 | 节点子集N | D(v),P(v) | D(w),P(w) | D(x),P(x) | D(y),P(y) | D(z),P(z) |
|---|---|---|---|---|---|---|
| 0 | u | 2,u | 5,u | 1,u | ∞ | ∞ |
| 1 | ux | 2,u | 4,x | 2,x | ∞ | |
| 2 | uxy | 2,u | 3,y | 4,y | ||
| 3 | uxyv | 3,y | 4,y | |||
| 4 | uxyvw | 4,y | ||||
| 5 | uxyvwz |
Dijkstra算法在计算机网络的路由选择算法中有应用
Dijkstra算法详解
本文深入讲解了Dijkstra算法,一种用于求解单源最短路径问题的经典算法。介绍了算法的时间复杂度为O(n^2),并通过实例展示了算法的执行过程。Dijkstra算法在计算机网络的路由选择中有着广泛的应用。
3500

被折叠的 条评论
为什么被折叠?



