弗洛伊德算法的基本思想? 和Dijkstra算法一樣,弗洛伊德(Floyd)算法也是一種用于尋找給定的加權圖中頂點間最短路徑的算法該算法名稱以創始人之一、1978年圖靈獎獲得者、斯坦福大學計算機科學系教授羅伯特·弗洛伊德命名,下面我們就來聊聊關于弗洛伊德算法的基本思想?接下來我們就一起去了解一下吧!
和Dijkstra算法一樣,弗洛伊德(Floyd)算法也是一種用于尋找給定的加權圖中頂點間最短路徑的算法。該算法名稱以創始人之一、1978年圖靈獎獲得者、斯坦福大學計算機科學系教授羅伯特·弗洛伊德命名。
基本思想
這裡寫圖片描述
以上圖G4為例,來對弗洛伊德進行算法演示。
圖片描述
初始狀态:S是記錄各個頂點間最短路徑的矩陣。
第1步:初始化S。
矩陣S中頂點a[i][j]的距離為頂點i到頂點j的權值;如果i和j不相鄰,則a[i][j]=∞。實際上,就是将圖的原始矩陣複制到S中。
注:a[i][j]表示矩陣S中頂點i(第i個頂點)到頂點j(第j個頂點)的距離。
第2步:以頂點A(第1個頂點)為中介點,若a[i][j] > a[i][0] a[0][j],則設置a[i][j]=a[i][0] a[0][j]。
以頂點a[1]6,上一步操作之後,a[1][6]=∞;而将A作為中介點時,(B,A)=12,(A,G)=14,因此B和G之間的距離可以更新為26。
同理,依次将頂點B,C,D,E,F,G作為中介點,并更新a[i][j]的大小。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!