下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、5.3 圖的遍歷 和樹的遍歷類似,在此,我們希望從圖中某一頂點出發(fā)訪遍圖中其余頂點,且使每一個頂點僅被訪問一次。這一過程就叫做圖的遍歷(TraversingGraph)。圖的遍歷算法是求解圖的連通性問題、拓撲排序和求關(guān)鍵路徑等算法的基礎(chǔ)。然而,圖的遍歷要比樹的遍歷復(fù)雜得多。因為圖的任一頂點都可能和其余的頂點相鄰接。所以在訪問了某個頂點之后,可能沿著某條路徑搜索之后,又回到該頂點上。例如圖7.1(b)中的G2,由于圖中存在回路,因此在訪問了v1,v2,v3,v4之后,沿著邊(v4 , v1)又可訪問到v1。為了避免同一頂點被訪問多次,在遍歷圖的過程中,必須記下每個已訪問過的頂點。為此,我們可以設(shè)
2、一個輔助數(shù)組visited0.n-1,它的初始值置為“假”或者零,一旦訪問了頂點vi,便置visitedi為“真”或者為被訪問時的次序號。 通常有兩條遍歷圖的路徑:深度優(yōu)先搜索和廣度優(yōu)先搜索。它們對無向圖和有向圖都適用。5.3.1 深度優(yōu)先搜索 深度優(yōu)先搜索(Depth-First Search)遍歷類似于樹的先根遍歷,是樹的先根遍歷的推廣。其基本思想如下:假定以圖中某個頂點vi為出發(fā)點,首先訪問出發(fā)點,然后選擇一個vi的未訪問過的鄰接點vj,以vj為新的出發(fā)點繼續(xù)進行深度優(yōu)先搜索,直至圖中所有頂點都被訪問過。顯然,這是一個遞歸的搜索過程。 現(xiàn)以圖5-3-1
3、中G為例說明深度優(yōu)先搜索過程。假定v0是出發(fā)點,首先訪問v0。因v0有兩個鄰接點v1、v2均末被訪問過,可以選擇v1作為新的出發(fā)點,訪問v1之后,再找v1的末訪問過的鄰接點。同v1鄰接的有v0、v3和v4,其中v0已被訪問過,而v3、v4尚未被訪問過,可以選擇v3作為新的出發(fā)點。重復(fù)上述搜索過程,繼續(xù)依次訪問v7、v4 。訪問v4之后,由于與v4相鄰的頂點均已被訪問過,搜索退回到v7。由于v7、v3和v1都是沒有末被訪問的鄰接點,所以搜索過程連續(xù)地從v7退回到v3,再退回v1,最后退回到v0。這時再選擇v0的末被訪問過的鄰接點v2,繼續(xù)往下搜索,依次訪問v2、v5和v6,止此圖中全部頂點均被訪
4、問過。遍歷過程見圖5-3-1(b),得到的頂點的訪問序列為:v0 v1 v3 v7 v4 v2 v5 v7。(a)無向圖G (b) G的深度優(yōu)先搜索過程圖5-3-1 深度優(yōu)先搜索遍歷過程示例因為深度優(yōu)先搜索遍歷是遞歸定義的,故容易寫出其遞歸算法。下面的算法5.3是以鄰接矩陣作為圖的存儲結(jié)構(gòu)下的深度優(yōu)先搜索遍歷算法;算法5.4是以鄰接表作為圖的存儲結(jié)構(gòu)下的深度優(yōu)先搜索遍歷算法。算法5.3int visitedNAX_VEX=0;void Dfs_m( Mgraph *G,int i)/* 從第i個頂點出發(fā)深度優(yōu)先遍歷圖G,G以鄰接矩陣表示*/printf("%3c",G-&g
5、t;vexsi);visitedi=1;for (j=0;j<VEX_NUM;j+)if(G->arcsij=1)&& (!visitedj)Dfs_m(G,j); /*Dfs_m */算法5.4int visitedVEX_NUM=0;void Dfs_L(ALgraph G,int i)/* 從第i個頂點出發(fā)深度優(yōu)先遍歷圖G,G以鄰接表表示 */printf("%3c",Gi.data);visitedi=1;p=Gi.firstarc;while (p!=NULL) if(visitedp->adjvex=0)Dfs_L(G,p-&g
6、t;adjvex);p=p->nextarc; /*dfs_L*/分析上述算法得知,遍歷圖的過程實質(zhì)上是對每個頂點搜索其鄰接點的過程。其耗費的時間取決于所采用的存儲結(jié)構(gòu)。假設(shè)圖有>n個頂點,那么,當(dāng)用鄰接矩陣表示圖時,搜索一個頂點的所有鄰接點需花費的時間為>O(n),則從>n個頂點出發(fā)搜索的時間應(yīng)為>O(n2),所以算法>5.1的時間復(fù)雜度是>O(n2);如果使用鄰接表來表示圖時,需花費時間為>O(n+e), 其中>e為無向圖中邊的數(shù)目或有向圖中弧的數(shù)目。算法>5.4的時間復(fù)雜度為>O(n+e)。 5.3.2 廣度優(yōu)先搜索連通圖
7、的廣度優(yōu)先搜索(Breadth_FirstSearch)遍歷圖類似于樹的按層次遍歷。其基本思想是:首先訪問圖中某指定的起始點Vi并將其標(biāo)記為已訪問過,然后由Vi出發(fā)訪問與它相鄰接的所有頂點Vj、 Vk,并均標(biāo)記為已訪問過,然后再按照Vj、Vk的次序,訪問每一個頂點的所有未被訪問過的鄰接頂點,并均標(biāo)記為已訪問過,下一步再從這些頂點出發(fā)訪問與它們相鄰接的尚未被訪問的頂點,如此做下去,直到所有的頂點均被訪問過為止。 在廣度優(yōu)先搜索中,若對頂點V1的訪問先于頂點V2的訪問,則對V1鄰接頂點的訪問也先于V2鄰接頂點的訪問。就是說廣度優(yōu)先搜索中對鄰接點的尋找具
8、有“先進先出”的特性。因此,為了保證訪問頂點的這種先后關(guān)系,需借助一個隊列暫存那些剛訪問過的頂點。 例如,下面以圖5-3-1種G為例說明廣度優(yōu)先搜索的過程。假設(shè)從起點v0出發(fā),那么首先訪問vo和行動兩個未訪問的鄰接點v1和v2;然后依次訪問v1的鄰接點v3和v4以及v2的鄰接點v5和v6;最后訪問v3的未曾訪問的鄰接點v7。此圖中所有頂點均已被訪問過,由此完成了圖的遍歷。遍歷過程見圖5-3-2,得到的頂點訪問序列為: v0v1v2v3v4v5v6v7在廣度優(yōu)先搜索中,若頂點v在頂點u之前訪問,則v的鄰接點也將在u的鄰接點之前訪問。由此,可采用對列qu來暫存那些剛訪問過并且可能還有未訪問的鄰接點的頂點。v0V1V3V7V4V2V5V6 圖532 廣度優(yōu)先搜索遍歷過程 算法5.5 int visitedVEX_NUM=0; void Bfs(Mgraph G,int k) int qu20,f=0,r=0; printf(“%3c”,G.vexsk); visitedk=1; r+;qur=k; while (r!=f) f+;i=quf;for(j=p;j<VEX_NUM;j+) if(G->arcsij=1&&(!visitecj) printf(“%3c”,G.vexsj); visitedj=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 足療店員工合同協(xié)議書范本
- 精準(zhǔn)權(quán)威治療協(xié)議服務(wù)合同
- 智能軟件服務(wù)升級新約
- 家庭電器安全保證
- 物資采購合同范例
- 抗磨損性能灰砂磚采購
- 上海房屋交易合同規(guī)范版
- 循環(huán)借款合同的金融科技應(yīng)用
- 學(xué)生筆記本采購合同范本
- 易用的競爭性談判招標(biāo)文件范本
- AutoCAD計算機繪圖全套教程
- 四柱型液壓機的液壓系統(tǒng)設(shè)計畢業(yè)論文
- 機電控制及可編程序控制器技術(shù)課程設(shè)計1
- 《變動成本法在企業(yè)的應(yīng)用案例分析(論文)》
- 血液透析患者營養(yǎng)評估方法
- YY/T 0698.2-2022最終滅菌醫(yī)療器械包裝材料第2部分:滅菌包裹材料要求和試驗方法
- YY/T 0698.9-2009最終滅菌醫(yī)療器械包裝材料第9部分:可密封組合袋、卷材和蓋材生產(chǎn)用無涂膠聚烯烴非織造布材料要求和試驗方法
- JJF 1619-2017互感器二次壓降及負荷測試儀校準(zhǔn)規(guī)范
- GB/T 9386-2008計算機軟件測試文檔編制規(guī)范
- GB/T 213-2003煤的發(fā)熱量測定方法
- 2022年5月14日起實施的法醫(yī)類司法鑒定執(zhí)業(yè)分類規(guī)定
評論
0/150
提交評論