迪杰斯特拉算法(Dijkstra's algorithm)是一種非常重要且有價(jià)值的算法。它被廣泛應(yīng)用于計(jì)算圖中單源最短路徑問(wèn)題,在交通路線(xiàn)規(guī)劃、網(wǎng)絡(luò)路由、作業(yè)調(diào)度等領(lǐng)域有著廣泛的應(yīng)用。
迪杰斯特拉算法是由荷蘭計(jì)算機(jī)科學(xué)家克勞德·迪杰斯特拉(Edsger W. Dijkstra)于1959年首次提出的。這個(gè)算法被用來(lái)計(jì)算單源最短路徑,在圖論和計(jì)算機(jī)科學(xué)領(lǐng)域里被廣泛使用。迪杰斯特拉本人在發(fā)明這個(gè)算法時(shí)是在荷蘭國(guó)家電訊公司工作,當(dāng)時(shí)他正在研究如何通過(guò)計(jì)算機(jī)來(lái)規(guī)劃路徑。
迪杰斯特拉算法是用于求最短路徑的一種算法。它是貪心算法的一種,通過(guò)不斷地選取最短路徑來(lái)逼近最終答案。算法流程如下:
- 初始化所有結(jié)點(diǎn)的最短路徑為無(wú)窮大。
- 設(shè)置起點(diǎn)的最短路徑為 0。
- 從起點(diǎn)開(kāi)始,每次選取最短路徑最小的結(jié)點(diǎn),并將其周?chē)慕Y(jié)點(diǎn)的最短路徑更新。
重復(fù)步驟 3,直到所有結(jié)點(diǎn)的最短路徑都被更新。
例子:
假設(shè)有一張圖如下,求從結(jié)點(diǎn)1到結(jié)點(diǎn)4的最短路徑。
初始化最短路徑:
1: 0, 2: inf, 3: inf, 4: inf, 5: inf
設(shè)置起點(diǎn)1的最短路徑為0,并開(kāi)始更新周?chē)Y(jié)點(diǎn)的最短路徑。
更新 2: 1+2=3, 3: 1+3=4
選擇 2 作為新的當(dāng)前結(jié)點(diǎn)
更新 4: 2+1=3, 5: 2+3=5
選擇 4 作為新的當(dāng)前結(jié)點(diǎn)
更新 5: 4+1=5
選擇 5 作為新的當(dāng)前結(jié)點(diǎn)
最終得到的最短路徑為:1: 0, 2: 3, 3: 4, 4: 3, 5: 5
結(jié)點(diǎn) 1 -> 2 -> 4 -> 5
可以看到結(jié)點(diǎn)1到結(jié)點(diǎn)4的最短路徑為1 -> 2 -> 4,距離為3。
注意迪杰斯特拉算法只適用于有向圖或者邊權(quán)非負(fù)的無(wú)向圖,如果邊權(quán)有負(fù)數(shù),則需要使用其他算法,如貝爾man-福德算法。
迪杰斯特拉算法的最大優(yōu)點(diǎn)是其簡(jiǎn)單易懂和時(shí)間復(fù)雜度較低,因此在實(shí)際應(yīng)用中非常實(shí)用。它可以在稠密圖和稀疏圖中使用,對(duì)于邊權(quán)均為非負(fù)數(shù)的圖都可以使用。
?
★關(guān)于WorkWin公司電腦監(jiān)控軟件★
WorkWin的使命是打造Work用途的Windows 電腦系統(tǒng),有效規(guī)范員工上網(wǎng)行為,讓老板知道員工每天在做什么(監(jiān)控包括屏幕、上網(wǎng)在內(nèi)的一舉一動(dòng)),限制員工不能做什么(禁止網(wǎng)購(gòu)、游戲、優(yōu)盤(pán)等)。
WorkWin基于純軟件設(shè)計(jì),小巧易用,無(wú)需添加或改動(dòng)任何硬件,使用一臺(tái)管理機(jī)監(jiān)控全部員工機(jī)電腦。歷經(jīng)南京網(wǎng)亞十余年精心打造,此時(shí)此刻每天都有成千上萬(wàn)企業(yè)電腦正在運(yùn)行WorkWin,選擇WorkWin選擇“贏"。
WorkWin首頁(yè) 短視頻簡(jiǎn)介 下載免費(fèi)試用版
版權(quán)所有,南京網(wǎng)亞計(jì)算機(jī)有限公司 。本文鏈接地址: 迪杰斯特拉算法(Dijkstra’s algorithm)以及示例