【離散數(shù)學(xué)】樹(shù)(二)最小生成樹(shù)基本原理

正文之前

在介紹最小生成樹(shù)之前嵌灰,需要先介紹一下生成樹(shù)的概念:

一棵樹(shù) T问词,如果包含一個(gè)連通無(wú)向圖G中的所有頂點(diǎn),則稱(chēng) T 為圖G的生成樹(shù)恨豁,一般情況下咐鹤,圖G的生成樹(shù)不止一棵。


本節(jié)將介紹以下內(nèi)容:

尋找生成樹(shù)(廣度/深度優(yōu)先搜索)
尋找最小生成樹(shù)(Prim/Kruskal算法)

正文

尋找生成樹(shù)(Spanning Trees)

1. 廣度優(yōu)先搜索(Breadth-First-Search)
  • 思想:首先處理在同一層次的所有結(jié)點(diǎn)圣絮,然后再處理下一層次的結(jié)點(diǎn)

舉例

  1. 我們先給結(jié)點(diǎn)排序:a,b,c,d,e,f,g,h

  2. 設(shè) a 為根結(jié)點(diǎn),T只包含a

  3. 給T添加邊(a, x)

  4. 添加(a,b)

  5. 在結(jié)點(diǎn) b 的基礎(chǔ)上執(zhí)行第3步雕旨,添加(b, f), (b, c), (b, e)

  6. 在結(jié)點(diǎn) f, c, e 的基礎(chǔ)上扮匠,執(zhí)行第3步,添加(f, g), (c, d), (e, i)

  7. 在結(jié)點(diǎn) g, d, i 的基礎(chǔ)上凡涩,執(zhí)行第3步棒搜,添加(d, h)

  8. 在結(jié)點(diǎn) h 的基礎(chǔ),沒(méi)有邊可添加活箕,過(guò)程結(jié)束力麸,生成樹(shù)已找到

2. 深度優(yōu)先搜索(Depth-First-Search)
  • 思想:盡可能深入地搜索,到達(dá)盡頭后,沿著每條邊回到初始選定的結(jié)點(diǎn)克蚂,直到發(fā)現(xiàn)所有的結(jié)點(diǎn)闺鲸,又稱(chēng)為回溯法(backtracking)

還是以上圖為例:

  1. 我們先給結(jié)點(diǎn)排序:a,b,c,d,e,f,g,h

  2. 設(shè) a 為根結(jié)點(diǎn),T只包含a

  3. 按照順序埃叭,增加邊(a, b), (b, c), (c, d), (d, e), (e, i), (i, h)

  4. 以結(jié)點(diǎn) h 為基礎(chǔ)摸恍,不能再增加邊,所以開(kāi)始回溯

  5. 回溯到結(jié)點(diǎn) c 赤屋,增加邊(c, g), (g, f)

  6. 以結(jié)點(diǎn) f 為基礎(chǔ)立镶,不能再增加邊,又開(kāi)始回溯

  7. 回溯到根結(jié)點(diǎn) a 类早,過(guò)程結(jié)束媚媒,生成樹(shù)已找到


算法的不同,就會(huì)導(dǎo)致尋找到的生成樹(shù)不同涩僻,所以缭召,如果一個(gè)圖含有生成樹(shù),一般情況下不止一棵

尋找最小生成樹(shù)

在一個(gè)圖的所有生成樹(shù)中令哟,權(quán)值最小的樹(shù)被稱(chēng)為最小生成樹(shù)

打個(gè)比方恼琼,一個(gè)圖表示一個(gè)省,在省內(nèi)的各個(gè)市之間需要修建公路屏富,圖中的每條邊的權(quán)值表示修建這條公路的費(fèi)用晴竞,如何修建一條連貫各示且費(fèi)用最低的公路?狠半?

1. Prim算法
  • 思想:樹(shù)的構(gòu)造從一個(gè)結(jié)點(diǎn)開(kāi)始噩死,不斷給樹(shù)加入邊,直到形成最小生成樹(shù)

根據(jù)這個(gè)圖神年,我們開(kāi)始演算:

  1. 我們假設(shè)初始結(jié)點(diǎn)為 a 已维,在樹(shù) T 中加入結(jié)點(diǎn) a

  2. 選擇與結(jié)點(diǎn) a 相關(guān)聯(lián)的權(quán)值最小的邊:(a, c),將其加入 T

  3. 選擇與結(jié)點(diǎn) a 或結(jié)點(diǎn) c 相關(guān)聯(lián)的權(quán)值最小的邊:(c, b)已日,將其加入 T 垛耳,與結(jié)點(diǎn) a 有關(guān)聯(lián)的邊都已被選擇,所以不再考慮結(jié)點(diǎn) a

  4. 選擇與結(jié)點(diǎn) c 或結(jié)點(diǎn) b 相關(guān)聯(lián)的權(quán)值最小的邊:(b, g)飘千,將其加入 T

  5. 選擇與結(jié)點(diǎn) c 或結(jié)點(diǎn) b 或結(jié)點(diǎn) g 相關(guān)聯(lián)的權(quán)值最小的邊:(g, h)堂鲜,將其加入 T

  6. 選擇與結(jié)點(diǎn) c 或結(jié)點(diǎn) b 或結(jié)點(diǎn) g 或結(jié)點(diǎn) h 相關(guān)聯(lián)的權(quán)值最小的邊:(c, d),將其加入 T 护奈,與結(jié)點(diǎn) b, c 有關(guān)聯(lián)的邊都已被選擇缔莲,所以不再考慮結(jié)點(diǎn) b, c

  7. 選擇與結(jié)點(diǎn) d 或結(jié)點(diǎn) g 或結(jié)點(diǎn) h 相關(guān)聯(lián)的權(quán)值最小的邊:(d, e),將其加入 T

  8. 選擇與結(jié)點(diǎn) d 或結(jié)點(diǎn) g 或結(jié)點(diǎn) h 或結(jié)點(diǎn) e 相關(guān)聯(lián)的權(quán)值最小的邊:(e, f)霉旗,將其加入 T

  9. 所有結(jié)點(diǎn)已都在樹(shù)中痴奏,最小生成樹(shù)已找到蛀骇,權(quán)值為20,過(guò)程結(jié)束

2. Kruskal算法
  • 思想:將圖中所有的邊按權(quán)值升序排列读拆,不斷選擇權(quán)值最小的邊加入樹(shù)中擅憔,直至所有結(jié)點(diǎn)都已在同一連通分量中

還是以這張圖為例:

  1. 將所有邊排序建椰,具體結(jié)果就不展示了

  2. 首先選擇邊(g, h)雕欺,權(quán)值為1,加入樹(shù) T

  3. 選擇邊(g, b)棉姐,權(quán)值為2屠列,加入 T

  4. 依次選擇邊(a, c), (c, b), (e, f), (d, e), (c, d)

  5. 所有的結(jié)點(diǎn)都已在同一連通分量中,最小生成樹(shù)已找到伞矩,權(quán)值為20笛洛,過(guò)程結(jié)束

重點(diǎn)

在選擇權(quán)值為4的邊時(shí),如果選擇邊(a, b)乃坤,就會(huì)導(dǎo)致形成回路苛让,尋找失敗

在選擇權(quán)值為5的邊時(shí),如果選擇邊(d, f)湿诊,就會(huì)導(dǎo)致形成回路狱杰,尋找失敗

這兩種方法找到了結(jié)構(gòu)相同的最小生成樹(shù),證明此圖只有唯一的最小生成樹(shù)

關(guān)于最小生成樹(shù)的介紹就到此為止了厅须,謝謝仿畸!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市朗和,隨后出現(xiàn)的幾起案子错沽,更是在濱河造成了極大的恐慌,老刑警劉巖眶拉,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件千埃,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡忆植,警方通過(guò)查閱死者的電腦和手機(jī)放可,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)朝刊,“玉大人吴侦,你說(shuō)我怎么就攤上這事∥牍牛” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵劫樟,是天一觀的道長(zhǎng)痪枫。 經(jīng)常有香客問(wèn)我织堂,道長(zhǎng),這世上最難降的妖魔是什么奶陈? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任易阳,我火速辦了婚禮,結(jié)果婚禮上吃粒,老公的妹妹穿的比我還像新娘潦俺。我一直安慰自己,他們只是感情好事示,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布僻肖。 她就那樣靜靜地躺著,像睡著了一般臀脏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上揉稚,一...
    開(kāi)封第一講書(shū)人閱讀 51,754評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音搀玖,去河邊找鬼。 笑死巷怜,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的延塑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼侥涵,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼芜飘!你這毒婦竟也來(lái)了磨总?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤娶牌,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后诗良,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡舞骆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年督禽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赂蠢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辨泳。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖第岖,靈堂內(nèi)的尸體忽然破棺而出试溯,到底是詐尸還是另有隱情,我是刑警寧澤键袱,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布摹闽,位于F島的核電站,受9級(jí)特大地震影響澜汤,放射性物質(zhì)發(fā)生泄漏舵匾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一徽诲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧轩拨,春花似錦院喜、人聲如沸喷舀。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拿愧。三九已至碌尔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間柳洋,已是汗流浹背叹坦。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绪囱,地道東北人莹捡。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像而柑,于是被迫代替她去往敵國(guó)和親荷逞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

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

  • B樹(shù)的定義 一棵m階的B樹(shù)滿足下列條件: 樹(shù)中每個(gè)結(jié)點(diǎn)至多有m個(gè)孩子涩澡。 除根結(jié)點(diǎn)和葉子結(jié)點(diǎn)外坠敷,其它每個(gè)結(jié)點(diǎn)至少有m...
    文檔隨手記閱讀 13,232評(píng)論 0 25
  • 第一章 緒論 什么是數(shù)據(jù)結(jié)構(gòu)? 數(shù)據(jù)結(jié)構(gòu)的定義:數(shù)據(jù)結(jié)構(gòu)是相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合粥帚。 第二章...
    SeanCheney閱讀 5,775評(píng)論 0 19
  • 背景: 由于公司服務(wù)器已經(jīng)運(yùn)行兩年了, 而且機(jī)器是塔式的, 難以放到機(jī)房, 所以剛好把現(xiàn)有的機(jī)器替換成刀片式的服務(wù)...
    大大世界閱讀 2,736評(píng)論 0 1
  • 1.2分31秒 2.大圈水平轉(zhuǎn)動(dòng)柴灯,小圈上下翻轉(zhuǎn) 第二個(gè)作業(yè)怕你們看不懂哈哈哈
    扶綾閱讀 151評(píng)論 0 0
  • 誰(shuí)借給我一雙翅膀 讓我可以展翼飛翔 去遨游太空的上方 看看那里的模樣 誰(shuí)借給我一雙翅膀 讓我可以展翼飛翔 去飛越那...
    以琳閱讀 185評(píng)論 0 0