Dijkstra最短路径算法

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的最短路径的前一节点

步骤节点子集ND(v),P(v)D(w),P(w)D(x),P(x)D(y),P(y)D(z),P(z)
0u2,u5,u1,u
1ux2,u4,x2,x
2uxy2,u3,y4,y
3uxyv3,y4,y
4uxyvw4,y
5uxyvwz

Dijkstra算法在计算机网络的路由选择算法中有应用

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值