當前位置:編程學習大全網 - 網絡軟體 - dijkstra算法是什麽?

dijkstra算法是什麽?

迪傑斯特拉算法用來解決從頂點v0出發到其余頂點的最短路徑,該算法按照最短路徑長度遞增的順序產生所以最短路徑。

對於圖G=(V,E),將圖中的頂點分成兩組:第壹組S:已求出的最短路徑的終點集合(開始為{v0})。第二組V-S:尚未求出最短路徑的終點集合(開始為V-{v0}的全部結點)。

堆優化

思考

該算法復雜度為n^2,我們可以發現,如果邊數遠小於n^2,對此可以考慮用堆這種數據結構進行優化,取出最短路徑的復雜度降為O(1);每次調整的復雜度降為O(elogn);e為該點的邊數,所以復雜度降為O((m+n)logn)。

實現

1、將源點加入堆,並調整堆。

2、選出堆頂元素u(即代價最小的元素),從堆中刪除,並對堆進行調整。

3、處理與u相鄰的,未被訪問過的,滿足三角不等式的頂點

1):若該點在堆裏,更新距離,並調整該元素在堆中的位置。

2):若該點不在堆裏,加入堆,更新堆。

4、若取到的u為終點,結束算法;否則重復步驟2、3。

  • 上一篇:肉麻情歌的歌詞
  • 下一篇:《tbc》熊t初期裝備是什麽?
  • copyright 2024編程學習大全網