無權邊單源最短路徑

2022-05-12 22:46:43 字數 382 閱讀 1592

無權邊單源最短路徑相對來說比較簡單,邊數就是路徑長度。從出發點開始,先收集路徑為0頂點(它本身),然後收錄他的鄰頂點(路徑為1),再依次收錄長度為2,3,4....。整個過程其實就是乙個廣度優先搜尋(bfs),但是需要做些改變,需要乙個陣列d[w]來記錄頂點w到源點s的路徑長度,開始時要將d[w]初始化

為-1,由於d[s]表示s到s的距離,d[s]=0,

d[w]還有乙個作用就是判斷頂點w是否被收集過。用path[w]來記錄w的前乙個結點是什麼,這樣方便列印出路徑。

void unweight(grape g, int i)}}

}void printpath(int s,int j)

printpath(s,path[j]);

cout <<"->"<}

對於無權邊的最短路徑搜尋

摘要 在乙個無權圖中,尋找某個節點到其它所有節點的最短路徑.基本思路 1 首先找到與起始節點相鄰接的所有節點,那麼它們的最短路徑就是1.並且將這些訪問過的節點標誌為已經訪問.容易知道,其餘所有沒有訪問的節點中存在的最短路徑是2.而且這些節點都是第一批訪問的節點的鄰接節點 如果最短路徑為k的節點已經被...

單源最短路徑

include define max 999 define maxverts 10 typedef struct graph void chushi graph g void dij graph int key,int int int main for i 1 i g.numverts i dij ...

單源最短路徑

最優子結構 最短路徑的子路徑也是最短路徑,動態規劃和貪心演算法的乙個重要指標。環路 一條最短路徑不可能包含環路 1 環路權重為負,如果有一條環路權重為負,則不存在最短路徑 2 環路權重為零,如果包含該環路,則將該環路去掉即可 3 環路權重為正,去掉改環路可以得到更短的路徑,因此不可能是最短路徑 最短...