1. 算法的原理

以源點開始,以源點相連的頂點作為向外延伸的頂點,在所有這些向外延伸的頂點中選擇距源點最近的頂點繼續(xù)向四周延伸(某個頂點被選作繼續(xù)延伸的頂點,則源點到它的最短距離就已經(jīng)確定,我們也不再將其視為向外延伸的頂點了),如果在繼續(xù)延伸的過程中遇到了之前已延伸到的頂點,且當前這次延伸過程使其離源點更近,我們就修正這個距離,直到所有的頂點都被視為繼續(xù)延伸的頂點,此時我們就得到了源點到其它各個頂點的距離。

2. 一個具體的例子

在下面的例子中,模擬了dijkstra算法求解頂點3到其它各個頂點的最短距離。

黑色的頂點表示沒有被延伸到的頂點,此時源點到它的距離為無窮。紅色頂點表示已被延伸到的頂點,紅色頂點旁的數(shù)字表示源點到它的距離。綠色頂點表示源點到該頂點的最短距離已確定。如果源點到某個頂點的距離被修正,我們將用黃色的方框?qū)⑵錁俗ⅰ?/span>

distTo數(shù)組表示源點(下圖中源點為頂點3)到各個頂點的距離,其中綠色的表示最短距離,紅色表示這個距離是否是最短距離還未確定。

edgeTo數(shù)組表示源點3(下圖中源點為頂點3)到各個頂點的路徑,其中綠色的表示最短距離路徑確定,紅色表示這個距離是否是最短距離還未確定。edgeTo[i]表示經(jīng)過頂點i的上一個頂點。

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設計培訓,網(wǎng)站建設培訓學習是年輕人改變自己的最好方式