弗洛伊德算法

1、求無向圖中兩節點的最短距離算法

  

 1.要實現Floyd算法,首先須要構建帶權圖的鄰接矩陣:spa

在鄰接矩陣當中,每個數字表明着從某個頂點到另外一個頂點的直接距離,這個距離是沒有涉及到任何中繼頂點的3d

 

 2.此時假定只容許以頂點A做爲中繼頂點,那麼各頂點之間的距離會變成什麼樣子呢?blog

  B和C之間的距離本來是無窮大,此時以A爲中繼,距離縮短爲AB距離+AC距離=5+2=7。更新對應矩陣元素(橙色區域表明頂點A到其餘頂點的臨時距離):get

 

 

 3.接下來以頂點A、B做爲中繼頂點,那麼各頂點之間的距離會變成什麼樣子呢?class

  A和D之間的距離本來是無窮大,此時以B爲中繼,距離縮短爲AB距離+BD距離=5+1=6。im

  A和E之間的距離本來是無窮大,此時以B爲中繼,距離縮短爲AB距離+BE距離=5+6=11。qq

  更新對應矩陣元素(橙色區域表明頂點B到其餘頂點的臨時距離):img

 

 

 4.接下來以頂點A、B、C做爲中繼頂點,那麼各頂點之間的距離會變成什麼樣子呢?di

  A和F之間的距離本來是無窮大,此時以C爲中繼,距離縮短爲AC距離+CF距離=2+8=10。

  更新對應矩陣元素(橙色區域表明頂點C到其餘頂點的臨時距離):

 

 

 以此類推,咱們不斷引入新的中繼頂點,不斷刷新矩陣中的臨時距離。最終,當全部頂點均可以做爲中繼頂點時,咱們的距離矩陣更新以下:

此時,矩陣中每個元素,都對應着某頂點到另外一個頂點的最短距離

相關文章
相關標籤/搜索