最短路径算法-Dijkstra算法
本文最后更新于30 天前,其中的信息可能已经过时,如有错误请发送邮件到larwar@163.com

初识Dijkstra算法

特点
1.贪心算法
2.单起点最短路径(Single-Source Shortest Path)
3.不支持负数权重

example:
给出各边权重:
A -> B (cost 6)
A -> C (cost 2)
B -> D (cost 1)
B -> E (cost 4)
C -> B (cost 3)
C -> D (cost 5)
D -> E (cost 1)
记录已经访问了哪些点,还有到某个点的最小花费,以及这个最小花费需要从哪里出发。
初始先把所有花费设为$\infty$. (cost[A,B,C,D,E] = $\infty$)

先从A开始,访问A
A->A 的花费是0,更新到A的最小花费,
A->B 的花费是6,比$\infty$小,更新B (cost[B] = 6)
A->C 的花费是2,比$\infty$小,更新C (cost[C] = 2)
A的邻居已经访问完了,现在到B的最小花费6,到C的最小花费是2。
现在把A标记为已经访问。
接着访问A的花费最小的而且没有被访问过的邻居,C。
$A \to C + C \to B$ 的花费是9,大于cost[B],不更新B
$A \to C + C \to D$ 的花费是7,小于$\infty$,更新D (cost[D] = 7)
接下来是A的另一个邻居,B。
$A \to B + B \to D$ 的花费是7,等于cost[D],不更新
$A \to B + B \to E$ 的花费是10,小于$\infty$,更新E (cost[E] = 7)

A
如此往复。

No Comments

Send Comment Edit Comment


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
Previous
Next