floyd演算法能不能保證有最優解

2022-06-03 07:30:12 字數 2802 閱讀 8939

1樓:一起愛學習

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

演算法過程:

把圖用鄰接距陣g表示出來,如果從vi到vj有路可達,則g[i,j]=d,d表示該路的長度;否則g[i,j]=空值。

定義一個距陣d用來記錄所插入點的資訊,d[i,j]表示從vi到vj需要經過的點,初始化d[i,j]=j。

把各個頂點插入圖中,比較插點後的距離與原來的距離,g[i,j] = min( g[i,j], g[i,k]+g[k,j] ),如果g[i,j]的值變小,則d[i,j]=k。

在g中包含有兩點之間最短道路的資訊,而在d中則包含了最短通路徑的資訊。

比如,要尋找從v5到v1的路徑。根據d,假如d(5,1)=3則說明從v5到v1經過v3,路徑為,如果d(5,3)=3,說明v5與v3直接相連,如果d(3,1)=1,說明v3與v1直接相連。

floyd演算法(floyd-warshall algorithm)又稱為弗洛伊德演算法、插點法,是解決給定的加權圖中頂點間的最短路徑的一種演算法,可以正確處理有向圖或負權的最短路徑問題,同時也被用於計算有向圖的傳遞閉包。該演算法名稱以創始人之一、2023年圖靈獎獲得者、斯坦福大學電腦科學系教授羅伯特·弗洛伊德命名。

核心思路

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

從圖的帶權鄰接矩陣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,j]表示i到j的最短距離,k是窮舉,map[n,n]初值應該為0,或者按照題目意思來做。

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

2樓:電

第問已經找反例證明:k巢狀內層已知條件夠充第二問沒搞明白矩陣a面存啊邊資訊 啊邊資訊應該稱相等啊(比a[2][3]a[3][2]應該相等矩陣a等)

建議 這樣的提問是 沒有意義的

可以自己查閱下資料

全源最短路徑的floyd演算法為什麼不能有負環

3樓:匿名使用者

因為等你一圈轉下來,權值變得更少了,再轉一圈繼續減少,自然不能有負環了

你會不會matlab中的floyd演算法?,能不能編寫一個程式?那個具體怎麼呼叫那個已經編寫好的程式呢?

4樓:匿名使用者

這是一個我寫的floyd演算法的程式。w是圖的鄰接矩陣需要事先輸入並儲存在工作空間中,呼叫方法為:[d,path]=floyd(w)。

給出的結果d為路徑的鄰接矩陣,path為路徑所經過的端點順序。

程式為:

function [d,path]=floyd(w)%d r a

n=size(w,1);

%設初值

d=w;

path=zeros(n);

for i=1:n

for j=1:n

if d(i,j)~=inf

path(i,j)=j;

endend

end%迭代,更新d path

for k=1:n

for i=1:n

for j=1:n

if d(i,k)+d(k,j)

path(i,j)=path(i,k);

endend

endend

floyd演算法的三重迴圈問題 5

5樓:雙魚毛蟲子

三層迴圈的意思。第一層就是加入k的中間點,第二層和第三層迴圈是求每一對頂點在加入新的點後是否存在距離更近的路徑,所以k只能放在最外層。也就是說你再加入新的點後,再進行判斷每對頂點是否距離有變,就相當於一個前提條件。

6樓:匿名使用者

佛洛依德最短距離,演算法就是這麼計算的,如果不是在最外層,這就沒邏輯了,求不出最短距離了。你需要仔細思考一下。

7樓:匿名使用者

floyd的根本思想是動態規劃,最外層列舉的k是表示新加入一個可以作為中間點的頂點

8樓:匿名使用者

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,j]表示i到j的最短距離,k是窮舉i,j的斷點,map[n,n]初值應該為0,或者按照題目意思來做。

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

詳情請見

按揭房貸款能不能辦,有貸款能不能再辦按揭

有貸款並且還款滿半年還款良好的情況下是可以再辦理按揭貸款的 辦理銀行按揭需要準備的條件 1 有合法的居留身份 申請政策性個人住房貸款的,應有當地常住房口 2 有穩定的職業和收入 3 有按期償還貸款本息的能力 4 有貸款行認可的資產進行抵押或質押,或 和 有符合規定條件的保證人為其擔保。5 有購買住房...

有胃病的人能不能喝苦惰,有胃病的人,能不能喝苦丁茶?

苦丁茶性寒涼,腸胃不好的人最好少喝。此類人群常常存在不同程度的脾胃虛寒,腹部受涼或吃了涼性食物時,容易肚子疼或拉肚子,喝苦丁茶則會加重這些症狀。有胃病建議喝稀健丁香茶,可以調理胃部的不適,長期喝可養胃。如果你的胃是涼性的就最好不要喝,否則就可以適當喝點。如果是胃炎的話苦丁茶就有 的效果,紅茶養胃。苦...

請問當兵去有紋身能不能過,現在有紋身能不能當兵

紋身不超過尺寸的,可以。著短袖時,外露部位不超過2釐米 不能,當兵的不能紋身 不能的吧 我記得 傷疤都有限制的 規定和實際有差距,懂了嗎 手臂上有紋身可以去當兵嗎?不可以。徵兵辦關於對入伍青年儀容的要求 有染髮 紋眉 紋身 刀疤 打鼻孔等青年將不能入伍。因為軍隊是特殊機構,有嚴格的要求,尤其是在軍容...