版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章 §6.4圖的遍[問(wèn)題]采用什么策略,可以不遺漏地“走遍”圖的每個(gè) [迷宮探索]有一個(gè)通道迷宮,通道(假設(shè)它都是直的)所有交叉第6章 §6.4.1迷宮探 第6章 §6.4.2深度優(yōu)先搜深度優(yōu)先搜索(DepthFirstSearch,簡(jiǎn)稱DFS頂點(diǎn)vi1;所有頂點(diǎn);轉(zhuǎn)⑴,直到和vi相鄰接的所有頂點(diǎn)都被為止第6章 §6.4.2深度優(yōu)先搜4E→A→B→C D F→G 4C5DC5D8HG7BA2E1F63bool ]第6章 §6.4.2深度優(yōu)先搜voidDFS(GraphG,intV/*從第V個(gè)頂點(diǎn)出發(fā)遞歸地深度優(yōu)先遍歷圖GVertexTypeVisited[V]= 第V個(gè)頂點(diǎn)for(W=FirstAdjV(G,W)if(!Visited[W]
W;W=NextAdjV(G,DFS}
DFS(G,W);/*對(duì)V的 的鄰接頂點(diǎn)W遞歸調(diào)#defineMaxVertexNum100 /*最大頂點(diǎn)數(shù)*/typedefcharVertexType;/*頂點(diǎn)類型應(yīng)由用戶定義*/typedefintEdgeType; /*邊上的權(quán)值類型應(yīng)由用戶定義*/enumGraphType{DG,UG,DN,typedefstructNode/*邊表結(jié)點(diǎn) int /*鄰接點(diǎn)域 該頂點(diǎn)對(duì)應(yīng)的下標(biāo)structNode*Next/*鏈域,typedefstructVertexNode/* VertexTypeVertex;
/*頂點(diǎn)域 頂點(diǎn)信息/*typedefstruct AdjListAdjlist;//頂點(diǎn)數(shù)組(亦成為頭結(jié)點(diǎn)向量intnumVerticesnumEdges/*voidDFS_ALG(ALGraph intifor(i=0;i<G->numVertices;i++)Visited[i]=false; for(i=0;i<G->numVertices;i++)if DFS(G,i);//從vi開(kāi)始DFS搜 }voidDFS(ALGraph*G,int EdgeNodevisit(i 頂點(diǎn)v /* 標(biāo)志w=G->Adjlist[i].FirstEdge/*while{if(!Visited[w-DFS(G,w->AdjV);//從w的 w=w->Next}}總時(shí)間復(fù)雜度為O(|V|+|E|)。voidDFS(MGraphG,int{intVisited[i]=visit(i)for(j=0;j<G.numVertexes;j++)if(G.Edges[i][j]==1&&!Visited[j])DFS(G,j);/*對(duì) 的鄰接頂點(diǎn)遞歸調(diào)用}voidDFS_MG(MGraph{intfor(i=0;i<G.numVertices;Visited[i]=flase;/*初始所有頂點(diǎn)狀態(tài)都是未 過(guò)狀態(tài)*/for(i=0;i<G.numVertices;i++)if(!Visited[i])//對(duì) 次DFS(G,} 矩陣中的所有元素,因此時(shí)間復(fù)雜度是O(|V|2)。┇┇?3?410?02?21?2?34
某種DFS次序是:v0→v1v2v3第6章 §6.4.3廣度優(yōu)先搜廣度優(yōu)先搜索(BreadthFirstSearch,簡(jiǎn)稱BFS用一個(gè)數(shù)組用于標(biāo)志已與否,還需要一個(gè)工作隊(duì)列CD4H7GCD4H7GBA2F3E861515
E F *
B D
⑶以vi1,vi2,…,vim的次序,以vij(1≦j≦m)依次作為vi⑷繼續(xù)選取圖中未被頂點(diǎn)vk作為起始頂點(diǎn),轉(zhuǎn)⑴,直到圖中所有頂?shù)?章圖voidBFS(GraphG
§6.4.3 /*按廣度優(yōu)先遍歷圖G。使用輔助隊(duì)列Q 標(biāo)志數(shù)組VisitedQueue*Q;VertexTypeU,V,for(U=0;U<G.numVertices;++U)Visited[U]=QCreatQueueMaxSize/*創(chuàng)建空隊(duì)列Qfor(U=0;U<G.numVertices;++Uif(!Visited[U]){Visited[U]=true;
/*若U U
AddQ(Q, /*Uwhile(!IsEmptyQ(Q))VDeleteQ(Q/*隊(duì)頭元素出隊(duì)并置為Vfor(W=FirstAdjV(G,V);W;W=NextAdjV(G,V,W)if(!Visited[W] Visited[W]=TRUE;VisitFunc(W); W*/AddQ(Q,W);}/*while結(jié)束/*結(jié)束從U開(kāi)始的BFS}采用鄰接矩陣作為結(jié)構(gòu)遍歷時(shí),時(shí)間復(fù)雜度是O(|V|2)。采用鄰接表作為結(jié)構(gòu)遍歷時(shí),時(shí)間復(fù)雜度為O(|V|+|E|)。。第6章圖生成樹(shù)(Spanning
§6.5.1由深度優(yōu)先遍歷DFS算法和廣度優(yōu)先遍歷BFSCCDHGBAFE第6章 §6.5.1生成CBDACBDAHGFE第6章 §6.5.1最小生成8858554W44755664237普里姆(Prim普里姆(Prim)算法⑴若從頂點(diǎn)v0圖不構(gòu)成環(huán),則U=U∪{v},TE=TE∪{(u,v)};t085∞∞∞∞∞∞∞00t0508∞∞4∞∞∞2022t0507∞4053620662666t0507∞2050620682666t0407400506-t0007400506-t0007000506-t0005000006-t0000000006-t0000000000-第6章圖voidPrim(MGraph*G,intParent[]/*0intLowCost[MaxVertexNum];inti,j,fori1iG->n;i++/*初始化LowCost[i]=G-
§6.5.2PrimParent[i0 }
以鄰接矩陣 結(jié)構(gòu) LowCost[0]0;/*Parent[01;/*
for(i=1;i<G->n;i++){點(diǎn)
kFindMin(LowCostG 的點(diǎn)ifk/*如找到{離
LowCost[k]=for(j=1;if/*如果j是V-VT
小生成樹(shù)j]Parent[j]= 父結(jié)點(diǎn)是 /*結(jié)束if需要更新j
14th第6章 §6.5.3Kruskal算自成通分量第6章 §6.5.3Kruskal算尋找“最小生成樹(shù)”的Kruskal(克魯斯卡爾)T={(B,L,4(D,L,4第6章圖Kruskal(克魯斯卡爾)voidKruskal(GraphG T空集
§6.5.3KruskalwhileT中收集的邊不到n1&&原圖的邊集E從E中選擇最小代價(jià)邊(vw);/*if((v,w)的
/*結(jié)束whileifT中收集的邊不到n1)printf(“圖不連通”);}
所有頂點(diǎn)的出度之和的差等于( 2、一個(gè)n個(gè)頂點(diǎn)的連通無(wú)向圖,其邊個(gè)數(shù)至少為(
1、十字鏈表適用于(
1、n個(gè)頂點(diǎn)的連通無(wú)向圖,其邊數(shù)至少
n-1、下列四種圖的形式中,()是用于無(wú)向圖,并且邊表中的邊結(jié)點(diǎn)
42條10.一個(gè)n個(gè)頂點(diǎn)的連通無(wú)向圖,其邊的個(gè)數(shù)至少為()A.n+1 9.在一個(gè)無(wú)向圖中,所有頂點(diǎn)的度之和等于邊數(shù)的()A. B. C. D.
答案:優(yōu)先搜索,得到的結(jié)點(diǎn)序列將可能為1->2->5->4->3->6或1->3->6->5->4->2 系集合為{(1,2),(1,3),(1,8),(2,4),(3,9),(3,(5,7),(6,7),(7,8),(8,9)},試畫(huà)出該連通圖以及以頂點(diǎn)1為根 到哪 次序以字母表順序?yàn)闇?zhǔn)) A:a,b,d,c,e,g,f,h,B:a,b,c,d,e,g,i,f,C:e,f,I,h,g,c,d,b,D:(b,d),(c,e),(d,i),(f,g),(g,h),(g,i),(a,c),(a,算法思想 voidDFS(MGraphG,int intVisited[i]=for(j=0;j<G.n;j++)if(G.Edges[i][j]==1&&!Visited[j])DFS(G, /*對(duì) 的鄰接頂點(diǎn)遞歸調(diào)用}voidDFS_MG(MGraph intintcount=0;//for(i=0;i<G.n;Visited[i]= 過(guò)狀態(tài)for(i=0;i<G.n;{ printf(“第%d個(gè)連通分量中的頂點(diǎn)為:\n”,count);DFS(G,}}}voidDFS(MGraphG,int intVisited[i]=for(j=0;j<G.n;j++)if(G.Edges[i][j]==
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024秋新滬科版物理八年級(jí)上冊(cè)教學(xué)課件 第三章 光的世界 第一節(jié)第1課時(shí) 光的直線傳播
- 2023年高壓成套電器項(xiàng)目融資計(jì)劃書(shū)
- 垃圾分類模考試題(附參考答案)
- 養(yǎng)老院老人生活照顧人員培訓(xùn)制度
- 養(yǎng)老院老人健康監(jiān)測(cè)人員職業(yè)道德制度
- 2024年版房地產(chǎn)買賣補(bǔ)充協(xié)議:特定條款修訂版B版
- 承包包工鐵皮房合同(2篇)
- 2024年度五金產(chǎn)品線上線下全渠道營(yíng)銷合同3篇
- 《肺基本病變》課件
- 2024年度養(yǎng)老院食堂運(yùn)營(yíng)管理承包合同3篇
- 【《溫州森馬鞋業(yè)財(cái)務(wù)風(fēng)險(xiǎn)分析案例報(bào)告(論文)》6000字】
- 煙花爆竹行業(yè)事故應(yīng)急救援處置培訓(xùn)
- 論群體傳播時(shí)代個(gè)人情緒的社會(huì)化傳播
- 化工廠保溫施工方案范本
- 人教版數(shù)學(xué)三年級(jí)上冊(cè)10 總復(fù)習(xí) 數(shù)與代數(shù)(2)教案含反思(表格式)
- 《駝鹿消防員的一天》課件
- 大學(xué)生暑期社會(huì)實(shí)踐證明模板(20篇)
- 2023-2024學(xué)年北京市石景山區(qū)石景山實(shí)驗(yàn)小學(xué)六年級(jí)數(shù)學(xué)第一學(xué)期期末教學(xué)質(zhì)量檢測(cè)試題含答案
- 民事起訴狀(-針對(duì)培訓(xùn)類退費(fèi))-模板
- canopen應(yīng)用指南man can301ig中文
- 260噸汽車吊地基承載力驗(yàn)算
評(píng)論
0/150
提交評(píng)論