麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

ACM 最小生成樹 Constructing Roads

2019-11-11 05:04:04
字體:
來源:轉載
供稿:網友

最小生成樹:一個有 n 個結點的連通圖的生成樹是原圖的極小連通子圖,且包含原圖中的所有 n 個結點,并且有保持圖連通的最少的邊。

最小生成樹可以用kruskal(克魯斯卡爾)算法或PRim(普里姆)算法求出。

在一給定的無向圖G = (V, E) 中,(u, v) 代表連接頂點 u 與頂點 v 的邊,而 w(u, v) 代表此邊的權重,若存在 T 為 E 的子集且為無循環圖,使得的 w(T) 最小,則此 T 為 G 的最小生成樹。最小生成樹其實是最小權重生成樹的簡稱。

例如:要在n個城市之間鋪設光纜,主要目標是要使這 n 個城市的任意兩個之間都可以通信,但鋪設光纜的費用很高,且各個城市之間鋪設光纜的費用不同,因此另一個目標是要使鋪設光纜的總費用最低。這就需要找到帶權的最小生成樹。

Prim算法簡述

1).輸入:一個加權連通圖,其中頂點集合為V,邊集合為E;2).初始化:Vnew= {x},其中x為集合V中的任一節點(起始點),Enew= {},為空;3).重復下列操作,直到Vnew= V:a.在集合E中選取權值最小的邊<u, v>,其中u為集合Vnew中的元素,而v不在Vnew集合當中,并且v∈V(如果存在有多條滿足前述條件即具有相同權值的邊,則可任意選取其中之一);b.將v加入集合Vnew中,將<u, v>邊加入集合Enew中;4).輸出:使用集合Vnew和Enew來描述所得到的最小生成樹。

圖例描述:

圖例說明不可選可選已選(Vnew
 

此為原始的加權連通圖。每條邊一側的數字代表其權值。---

頂點D被任意選為起始點。頂點ABEF通過單條邊與D相連。A是距離D最近的頂點,因此將A及對應邊AD以高亮表示。C, GA, B, E, FD
 

下一個頂點為距離DA最近的頂點。BD為9,距A為7,E為15,F為6。因此,FDA最近,因此將頂點F與相應邊DF以高亮表示。C, GB, E, FA, D
算法繼續重復上面的步驟。距離A為7的頂點B被高亮表示。CB, E, GA, D, F
 

在當前情況下,可以在CEG間進行選擇。CB為8,EB為7,GF為11。E最近,因此將頂點E與相應邊BE高亮表示。C, E, GA, D, F, B
 

這里,可供選擇的頂點只有CGCE為5,GE為9,故選取C,并與邊EC一同高亮表示。C, GA, D, F, B, E

頂點G是唯一剩下的頂點,它距F為11,距E為9,E最近,故高亮表示G及相應邊EGGA, D, F, B, E, C

現在,所有頂點均已被選取,圖中綠色部分即為連通圖的最小生成樹。在此例中,最小生成樹的權值之和為39。A, D, F, B, E, C, G
Kruskal算法簡述       假設 WN=(V,{E}) 是一個含有 n 個頂點的連通網,則按照克魯斯卡爾算法構造最小生成樹的過程為:先構造一個只含 n 個頂點,而邊集為空的子圖,若將該子圖中各個頂點看成是各棵樹上的根結點,則它是一個含有 n 棵樹的一個森林。之后,從網的邊集 E 中選取一條權值最小的邊,若該條邊的兩個頂點分屬不同的樹,則將其加入子圖,也就是說,將這兩個頂點分別所在的兩棵樹合成一棵樹;反之,若該條邊的兩個頂點已落在同一棵樹上,則不可取,而應該取下一條權值最小的邊再試之。依次類推,直至森林中只有一棵樹,也即子圖中含有 n-1條邊為止。

算法簡單描述

1).記Graph中有v個頂點,e個邊

2).新建圖Graphnew,Graphnew中擁有原圖中相同的e個頂點,但沒有邊

3).將原圖Graph中所有e個邊按權值從小到大排序

4).循環:從權值最小的邊開始遍歷每條邊 直至圖Graph中所有的節點都在同一個連通分量中

                if (這條邊連接的兩個節點于圖Graphnew中不在同一個連通分量中)

                添加這條邊到圖Graphnew

圖例描述:

首先第一步,我們有一張圖Graph,有若干點和邊 

 

將所有的邊的長度排序,用排序的結果作為我們選擇邊的依據。這里再次體現了貪心算法的思想。資源排序,對局部最優的資源進行選擇,排序完成后,我們率先選擇了邊AD。這樣我們的圖就變成了右圖

 

 

 

在剩下的變中尋找。我們找到了CE。這里邊的權重也是5

依次類推我們找到了6,7,7,即DF,AB,BE。

下面繼續選擇, BC或者EF盡管現在長度為8的邊是最小的未選擇的邊。但是現在他們已經連通了(對于BC可以通過CE,EB來連接,類似的EF可以通過EB,BA,AD,DF來接連)。所以不需要選擇他們。類似的BD也已經連通了(這里上圖的連通線用紅色表示了)。

最后就剩下EG和FG了。當然我們選擇了EG。最后成功的圖就是右:

 

偽代碼

GenerieMST(G){                                                  //求G的某棵MSTT〈-¢;                                     //T初始為空,是指頂點集和邊集均空while T未形成G的生成樹 do{找出T的一條安全邊(u,v);  //即T∪{(u,v)}仍為MST的子集T=T∪{(u,v)};                          //加入安全邊,擴充T}return T; //T為生成樹且是G的一棵MST}然后TOJ的話3451: Constructing Roads是用最小生成樹做的..但是我還沒做出來..等我做出來了后期補上...嗯..看了一些網上的代碼,,,感覺用Kruskal算法比較方便~大家可以先自己嘗試下哦!
上一篇:poj 1661

下一篇:文章標題

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 19禁国产精品福利视频 | 精品亚洲综合 | 激情视频在线播放 | 成人精品| 久久艹精品视频 | 国产xxxx免费 | 1区2区3区在线观看 欧美特黄a | 污视频在线免费 | 久久超 | 九九热精品在线视频 | 欧美乱淫 | 羞羞色院91精品网站 | 午夜神马福利视频 | 国产午夜精品久久久久久久蜜臀 | 日韩中文字幕一区二区三区 | 大片毛片| 欧美www | 精品国产亚洲人成在线 | 欧美视频在线一区二区三区 | 午夜伊人| 欧美日韩国产一区二区三区在线观看 | 国产精品久久久久久婷婷天堂 | 亚洲国产高清一区 | 视频一区二区久久 | 日韩专区在线 | 中文国产在线视频 | 日韩在线欧美在线 | 91九色国产视频 | 巨根插入| 午夜视频福利 | 成人在线视频免费 | 色视频在线观看 | 国产成人高潮免费观看精品 | 色a综合| 99seav| 色妹子久久| 免费观看黄视频 | 国产亚洲精品久久久久婷婷瑜伽 | china对白普通话xxxx | 欧美精品成人 | 国产精品视频成人 |