數(shù)據(jù)結(jié)構(gòu) Prim及單源最短路徑_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu) Prim及單源最短路徑_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu) Prim及單源最短路徑_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、用普里姆算法從頂點(diǎn)U出發(fā)構(gòu)造網(wǎng)G的最小生成樹(shù)為實(shí)現(xiàn)此算法需附設(shè)一個(gè)輔助數(shù)組closedge,用以記錄從U到V-U具有最小代價(jià)的邊。 對(duì)每個(gè)頂點(diǎn)viEV-U ,在輔助數(shù)組中存在一個(gè)相應(yīng)分量closedgei-l,它包括兩個(gè)域:lowcost 和 adj vex olowcost域:存儲(chǔ)最小代價(jià)的邊上的權(quán)值,即:closedgei-l.lowcost=nihi(cost(u, vi )|uEUcost(u,vi)表示邊(u,vi)上的權(quán)值。若某頂點(diǎn)加入到U中,則此時(shí)置lowcost域?yàn)?,表示該 頂點(diǎn)并入U(xiǎn)中。adjvex域:存儲(chǔ)依附于該邊在U中的頂點(diǎn)。顯然,每加入一個(gè)頂點(diǎn)到U中,closedge

2、數(shù)組 就會(huì)發(fā)生相應(yīng)的變化。用普里姆算法從頂點(diǎn)U出發(fā)構(gòu)造網(wǎng)G的最小生成樹(shù)stmct Closedge( vertextype adjvex; U 集中的頂點(diǎn)int lowcost; / 邊的權(quán)值 closedgeMAX.VERTEX.NUM;void MiniSpanTiee_P(mgraph Q vertextype u)( int k = Locate(&G;u );若圖G中存在頂點(diǎn)u,則返回u在圖中的存儲(chǔ)位置for (iiitj=O; jG.vexiium; +j)輔助數(shù)組初始化】f(j!=k) closedgej.adjvex=u;closedge!j.lowcost=GarcskIj;

3、closedgek.lowcost = 0;/ 初始,U=ufor (mt i=l; iHG.vexskH, ”;/輸出生成樹(shù)上一條邊closedgefk .lowcost=0; 第 k 頂點(diǎn)并入 U 集for (j=0; jG.vexiium; +j)修改其它頂點(diǎn)的最小邊if (G.arcsk j closedge j . lowcost)( clo sedge j . adj vex= Gvexsk;closedgej.lowcost=G.aicskj;)/if) /for /MiniSpaiiTree_P查找最小未被訪問(wèn)的邊mt niuumum(mgraph G, Closedge cl

4、osedge n) ( int k;fbr(int i=0; iG. vexiium;i-H-)if(closedgei.lowcost!=0) k=i; break; fbr( ;iG.vexnum:i+)if(closedgei. lowcost! =0&closedgei.lowcostclosedgek.lowcost) k=i;return k;uit distn; /disti存放頂點(diǎn)i的當(dāng)前最短路徑長(zhǎng)度charpathnn+1 ; /pathi+存放頂點(diǎn)i的當(dāng)前最短路徑。bool flagn; 表示當(dāng)前最短路徑是否己經(jīng)被選擇void ShortestPath.DJS(mgraph

5、 g, mt vO)( mtchar tail2;fbr (i =0; ig.vexiium; i+) ( flagi=false;disti=g.aicsOi;pathi0=v0+H;pathil=g.vexsi;pathW;fbr(mt t=l; tg.vexiium; t+)/求vO到其余n-1個(gè)頂點(diǎn)的最短路徑 ( niiii=MAX;fbr (1=0; ig.vexiium; i+)if (disti inm&flagi=false) k = i: nuii=disti; flagk=tine;fbr (i =0; ig.vexiium; i+)if (distk+g.arcskidi

6、sti) disti=distk+ g.arcski; strcpy(pathi,pathk);tailO=i+a;taill=,(); sticat(pathijail); )for (i =0; ig.vexiium; i+) coutpathiH Mdistiendl;拓?fù)渑判颍翰僮鞣椒ǎ?1)選取一個(gè)沒(méi)有前驅(qū)的頂點(diǎn),輸出它,并從AOV中網(wǎng)中刪除此頂點(diǎn)以及所有以它 為尾的孤。(2)重復(fù)(1)直至輸出所有結(jié)點(diǎn)統(tǒng)計(jì)有向圖鄰接表各頂點(diǎn)的入度void uiit_iiidegree(ALGraph G)fbr(i=O:iGvexiium;i+)mdegreei=O;fbr(i=O; iadjvex

7、+; p=p-nextarc;/fbr /imciiidegree取入度為零的點(diǎn)vmt getzerodegree (ALGrapg G) ( fbr(i=O;iadj vex;elsereturn-!;5 . NextAdjmt NextAdj (ALGrapg G .int v int w)(p=G vertices v .firs taic;while(p & p-adjvex! =w)p=p-nextaic;f(p)return p-nextarc-adjvex;elsereturn-!;6.算法實(shí)現(xiàn)m=0:Hut_mdegree(G);vr=getzerodegree(G)wliile(v!=-l)(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論