期末aaaa數據結構ds圖問題采用什么策略可以不遺漏地走遍的每個_第1頁
期末aaaa數據結構ds圖問題采用什么策略可以不遺漏地走遍的每個_第2頁
期末aaaa數據結構ds圖問題采用什么策略可以不遺漏地走遍的每個_第3頁
期末aaaa數據結構ds圖問題采用什么策略可以不遺漏地走遍的每個_第4頁
期末aaaa數據結構ds圖問題采用什么策略可以不遺漏地走遍的每個_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第6章 §6.4圖的遍[問題]采用什么策略,可以不遺漏地“走遍”圖的每個 [迷宮探索]有一個通道迷宮,通道(假設它都是直的)所有交叉第6章 §6.4.1迷宮探 第6章 §6.4.2深度優(yōu)先搜深度優(yōu)先搜索(DepthFirstSearch,簡稱DFS頂點vi1;所有頂點;轉⑴,直到和vi相鄰接的所有頂點都被為止第6章 §6.4.2深度優(yōu)先搜4E→A→B→C D F→G 4C5DC5D8HG7BA2E1F63bool ]第6章 §6.4.2深度優(yōu)先搜voidDFS(GraphG,intV/*從第V個頂點出發(fā)遞歸地深度優(yōu)先遍歷圖GVertexTypeVisited[V]= 第V個頂點for(W=FirstAdjV(G,W)if(!Visited[W]

W;W=NextAdjV(G,DFS}

DFS(G,W);/*對V的 的鄰接頂點W遞歸調#defineMaxVertexNum100 /*最大頂點數*/typedefcharVertexType;/*頂點類型應由用戶定義*/typedefintEdgeType; /*邊上的權值類型應由用戶定義*/enumGraphType{DG,UG,DN,typedefstructNode/*邊表結點 int /*鄰接點域 該頂點對應的下標structNode*Next/*鏈域,typedefstructVertexNode/* VertexTypeVertex;

/*頂點域 頂點信息/*typedefstruct AdjListAdjlist;//頂點數組(亦成為頭結點向量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開始DFS搜 }voidDFS(ALGraph*G,int EdgeNodevisit(i 頂點v /* 標志w=G->Adjlist[i].FirstEdge/*while{if(!Visited[w-DFS(G,w->AdjV);//從w的 w=w->Next}}總時間復雜度為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);/*對 的鄰接頂點遞歸調用}voidDFS_MG(MGraph{intfor(i=0;i<G.numVertices;Visited[i]=flase;/*初始所有頂點狀態(tài)都是未 過狀態(tài)*/for(i=0;i<G.numVertices;i++)if(!Visited[i])//對 次DFS(G,} 矩陣中的所有元素,因此時間復雜度是O(|V|2)。┇┇?3?410?02?21?2?34

某種DFS次序是:v0→v1v2v3第6章 §6.4.3廣度優(yōu)先搜廣度優(yōu)先搜索(BreadthFirstSearch,簡稱BFS用一個數組用于標志已與否,還需要一個工作隊列CD4H7GCD4H7GBA2F3E861515

E F *

B D

⑶以vi1,vi2,…,vim的次序,以vij(1≦j≦m)依次作為vi⑷繼續(xù)選取圖中未被頂點vk作為起始頂點,轉⑴,直到圖中所有頂第6章圖voidBFS(GraphG

§6.4.3 /*按廣度優(yōu)先遍歷圖G。使用輔助隊列Q 標志數組VisitedQueue*Q;VertexTypeU,V,for(U=0;U<G.numVertices;++U)Visited[U]=QCreatQueueMaxSize/*創(chuàng)建空隊列Qfor(U=0;U<G.numVertices;++Uif(!Visited[U]){Visited[U]=true;

/*若U U

AddQ(Q, /*Uwhile(!IsEmptyQ(Q))VDeleteQ(Q/*隊頭元素出隊并置為Vfor(W=FirstAdjV(G,V);W;W=NextAdjV(G,V,W)if(!Visited[W] Visited[W]=TRUE;VisitFunc(W); W*/AddQ(Q,W);}/*while結束/*結束從U開始的BFS}采用鄰接矩陣作為結構遍歷時,時間復雜度是O(|V|2)。采用鄰接表作為結構遍歷時,時間復雜度為O(|V|+|E|)。。第6章圖生成樹(Spanning

§6.5.1由深度優(yōu)先遍歷DFS算法和廣度優(yōu)先遍歷BFSCCDHGBAFE第6章 §6.5.1生成CBDACBDAHGFE第6章 §6.5.1最小生成8858554W44755664237普里姆(Prim普里姆(Prim)算法⑴若從頂點v0圖不構成環(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 }

以鄰接矩陣 結構 LowCost[0]0;/*Parent[01;/*

for(i=1;i<G->n;i++){點

kFindMin(LowCostG 的點ifk/*如找到{離

LowCost[k]=for(j=1;if/*如果j是V-VT

小生成樹j]Parent[j]= 父結點是 /*結束if需要更新j

14th第6章 §6.5.3Kruskal算自成通分量第6章 §6.5.3Kruskal算尋找“最小生成樹”的Kruskal(克魯斯卡爾)T={(B,L,4(D,L,4第6章圖Kruskal(克魯斯卡爾)voidKruskal(GraphG T空集

§6.5.3KruskalwhileT中收集的邊不到n1&&原圖的邊集E從E中選擇最小代價邊(vw);/*if((v,w)的

/*結束whileifT中收集的邊不到n1)printf(“圖不連通”);}

所有頂點的出度之和的差等于( 2、一個n個頂點的連通無向圖,其邊個數至少為(

1、十字鏈表適用于(

1、n個頂點的連通無向圖,其邊數至少

n-1、下列四種圖的形式中,()是用于無向圖,并且邊表中的邊結點

42條10.一個n個頂點的連通無向圖,其邊的個數至少為()A.n+1 9.在一個無向圖中,所有頂點的度之和等于邊數的()A. B. C. D.

答案:優(yōu)先搜索,得到的結點序列將可能為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)},試畫出該連通圖以及以頂點1為根 到哪 次序以字母表順序為準) 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, /*對 的鄰接頂點遞歸調用}voidDFS_MG(MGraph intintcount=0;//for(i=0;i<G.n;Visited[i]= 過狀態(tài)for(i=0;i<G.n;{ printf(“第%d個連通分量中的頂點為:\n”,count);DFS(G,}}}voidDFS(MGraphG,int intVisited[i]=for(j=0;j<G.n;j++)if(G.Edges[i][j]==

溫馨提示

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

評論

0/150

提交評論