最短路径 -- 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) 

发布了26 篇原创文章 · 获赞 3 · 访问量 1395

猜你喜欢

转载自blog.csdn.net/qq_42937176/article/details/103648556
今日推荐