圖論——深度優(yōu)先搜索杨赤,廣度優(yōu)先搜索敞斋,拓?fù)渑判?/h1>

這是兩種常用的搜索方式截汪,但是應(yīng)用不同。

廣度優(yōu)先搜索植捎,在與搜索一個(gè)節(jié)點(diǎn)到另一個(gè)節(jié)點(diǎn)的最短距離衙解。
深得優(yōu)先搜索則側(cè)重圖中節(jié)點(diǎn)(假設(shè)節(jié)點(diǎn)代表某些事件)的發(fā)生順序。

廣度優(yōu)先搜索

廣度優(yōu)先搜索焰枢,類似與將圖組織稱一種樹的形式(但是可能不是一棵樹蚓峦,應(yīng)為有環(huán)形)。
然后分層進(jìn)行遍歷济锄,一層遍歷玩以后遍歷下一層暑椰。

使用隊(duì)列作為輔助。遍歷一層節(jié)點(diǎn)(也就是所有分支)的時(shí)候?qū)⑾乱粚庸?jié)點(diǎn)都添加到隊(duì)列拟淮,這樣干茉,一層結(jié)束以后,下一層的節(jié)點(diǎn)都在隊(duì)列中很泊。然后從該隊(duì)列中取元素角虫,進(jìn)行處理,處理的同時(shí)委造,將本層的節(jié)點(diǎn)的下一層(也就是相關(guān)聯(lián)節(jié)點(diǎn)再次添加到隊(duì)列)戳鹅。
在遍歷的時(shí)候需要一個(gè)memo,用來記錄該節(jié)點(diǎn)的遍歷狀態(tài)
第一種memo:已遍歷昏兆,正在遍歷枫虏,未遍歷。
原因在于爬虱,當(dāng)節(jié)點(diǎn)處于正在遍歷的狀態(tài)時(shí)隶债,如果節(jié)點(diǎn)的兄弟節(jié)點(diǎn)相互連通,那么第二個(gè)兄弟節(jié)點(diǎn)將會(huì)遍歷兩次跑筝,所以在第一次遇到一個(gè)節(jié)點(diǎn)的時(shí)候死讹,標(biāo)記為正在遍歷。當(dāng)再次遇到帶節(jié)點(diǎn)(兄弟節(jié)點(diǎn)要添加該節(jié)點(diǎn)進(jìn)隊(duì)列)曲梗,節(jié)點(diǎn)為正在遍歷赞警,因此跳過添加。
只添加未遍歷的節(jié)點(diǎn)進(jìn)隊(duì)列虏两。

第二種memo:已遍歷愧旦,為遍歷
這種memo方法,在添加如隊(duì)列之前就將其標(biāo)記為已遍歷定罢。這樣就避免了循環(huán)添加笤虫。

最短路徑

廣度有限搜索是可以的到最短路徑的,其的到最短路徑的方式在于:
每個(gè)節(jié)點(diǎn)存儲(chǔ)一個(gè)值d表示該節(jié)點(diǎn)到起點(diǎn)的距離。同時(shí)存放一個(gè)本節(jié)點(diǎn)的父節(jié)點(diǎn)p耕皮。
在遍歷的過程中境蜕,如果本節(jié)點(diǎn)為未遍歷,那么:本節(jié)點(diǎn)的d等于上一個(gè)節(jié)點(diǎn)的d+1凌停,本節(jié)點(diǎn)的p等于上一個(gè)節(jié)點(diǎn)。
該賦值過程發(fā)生在添加到隊(duì)列之前售滤,某點(diǎn)已經(jīng)被添加到隊(duì)列罚拟,那么不應(yīng)該在賦值。

當(dāng)遍歷存在分支完箩,在某個(gè)點(diǎn)的時(shí)候兩個(gè)分支回合赐俗,第一次遍歷的時(shí)候?qū)⒒睾宵c(diǎn)添加到隊(duì)列,而本條分支就是會(huì)合點(diǎn)距離起始點(diǎn)的最短路徑弊知。而下一次遍歷到回合點(diǎn)的分支阻逮,一定大于等于本次的。
因?yàn)閺V度優(yōu)先遍歷按層遍歷秩彤。

最短路徑就保存在這些p中叔扼,從結(jié)束點(diǎn),依次遞歸或者迭代的去訪問節(jié)點(diǎn)的p就可以到達(dá)起始點(diǎn)漫雷。

所以瓜富,可以看出,廣度優(yōu)先搜索其按層搜索的特征決定了可以用于最短路徑的搜索

深度優(yōu)先搜索

深度優(yōu)先搜索其搜索過程降盹,是与柑,優(yōu)先搜索分支的每一條分支。到達(dá)最深處返回蓄坏,再去搜索另一條分支价捧。
這類似與一個(gè)棧。

同樣也需要上面兩種形式的memo涡戳,來防止節(jié)點(diǎn)的循環(huán)添加结蟋。

在遍歷一個(gè)節(jié)點(diǎn)的時(shí)候,處理完該節(jié)點(diǎn)以后妹蔽,將其分支全部壓入棧中椎眯。再?gòu)臈V腥〕鲆粋€(gè)元素,處理該元素結(jié)束以后再將該元素的分支壓入此棧胳岂。编整。。乳丰。掌测。。如此循環(huán),可以發(fā)現(xiàn)汞斧,椧褂簦基本上是在增長(zhǎng)的(當(dāng)分支只有一個(gè)時(shí),不變化)粘勒,直到到達(dá)了分支的末端竞端,棧開始減少。

深度優(yōu)先搜索中的d(距離)并沒有什么用庙睡,因?yàn)槠湟呀?jīng)不再代表最短距離事富,而是取決于同一個(gè)節(jié)點(diǎn)不同分支的遍歷順序。

拓?fù)渑判?/h2>

因?yàn)樯疃葍?yōu)先搜索的搜索特性乘陪,其可以用來表示節(jié)點(diǎn)(將節(jié)點(diǎn)想象成事件)的發(fā)生先后順序统台,而遍歷的結(jié)果是其中一種可能的順序(存在環(huán)形)。

比如啡邑,我們從起始點(diǎn)開始遍歷圖贱勃,可以想為,穿衣的順序谤逼。
起始點(diǎn)有兩條分支:穿上衣贵扰,穿下衣,穿鞋襪森缠。
那么深度優(yōu)先搜索會(huì)盡可能深的遍歷其中一條分支拔鹰,比如穿上衣:內(nèi)衣->襯衣->外套。
在襯衣和外套之間可能存在戴領(lǐng)帶贵涵,帶臂章最終又在穿外套點(diǎn)回合列肢,因此是一個(gè)環(huán)形。
內(nèi)衣->襯衣->領(lǐng)帶->臂章->外套宾茂。
因?yàn)榄h(huán)形的存在因此給出一種順序瓷马。

因此如果每個(gè)點(diǎn)保存一個(gè):該點(diǎn)開始處理時(shí)間,該點(diǎn)處理結(jié)束的時(shí)間跨晴。
那么在這兩個(gè)時(shí)間之間欧聘,是該節(jié)點(diǎn)的分支的處理時(shí)間。
{a{b...b}{c...c}a}
bb,cc 中間是其節(jié)點(diǎn)分支端盆。

最短路徑

http://blog.csdn.net/qq_32353771/article/details/52820176

使用最深優(yōu)先搜索求最短路徑怀骤,需要在遍歷完一個(gè)點(diǎn)的時(shí)候,再將這個(gè)點(diǎn)該為未遍歷焕妙。
但是低效蒋伦,如果一個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn)相互連通,那么一定會(huì)被重復(fù)遍歷焚鹊!

強(qiáng)連通分量

一個(gè)有向圖中痕届,如果任意兩點(diǎn)之間可到達(dá),那么該圖是一個(gè)強(qiáng)連通圖
在一個(gè)非強(qiáng)連通圖中,某個(gè)子圖可以是強(qiáng)連通圖研叫,那么最大的強(qiáng)連通子圖就是強(qiáng)連通分量

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者

  • 序言:七十年代末锤窑,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子嚷炉,更是在濱河造成了極大的恐慌渊啰,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渤昌,死亡現(xiàn)場(chǎng)離奇詭異虽抄,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)独柑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來私植,“玉大人忌栅,你說我怎么就攤上這事∏冢” “怎么了索绪?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)贫悄。 經(jīng)常有香客問我瑞驱,道長(zhǎng),這世上最難降的妖魔是什么窄坦? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任唤反,我火速辦了婚禮,結(jié)果婚禮上鸭津,老公的妹妹穿的比我還像新娘彤侍。我一直安慰自己,他們只是感情好逆趋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布盏阶。 她就那樣靜靜地躺著,像睡著了一般闻书。 火紅的嫁衣襯著肌膚如雪名斟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天魄眉,我揣著相機(jī)與錄音砰盐,去河邊找鬼。 笑死杆融,一個(gè)胖子當(dāng)著我的面吹牛楞卡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蒋腮,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼淘捡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起池摧,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤焦除,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后作彤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體膘魄,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年竭讳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了创葡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绢慢,死狀恐怖灿渴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情胰舆,我是刑警寧澤骚露,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站缚窿,受9級(jí)特大地震影響棘幸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜倦零,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一误续、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧光绕,春花似錦女嘲、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至停蕉,卻和暖如春愕鼓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背慧起。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工菇晃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蚓挤。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓磺送,卻偏偏與公主長(zhǎng)得像驻子,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子估灿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容