




已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
7.2 圖的存儲(chǔ)結(jié)構(gòu),圖的數(shù)組(鄰接矩陣)存儲(chǔ)表示 圖的鄰接表存儲(chǔ)表示 有向圖的十字鏈表存儲(chǔ)表示 無(wú)向圖的鄰接多重表存儲(chǔ)表示,鄰接矩陣是用于描述圖中頂點(diǎn)之間關(guān)系(即弧或邊的權(quán))的矩陣。 鄰接表類似樹的孩子鏈表。即對(duì)圖中的每個(gè)頂點(diǎn)vi建立一個(gè)單鏈表,表中結(jié)點(diǎn)表示依附于該頂點(diǎn)vi的邊或弧。,表結(jié)點(diǎn),表頭結(jié)點(diǎn),V1,V3,V2,V4,例:,3.有向圖的十字鏈表存儲(chǔ)表示,兩種結(jié)點(diǎn)結(jié)構(gòu):,頂點(diǎn)結(jié)點(diǎn),弧結(jié)點(diǎn),0 1 2 3,v3,v1,v4,v2,例:,tailvex,headvex,hlink,tlink,/,4.無(wú)向圖的鄰接多重表存儲(chǔ)表示,邊結(jié)點(diǎn),頂點(diǎn)結(jié)點(diǎn),例:,第7章 圖 7.1 圖的定義和術(shù)語(yǔ) 7.2 圖的存儲(chǔ)結(jié)構(gòu) 7.3 圖的遍歷 7.4 圖的連通性問(wèn)題 7.5 有向無(wú)環(huán)圖及其應(yīng)用 7.6 最短路徑,7.3 圖的遍歷,從圖中某一頂點(diǎn)出發(fā)訪遍圖中其余頂點(diǎn),且使每一個(gè)頂點(diǎn)僅被訪問(wèn)一次。這一過(guò)程就叫做圖的遍歷。 通常有兩條遍歷圖的路徑: 深度優(yōu)先搜索 廣度優(yōu)先搜索,1.深度優(yōu)先搜索(DFS),基本思想: 從圖中某頂點(diǎn)V0出發(fā),訪問(wèn)此頂點(diǎn),然后依次從V0的各個(gè)未被訪問(wèn)的鄰接點(diǎn)出發(fā)深度優(yōu)先搜索遍歷圖,直至圖中所有和V0有路徑相通的頂點(diǎn)都被訪問(wèn)到; 若此時(shí)圖中尚有頂點(diǎn)未被訪問(wèn),則另選圖中一個(gè)未曾被訪問(wèn)的頂點(diǎn)作起始點(diǎn); 重復(fù)上述過(guò)程,直至圖中所有頂點(diǎn)都被訪問(wèn)到為止。,例:從頂點(diǎn)v1出發(fā),DFS下圖。,頂點(diǎn)訪問(wèn)序列為:v1,v2,v4,v8,v5,v3,v6,v7,圖的DFS算法一般描述 int visitedMAXVEX; /訪問(wèn)標(biāo)志數(shù)組 void DFSgraph(Graph G, Visit() /對(duì)圖G作深度優(yōu)先遍歷 for( v=0; vG.vexnum; +v ) visitedv=FALSE; /訪問(wèn)標(biāo)志數(shù)組初始化 for( v=0; vG.vexnum; +v ) if( !visitedv ) DFS(G,v); /對(duì)尚未訪問(wèn)的頂點(diǎn)調(diào)用DFS ,void DFS (Graph G,int v) /從第v個(gè)頂點(diǎn)出發(fā)遞歸地深度優(yōu)先遍歷圖G visitedv=TRUE ; Visit(v); /訪問(wèn)第v個(gè)頂點(diǎn) for(w=FirstAdjVex(G,v); w=0; w=NextAdjVex(G,v,w) if (!visitedw) DFS(G,w); /對(duì)v的尚未訪問(wèn)的鄰接頂點(diǎn)w遞歸調(diào)用DFS ,用鄰接表實(shí)現(xiàn)圖的深度優(yōu)先搜索,v1,v6,v2,v5,v3,v8,v4,v7,v9,v10,分析: 在遍歷圖時(shí),對(duì)圖中每個(gè)頂點(diǎn)至多調(diào)用一次DFS函數(shù),因?yàn)橐坏┠硞€(gè)頂點(diǎn)被標(biāo)志成已被訪問(wèn),就不再?gòu)乃霭l(fā)進(jìn)行搜索。 因此,遍歷圖的過(guò)程實(shí)質(zhì)上是對(duì)每個(gè)頂點(diǎn)查找其鄰接點(diǎn)的過(guò)程。其耗費(fèi)的時(shí)間則取決于所采用的存儲(chǔ)結(jié)構(gòu)。,2.廣度優(yōu)先搜索(BFS),基本思想: 從圖中某個(gè)頂點(diǎn)V0出發(fā),并在訪問(wèn)此頂點(diǎn)后依次訪問(wèn)V0的所有未被訪問(wèn)過(guò)的鄰接點(diǎn),之后按這些頂點(diǎn)被訪問(wèn)的先后次序依次訪問(wèn)它們的鄰接點(diǎn),直至圖中所有和V0有路徑相通的頂點(diǎn)都被訪問(wèn)到; 若此時(shí)圖中尚有頂點(diǎn)未被訪問(wèn),則另選圖中一個(gè)未曾被訪問(wèn)的頂點(diǎn)作起始點(diǎn); 重復(fù)上述過(guò)程,直至圖中所有頂點(diǎn)都被訪問(wèn)到為止。,例:從頂點(diǎn)v1出發(fā),BFS下圖。,頂點(diǎn)訪問(wèn)序列為:v1,v2,v3,v4,v5,v6,v7,v8,用鄰接表實(shí)現(xiàn)圖的廣度優(yōu)先搜索,BFS非遞歸算法,void BFSTraverse(Graph G, Status (*Visit)(int v) /使用輔助隊(duì)列Q和訪問(wèn)標(biāo)志數(shù)組visitedv for (v=0; vG.vexnum; +v) visitedv = FALSE; InitQueue(Q); / 置空的輔助隊(duì)列Q for ( v=0; vG.vexnum; +v ) if ( !visitedv) / v尚未訪問(wèn) visitedv = TRUE; Visit(v); EnQueue(Q, v); / v入隊(duì),while (!QueueEmpty(Q) DeQueue(Q, u); / 隊(duì)頭元素出隊(duì)并置為u for (w=FirstAdjVex(G,u);w=0;w=NextAdjVex(G,u,w)) if ( ! visitedw) /w為u的尚未訪問(wèn)的鄰接頂點(diǎn) visitedw = TRUE; Visit(w); EnQueue(Q, w); /if /while if / BFSTraverse,分析: 每個(gè)頂點(diǎn)至多進(jìn)一次隊(duì)列。遍歷圖的過(guò)程實(shí)質(zhì)上是通過(guò)邊或弧找鄰接點(diǎn)的過(guò)程,因此廣度優(yōu)先搜索遍歷圖的時(shí)間復(fù)雜度和深度優(yōu)先搜索遍歷相同,兩者不同之處僅僅在于對(duì)頂點(diǎn)訪問(wèn)的順序不同。,第7章 圖 7.1 圖的定義和術(shù)語(yǔ) 7.2 圖的存儲(chǔ)結(jié)構(gòu) 7.3 圖的遍歷 7.4 圖的連通性問(wèn)題 7.5 有向無(wú)環(huán)圖及其應(yīng)用 7.6 最短路徑,7.4 圖的連通性問(wèn)題,1)無(wú)向圖的連通分量和生成樹 2)最小生成樹 3)普里姆算法 4)克魯斯卡爾算法,1.無(wú)向圖的連通分量和生成樹 基本概念 連通分量的頂點(diǎn)集:即從該連通分量的某一頂點(diǎn)出發(fā)進(jìn)行搜索所得到的頂點(diǎn)訪問(wèn)序列; 生成樹:某連通分量的極小連通子圖; 生成森林:非連通圖的各個(gè)連通分量的極小連通子圖構(gòu)成的集合。,設(shè)E(G)為連通子圖G中所有邊的集合,則從圖中任一頂點(diǎn)出發(fā)遍歷圖時(shí),必定將E(G)分成兩個(gè)集合T(G)和B(G),其中T(G)是遍歷過(guò)程中歷經(jīng)的邊的集合。顯然,T(G)和圖G中所有頂點(diǎn)一起構(gòu)成連通圖G的極小連通子圖,按照7.1節(jié)的定義,它是連通圖的一棵生成樹,并且稱由深度優(yōu)先搜索得到的為深度優(yōu)先生成樹;由廣度優(yōu)先搜索得到的為廣度優(yōu)先生成樹。,例:求下圖的深度優(yōu)先生成樹和廣度優(yōu)先生成樹。,對(duì)非連通圖,每個(gè)連通分量中的頂點(diǎn)集和遍歷時(shí)走過(guò)的邊一起構(gòu)成若干棵生成樹,這些連通分量的生成樹組成非連通圖的生成森林。 例:,生成非連通圖的深度優(yōu)先生成森林的算法,void DFSForest (Graph G,CSTree /建立以p為根的生成樹 /DFSForest,void DFSTree (Graph G,int v,CSTree /分配孩子結(jié)點(diǎn) *p=GetVex(G,w),NULL,NULL; if(first) /w是v的第一個(gè)未被訪問(wèn)的鄰接頂點(diǎn) Tlchild=p;first=FALSE;/是根的左孩子結(jié)點(diǎn) else /w是v的其它未被訪問(wèn)的鄰接頂點(diǎn) qnextsibling =p;/是上一鄰接頂點(diǎn)的右兄弟結(jié)點(diǎn) q = p; DFSTree(G, w, q); /從第w個(gè)頂點(diǎn)出發(fā)深度優(yōu)先遍歷圖G,建立子生成樹q /if /DFSTree,1.理解并掌握?qǐng)D的深度優(yōu)先搜索和廣度優(yōu)先搜
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 綠色餐飲食堂承包協(xié)議
- 冷庫(kù)緊急情況應(yīng)對(duì)協(xié)議
- 2025至2030年陽(yáng)離子藍(lán)染料項(xiàng)目投資價(jià)值分析報(bào)告
- 2025-2030鍍鋅行業(yè)市場(chǎng)現(xiàn)狀供需分析及重點(diǎn)企業(yè)投資評(píng)估規(guī)劃分析研究報(bào)告
- 商業(yè)連鎖便利店商品進(jìn)銷存系統(tǒng)開發(fā)協(xié)議
- 股權(quán)有償轉(zhuǎn)讓協(xié)議
- 在線音樂(lè)平臺(tái)版權(quán)授權(quán)和內(nèi)容創(chuàng)作服務(wù)合同
- 廣告設(shè)計(jì)與制作發(fā)布合作協(xié)議書
- 網(wǎng)絡(luò)科技行業(yè)用戶信息保護(hù)協(xié)議
- 健康食品進(jìn)銷存管理軟件采購(gòu)合同
- 2025年航空工業(yè)西安飛機(jī)工業(yè)(集團(tuán))有限責(zé)任公司招聘筆試參考題庫(kù)附帶答案詳解
- 2025年春新滬科版物理八年級(jí)下冊(cè)課件 第九章 浮力 第四節(jié) 物體的浮與沉 第1課時(shí) 物體的浮沉條件
- 城市更新專題培訓(xùn)
- 燈謎文化知到智慧樹章節(jié)測(cè)試課后答案2024年秋西安交通大學(xué)
- 中華人民共和國(guó)內(nèi)河交通安全管理?xiàng)l例
- 文化行業(yè)非物質(zhì)文化遺產(chǎn)保護(hù)傳承方案
- 小學(xué)生交友主題班會(huì)課件
- 2024年共青團(tuán)入團(tuán)考試題庫(kù)及答案
- 最優(yōu)控制理論課件
- 2023年北京中醫(yī)藥大學(xué)管理崗招聘筆試真題
- 人教版小學(xué)英語(yǔ)三起PEP常用表達(dá)法(三四年級(jí)共4冊(cè))
評(píng)論
0/150
提交評(píng)論