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

Floyd算法是什麽?

Floyd算法又稱為弗洛伊德算法,插點法,是壹種用於尋找給定的加權圖中頂點間最短路徑的算法。

通過壹個圖的權值矩陣求出它的每兩點間的最短路徑矩陣。 

從圖的帶權鄰接矩陣A=[a(i,j)] n×n開始,遞歸地進行n次更新,即由矩陣D(0)=A,按壹個公式,構造出矩陣D(1);又用同樣地公式由D(1)構造出D(2);……;最後又用同樣的公式由D(n-1)構造出矩陣D(n)。矩陣D(n)的i行j列元素便是i號頂點到j號頂點的最短路徑長度,稱D(n)為圖的距離矩陣,同時還可引入壹個後繼節點矩陣path來記錄兩點間的最短路徑。 

采用的是(松弛技術),對在i和j之間的所有其他點進行壹次松弛。所以時間復雜度為O(n^3); 其狀態轉移方程如下: map[i,j]:=min{map[i,k]+map[k,j],map[i,j]} map[i,j]表示i到j的最短距離 K是窮舉i,j的斷點 map[n,n]初值應該為0,或者按照題目意思來做。 

當然,如果這條路沒有通的話,還必須特殊處理,比如沒有map[i,k]這條路

  • 上一篇:誰有熊貓燒香的源代碼,給我發壹份
  • 下一篇:公司宣傳海報怎麽制作文字內容-WPS文字如何制作宣傳海報文教程
  • copyright 2024編程學習大全網