該文章為清華大學(xué)數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)MOOC課程讀書筆記.
1. 一些基本術(shù)語(yǔ)
1.1 鄰接與關(guān)聯(lián)
鄰接(adjacency):通過(guò)邊相連接的兩個(gè)節(jié)點(diǎn)之間的關(guān)系
關(guān)聯(lián)(incidence):節(jié)點(diǎn)與其所屬的邊之間的關(guān)系
1.2 有向與無(wú)向圖
邊是否有方向
1.3 路徑(path)環(huán)路(cycle)
- 有向無(wú)環(huán)圖(Directed Acyclic Graph)
- 歐拉路徑(Eulerian Path):一筆畫問(wèn)題遵堵,能夠經(jīng)過(guò)所有邊一次且僅一次的環(huán)路椎咧。
- 漢密爾頓環(huán)路(Hamiltonian Tour):能夠經(jīng)過(guò)所有節(jié)點(diǎn)一次且僅一次的環(huán)路豪治。
2. 計(jì)算機(jī)中圖的表示:鄰接矩陣(adjacency matrix)
在無(wú)向圖中营曼,存在冗余景图,因?yàn)槊織l邊被表示了兩次
3. BFS
3.1 對(duì)于圖的遍歷
通過(guò)某種策略對(duì)圖進(jìn)行遍歷宽气,可以將圖轉(zhuǎn)化為樹(shù)結(jié)構(gòu)改化,因此完成完全非線性結(jié)構(gòu)對(duì)半線性結(jié)構(gòu)的轉(zhuǎn)換,簡(jiǎn)化了帶求解的問(wèn)題哮伟。
3.2 策略
圖的BFS實(shí)際上就是樹(shù)的level-order遍歷的推廣干花,樹(shù)的level-order遍歷就是圖的BFS的特例。
3.3 實(shí)現(xiàn)
利用Queue楞黄,節(jié)點(diǎn)出隊(duì)列后進(jìn)行訪問(wèn)池凄,并且搜索鄰接點(diǎn)。
搜索到的鄰接點(diǎn)可能是之前搜索過(guò)的或者訪問(wèn)過(guò)的鬼廓,不需要再次訪問(wèn)肿仑。
如果圖中包含多個(gè)連通域(connected component),需要遍歷所有點(diǎn)碎税,查看狀態(tài)柏副,對(duì)沒(méi)有發(fā)現(xiàn)過(guò)的節(jié)點(diǎn)啟動(dòng)一次BFS
3.4 復(fù)雜度
O(n + e) , 因?yàn)樾枰L問(wèn)每個(gè)節(jié)點(diǎn),每條邊1次
3.5 BFS特性:最短路徑
不用解釋了吧
4. DFS
類似于樹(shù)遍歷中的pre-order遍歷
4.1 實(shí)現(xiàn)
從起點(diǎn)開(kāi)始蚣录,對(duì)所有鄰接點(diǎn)深度優(yōu)先遍歷
未發(fā)現(xiàn)的鄰接節(jié)點(diǎn)才進(jìn)行訪問(wèn);已發(fā)現(xiàn)的鄰接節(jié)點(diǎn)進(jìn)行回溯眷篇;對(duì)于已訪問(wèn)的鄰接節(jié)點(diǎn)萎河,有直接親子關(guān)系的為forward邊,否則為cross邊。
4.2 性質(zhì)
DFS遍歷生成BFS樹(shù)(森林)虐杯,可包含全圖信息
DFS中對(duì)各節(jié)點(diǎn)生成的時(shí)間標(biāo)簽玛歌,可以在O(1)時(shí)間內(nèi)提供很有用的信息,比如說(shuō)是否存在直系親子關(guān)系擎椰。
5. 圖遍歷算法的應(yīng)用
5.1 拓?fù)渑判?/h4>
(1) 定義
拓?fù)渑判虻慕Y(jié)構(gòu)是一個(gè)序列支子,該序列中的點(diǎn)不會(huì)通過(guò)圖中的邊指回序列中的前驅(qū)點(diǎn)。
拓?fù)渑判?/div>
(2) 零入度算法
順序算法:逐層(利用stack达舒,queue都行)遍歷入度為0的節(jié)點(diǎn)值朋,將遍歷的節(jié)點(diǎn)放入queue中,遍歷節(jié)點(diǎn)的序列則為拓?fù)湫蛄小?/p>
基于"BFS"
逆序算法:利用DFS得到DFS樹(shù)巩搏,通過(guò)節(jié)點(diǎn)被visited的順序昨登,將其壓到棧中,最后出棧節(jié)點(diǎn)的順序即為拓?fù)湫蛄小?/p>
原因:DFS中visited的節(jié)點(diǎn)順序必然是DFS樹(shù)由下而上的贯底,這在拓?fù)湟笾袑儆谝蕾囮P(guān)系靠后的節(jié)點(diǎn)丰辣,因此也是在序列中靠后的節(jié)點(diǎn)。
基于DFS
最后編輯于 :?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者- 文/潘曉璐 我一進(jìn)店門臼闻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鸿吆,“玉大人,你說(shuō)我怎么就攤上這事述呐〕痛荆” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵乓搬,是天一觀的道長(zhǎng)思犁。 經(jīng)常有香客問(wèn)我,道長(zhǎng)进肯,這世上最難降的妖魔是什么激蹲? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮江掩,結(jié)果婚禮上学辱,老公的妹妹穿的比我還像新娘乘瓤。我一直安慰自己,他們只是感情好策泣,可當(dāng)我...
- 文/花漫 我一把揭開(kāi)白布衙傀。 她就那樣靜靜地躺著,像睡著了一般萨咕。 火紅的嫁衣襯著肌膚如雪统抬。 梳的紋絲不亂的頭發(fā)上,一...
- 那天危队,我揣著相機(jī)與錄音聪建,去河邊找鬼。 笑死交掏,一個(gè)胖子當(dāng)著我的面吹牛妆偏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播盅弛,決...
- 文/蒼蘭香墨 我猛地睜開(kāi)眼钱骂,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了挪鹏?” 一聲冷哼從身側(cè)響起见秽,我...
- 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎讨盒,沒(méi)想到半個(gè)月后解取,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡返顺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年禀苦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遂鹊。...
- 正文 年R本政府宣布舟陆,位于F島的核電站误澳,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏秦躯。R本人自食惡果不足惜忆谓,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望踱承。 院中可真熱鬧陪毡,春花似錦米母、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)妙色。三九已至桅滋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間身辨,已是汗流浹背丐谋。 一陣腳步聲響...
- 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像定庵,于是被迫代替她去往敵國(guó)和親吏饿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 本文介紹圖的幾種基本操作:BFS,DFS畴博,求有向圖連通分量的Tarjan算法以及拓?fù)渑判颉?圖的表示 一張圖是由若...
- 更新中笨忌。。俱病。 第二章 2.2.2 交通規(guī)則 幾種常見(jiàn)的漸近運(yùn)行時(shí)間實(shí)例 2.2.4 三種重要情況 這里有一個(gè) el...
- 因?yàn)橹熬蛷?fù)習(xí)完數(shù)據(jù)結(jié)構(gòu)了官疲,所以為了保持記憶,整理了一份復(fù)習(xí)綱要亮隙,復(fù)習(xí)的時(shí)候可以看著綱要想具體內(nèi)容途凫。 樹(shù) 樹(shù)的基本...
- 英特爾的CPU,已經(jīng)成為一種榮耀咱揍,商家知道把這個(gè)標(biāo)簽貼在電腦上颖榜,就能夠增加電腦的價(jià)值,用戶知道這個(gè)標(biāo)志意味著穩(wěn)定和...
拓?fù)渑判虻慕Y(jié)構(gòu)是一個(gè)序列支子,該序列中的點(diǎn)不會(huì)通過(guò)圖中的邊指回序列中的前驅(qū)點(diǎn)。
(2) 零入度算法
順序算法:逐層(利用stack达舒,queue都行)遍歷入度為0的節(jié)點(diǎn)值朋,將遍歷的節(jié)點(diǎn)放入queue中,遍歷節(jié)點(diǎn)的序列則為拓?fù)湫蛄小?/p>
逆序算法:利用DFS得到DFS樹(shù)巩搏,通過(guò)節(jié)點(diǎn)被visited的順序昨登,將其壓到棧中,最后出棧節(jié)點(diǎn)的順序即為拓?fù)湫蛄小?/p>
原因:DFS中visited的節(jié)點(diǎn)順序必然是DFS樹(shù)由下而上的贯底,這在拓?fù)湟笾袑儆谝蕾囮P(guān)系靠后的節(jié)點(diǎn)丰辣,因此也是在序列中靠后的節(jié)點(diǎn)。
- 文/潘曉璐 我一進(jìn)店門臼闻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鸿吆,“玉大人,你說(shuō)我怎么就攤上這事述呐〕痛荆” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵乓搬,是天一觀的道長(zhǎng)思犁。 經(jīng)常有香客問(wèn)我,道長(zhǎng)进肯,這世上最難降的妖魔是什么激蹲? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮江掩,結(jié)果婚禮上学辱,老公的妹妹穿的比我還像新娘乘瓤。我一直安慰自己,他們只是感情好策泣,可當(dāng)我...
- 文/花漫 我一把揭開(kāi)白布衙傀。 她就那樣靜靜地躺著,像睡著了一般萨咕。 火紅的嫁衣襯著肌膚如雪统抬。 梳的紋絲不亂的頭發(fā)上,一...
- 那天危队,我揣著相機(jī)與錄音聪建,去河邊找鬼。 笑死交掏,一個(gè)胖子當(dāng)著我的面吹牛妆偏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播盅弛,決...
- 文/蒼蘭香墨 我猛地睜開(kāi)眼钱骂,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了挪鹏?” 一聲冷哼從身側(cè)響起见秽,我...
- 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎讨盒,沒(méi)想到半個(gè)月后解取,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡返顺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年禀苦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遂鹊。...
- 正文 年R本政府宣布舟陆,位于F島的核電站误澳,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏秦躯。R本人自食惡果不足惜忆谓,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望踱承。 院中可真熱鬧陪毡,春花似錦米母、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)妙色。三九已至桅滋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間身辨,已是汗流浹背丐谋。 一陣腳步聲響...
- 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像定庵,于是被迫代替她去往敵國(guó)和親吏饿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 本文介紹圖的幾種基本操作:BFS,DFS畴博,求有向圖連通分量的Tarjan算法以及拓?fù)渑判颉?圖的表示 一張圖是由若...
- 更新中笨忌。。俱病。 第二章 2.2.2 交通規(guī)則 幾種常見(jiàn)的漸近運(yùn)行時(shí)間實(shí)例 2.2.4 三種重要情況 這里有一個(gè) el...
- 因?yàn)橹熬蛷?fù)習(xí)完數(shù)據(jù)結(jié)構(gòu)了官疲,所以為了保持記憶,整理了一份復(fù)習(xí)綱要亮隙,復(fù)習(xí)的時(shí)候可以看著綱要想具體內(nèi)容途凫。 樹(shù) 樹(shù)的基本...
- 英特爾的CPU,已經(jīng)成為一種榮耀咱揍,商家知道把這個(gè)標(biāo)簽貼在電腦上颖榜,就能夠增加電腦的價(jià)值,用戶知道這個(gè)標(biāo)志意味著穩(wěn)定和...