迪杰斯特拉(Dijkstra)算法主要是針對(duì)沒(méi)有負(fù)值的有向圖,求解其中的單一起點(diǎn)到其他頂點(diǎn)的最短路徑算法。本文主要總結(jié)迪杰斯特拉(Dijkstra)算法的原理和算法流程,最后通過(guò)程序?qū)崿F(xiàn)在一個(gè)帶權(quán)值的有向圖中,選定某一個(gè)起點(diǎn),求解到達(dá)其它節(jié)點(diǎn)的最短路徑,來(lái)加深對(duì)算法的理解。

1 算法原理

迪杰斯特拉(Dijkstra)算法是一個(gè)按照路徑長(zhǎng)度遞增的次序產(chǎn)生的最短路徑算法。下圖為帶權(quán)值的有向圖,作為程序中的實(shí)驗(yàn)數(shù)據(jù)。

seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營(yíng)銷(xiāo)培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營(yíng)銷(xiāo)培訓(xùn)

其中,帶權(quán)值的有向圖采用鄰接矩陣graph來(lái)進(jìn)行存儲(chǔ),在計(jì)算中就是采用n*n的二維數(shù)組來(lái)進(jìn)行存儲(chǔ),v0-v5表示數(shù)組的索引編號(hào)0-5,二維數(shù)組的值表示節(jié)點(diǎn)之間的權(quán)值,若兩個(gè)節(jié)點(diǎn)不能通行,比如,v0->v1不能通行,那么gr

網(wǎng)友評(píng)論