避圈法求最小生成樹
當(dāng)今社會(huì)很多人都不熟悉避圈法及的算法特別是用避圈法生成小樹的基本算法,以及相關(guān)的知識(shí),那么現(xiàn)在就跟隨小編來熟悉了解一下吧。
什么是避圈法
簡(jiǎn)單說 就是你現(xiàn)在圖上隨便找一個(gè)點(diǎn) 然后看與這個(gè)點(diǎn)相連的線 找其中最短的一條 確定下來 此時(shí)你有兩個(gè)點(diǎn)(初始點(diǎn)和你確定下來的線所連接的點(diǎn))在這兩個(gè)點(diǎn)發(fā)散出去的線里找一條最短的 確定子下來 這樣你就有兩條線三個(gè)點(diǎn)了 以此類推當(dāng)包含所有點(diǎn)事 所確定的就是最小支撐樹 但是確定線還有一個(gè)原則就是如果你一進(jìn)確定下來好幾個(gè)點(diǎn)好幾條線 那是如果下一條將要確定的最短線正好會(huì)使你確定的線形成圈(環(huán)形)那么這條線即使是最短的線也不能取 要換一條線確定。
最小生成樹案例
案例1
1、對(duì)于連通的帶權(quán)圖(連通網(wǎng))G,其生成樹也是帶權(quán)的。生成樹T各邊的權(quán)值總和稱為該樹的權(quán)。
這里:
TE表示T的邊集
w(u,v)表示邊(u,v)的權(quán)。
權(quán)最小的生成樹稱為G的最小生成樹(Minimum SpannirngTree)。最小生成樹可簡(jiǎn)記為MST。
2、生成樹和最小生成樹的應(yīng)用
生成樹和最小生成樹有許多重要的應(yīng)用。
【例】網(wǎng)絡(luò)G表示n各城市之間的通信線路網(wǎng)線路(其中頂點(diǎn)表示城市,邊表示兩個(gè)城市之間的通信線路,邊上的權(quán)值表示線路的長(zhǎng)度或造價(jià)?赏ㄟ^求該網(wǎng)絡(luò)的最小生成樹達(dá)到求解通信線路或總代價(jià)最小的最佳方案。
3、最小生成樹性質(zhì)(MST性質(zhì))
(1)MST性質(zhì)
最小生成樹性質(zhì):設(shè)G=(V,E)是一個(gè)連通網(wǎng)絡(luò),U是頂點(diǎn)集V的一個(gè)真子集。若(u,v)是G中所有的一個(gè)端點(diǎn)在U(u∈U)里、另一個(gè)端點(diǎn)不在U(即v∈V-U)里的邊中,具有最小權(quán)值的一條邊,則一定存在G的一棵最小生成樹包括此邊(u,v)。
案例2
假設(shè) N=(V,E)是一個(gè)帶權(quán)圖,TE是N上最小生成樹中邊的集合。算法從U={u0}(u0∈V),TE={}開始,重復(fù)執(zhí)行下述操作:在所有u∈U,v∈V-U的邊(u,v) ∈E中找一條權(quán)值最小的邊(u,v)并入集合TE,同時(shí)v并入U(xiǎn),直至U=V為止。此時(shí)TE中必有n-1邊,則T=(V,{TE})為N的最小生成樹。
為實(shí)現(xiàn)這個(gè)算法需附設(shè)一個(gè)輔助數(shù)組 closedge,以記錄從U到V-U具有最小代價(jià)的邊。對(duì)每個(gè)頂點(diǎn)vi∈V-U,在輔助數(shù)組中存在一個(gè)相應(yīng)分量closedge[I-1],它包括兩個(gè)域,其中l(wèi)owcost存儲(chǔ)該邊上的權(quán):顯然, closedge[I-1].Lowcost=Min{cost(u,vi)|uEU} vex域存儲(chǔ)該邊依附的在U中的`頂點(diǎn)。
最易短路的三種基本算法
1、Kruskal算法,Prim算法,兩種算法都是采取的同種貪心策略,其實(shí)證明這個(gè)貪心策略是一樣的結(jié)論
2、Kruskal算法的時(shí)間復(fù)雜度,O(ElgE)排序+O( ( E + V)A(V)) E的find_set。V的union = O( ElgE) 然后E
3、 Prim算法,用最小二項(xiàng)堆的話,O(V)堆初始化+O(VlgV)取出最小的元素 + O (ElgV ) 維護(hù)最小堆 = O( (E+V)lgV )=O(ElgV)
過可以用斐波那契堆,那么一次插入是O(lgV ) 每次刪除平攤O (1) ,所以總的時(shí)間復(fù)雜度是 O (E+VlgV)
與避圈法對(duì)應(yīng)的破圈法
破圈法,尋找一個(gè)連通圖的最小支撐樹(最小部分樹、最小生成樹),也就是BST的一種方法。Kruskal,Prim也是求BST的算法。
編輯摘要
破圈法:尋找一個(gè)連通圖的最小支撐樹(最小部分樹、最小生成樹),也就是BST的一種方法。Kruskal,Prim也是求BST的算法。
另外有兩種方法,一種是破圈法,另一種是避圈法。
破圈法是“見圈破圈”,即如果看到圖中有一個(gè)圈,就將這個(gè)圈的邊去掉一條,直至圖中再無一圈為止。(其中破圈法的" 圈"指的是回路)
避圈法則采取先將圖中的點(diǎn)都取出來,然后,逐漸向上面添邊,并保證后添入的邊不與以前添上的邊構(gòu)成圈就可以了,這個(gè)過程直到將邊集中能加入的邊(加入后不夠成圈)都加完為止。
【避圈法求最小生成樹】相關(guān)文章:
PHP生成樹的方法介紹08-24
最小最小的房子作文09-05
存想避疫法的內(nèi)容應(yīng)用和注意事項(xiàng)08-08
山水國畫畫樹法的簡(jiǎn)介06-23
基金從業(yè)考試:最小方差法與有效前沿知識(shí)點(diǎn)05-02
《最小說》語錄07-29
最小說的經(jīng)典句子08-29
最小的樹葉作文12-31
最小的我作文07-10