導讀 關于弗洛伊德算法時間復雜度,弗洛伊德算法這個問題很多朋友還不知道,今天小六來為大家解答以上的問題,現(xiàn)在讓我們一起來看看吧!1、通過
關于弗洛伊德算法時間復雜度,弗洛伊德算法這個問題很多朋友還不知道,今天小六來為大家解答以上的問題,現(xiàn)在讓我們一起來看看吧!
1、通過一個圖的權值矩陣求出它的每兩點間的最短路徑矩陣。
2、從圖的帶權鄰接矩陣A=[a(i,j)] n×n開始,遞歸地進行n次更新,即由矩陣D(0)=A,按一個公式,構造出矩陣D(1);又用同樣地公式由D(1)構造出D(2);……;最后又用同樣的公式由D(n-1)構造出矩陣D(n)。
3、矩陣D(n)的i行j列元素便是i號頂點到j號頂點的最短路徑長度,稱D(n)為圖的距離矩陣,同時還可引入一個后繼節(jié)點矩陣path來記錄兩點間的最短路徑。
4、采用的是(松弛技術),對在i和j之間的所有其他點進行一次松弛。
5、所以時間復雜度為O(n^3);其狀態(tài)轉移方程如下: 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,或者按照題目意思來做。
6、當然,如果這條路沒有通的話,還必須特殊處理,比如沒有map[i,k]這條路。
本文分享完畢,希望對大家有所幫助。
標簽:
免責聲明:本文由用戶上傳,如有侵權請聯(lián)系刪除!