1. 程式人生 > >Floyd演算法求單源最短路(圖,資料結構)

Floyd演算法求單源最短路(圖,資料結構)

  • Floyd演算法思路:計算某點到其餘各點的距離,可先求該點到其中一個點的距離,其他各點類似。假設求i點到j點的距離,跳點為空時,最短距離就是i到j的最短距離,跳點為1時,最短距離為D[i][j] = min{D[i][j],D[i][1]+D[1][j]},跳點為1和2時,最短距離為D[i][j]=min{D[i][j],D[i][2]+D[2][j]},依次類推。這裡不用考慮為什麼沒有比較i->1->2->j這條路線,因為1為跳點時,已經將i從1到其他各點的距離都已經求出了,如果i->1->2這條路線的長度比i->2的路線長度小的話,D[i][2]就是對應的i->1->2這條路線的長度,i->2->j同i->1->2->j相比,2->j距離已定,i->1->2和i->2已經取了較小者,所以另一條一定比選取的距離大,不用再比較了。