最短路径 -- Dijkstra算法

定义一个有向图D=(V, A),对每一个弧a=(v<sub>i</sub>, v<sub>j</sub>),相应地有权ω(a)=ω<sub>ij</sub>,又给定D中的两个顶点v<sub>s</sub>,v<sub>t</sub>。设P是D中从v<sub>s</sub>到v<sub>t</sub>的一条路径,定义路P的权是P中所有弧的权之和,记为ω(P)。最短路径问题就是要在所有从v<sub>s</sub>到v<sub>t</sub>的路中,求一条权最小的路,即求一条从v<sub>s</sub>到v<sub>t</sub>的路P<sub>0</sub>,使<font size=6>ω(P<sub>0</sub>)=ω(P)
在Dijkstra算法中,用P(v),T(v)分别表示点v的P标号和T标号,S<sub>i</sub>表示第i步时,具P标号的点的集合。为了求出从v<sub>s</sub>到各点的距离的同时,也求出从v<sub>s</sub>到各点的最短路径,给每个点v以一个λ值,算法终止时,如果λ(v)=m,表示在从v<sub>s</sub>到v的最短路径上,v的前一个点是v<sub>m</sub>;如果λ(v)=M,表示D中不含从v<sub>s</sub>到v的路;λ(v)=0表示v=v<sub>s</sub>。

# Dijkstra算法具体步骤:

## 给定赋权有向图D=(V, A)。

#### 开始(i=1)令S1={v<sub>s</sub>},P(vs)=0,λ(v<sub>s</sub>)=0,对每一个v != v<sub>s</sub>,令T(v)= ++,λ(v)=M,令k=s。
###### 第一步:如果
 

\omega (P_{0})=\lim_P \omega(P) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值