當前位置:首頁 » 操作系統 » primkruskal演算法

primkruskal演算法

發布時間: 2022-04-14 13:16:10

① Kruskal演算法和Prim演算法構造它的一棵最小代價生成樹的過程

Prim演算法復雜度:O(n2), 與邊無關,適合求邊稠密的網的最小生成樹。

演算法思想:假設N={V,{E}}是連通網,TE是N上最小生成樹中邊的集合。演算法從U={u0},TE ={}開始,重復執行下述操作:在所有u∈U,v∈V-U的邊(u,v)∈E中找一條代價最小的邊(u0,v0)並入集合TE,同時v0並入U,直至U=V為止。

Kruskal演算法復雜度:O(eloge),相對於Prim而言,適合求邊稀疏的網的最小生成樹。

演算法思想:最小生成樹的初始狀態為只有n個頂點而無邊的非連通圖T=(V,{}),圖中每個頂點自成一個連通分量。在E中選擇代價最小的邊,若該邊依附的頂點落在T中不同的連通分量上,則將此邊加入到T中,否則捨去次邊而選擇下一條代價最小的邊。直至T中所有頂點都在同一連通分量上為止。

② prim和kruscal演算法得到的最小生成樹是否一樣

應該不一樣。可以用一個圖根據兩演算法試一下,若一樣,再修改圖,之後應該就可以了。
(網路或者查書本更加有效……)
構造G的最小生成樹的Prim演算法的基本思想是:首先置S={1},然後,只要S是V的真子集,就作如下的貪心選擇:選取滿足條件iS,jV-S,且c[i][j]最小的邊,將頂點j添加到S中。
這個過程一直進行到S=V時為止。
Kruskal演算法構造G的最小生成樹:將所有的邊按權從小到大排序。然後從第一條邊開始,依邊權遞增的順序查看每一條邊,並按下述方法連接2個不同的連通分支:當查看到第k條邊(v, w)時,如果端點v和w分別是當前2個不同的連通分支T1和T2中的頂點時,就用邊(v, w)將T1和T2連接成一個連通分支,然後繼續查看第k+1條邊;如果端點v和w在當前的同一個連通分支中,就直接再查看第k+1條邊。這個過程一直進行到只剩下一個連通分支時為止

③ prim演算法和kruskal演算法的區別

邊數較少可以用Kruskal,因為Kruskal演算法每次查找最短的邊。 邊數較多可以用Prim,因為它是每次加一個頂點,對邊數多的適用。

④ 已知一個無向圖如下圖所示,要求分別用Prim和Kruskal演算法生成最小樹(假設以①為起點,試畫出

p,樹向外擴張,找最短外擴路徑

k,增加一條不會造成迴路的邊(現在選中的邊可以暫不相連)

按照prim是:(從起點到終點的邊)

46,45,51,63,12,32

按照kruskal是:

46,15,45,63,12,32

克魯斯卡爾演算法思想先將邊中的權值從小到大排序,每次找出候選邊中權值最小的邊,就將該邊並入生成樹中。重復此過程直到所有邊都被檢測完為止。

其中要注意的是克魯斯卡爾演算法需要用到並查集,以此來判斷接下來要並入的邊是否會和已並入的邊構成迴路。這兩個圖分別用普里姆和克魯斯卡爾生成的最小生成樹見圖。

(4)primkruskal演算法擴展閱讀:

無向圖G=<V,E>,其中:

1、V是非空集合,稱為頂點集。

2、E是V中元素構成的無序二元組的集合,稱為邊集。

解釋

直觀來說,若一個圖中每條邊都是無方向的,則稱為無向圖。

無向邊的表示

無向圖中的邊均是頂點的無序對,無序對通常用圓括弧表示。

⑤ prim演算法構造出的最小生成樹唯一嗎prim演算法和kruskal演算法構造出的最小生成樹一樣嗎

不唯一,兩種演算法構造出的最小生成不一定相同。

⑥ 13.用Prim演算法和Kruskal演算法構造圖的最小生成樹,所得到的最小生成樹是否相同

如果原來的圖裡面任何兩條邊長都不相同,那麼最小生成樹是唯一的,此時不管用什麼方法算出來的都是一樣的
但是如果圖里有相等的邊,那麼最小生成樹可能會不唯一,這樣就無法保證不同的方法得到同一棵樹(即使是同一個演算法,只要圖的編號方式改變也可能得到不同的最小生成樹)

⑦ 圖所示是一個無向帶權圖,請分別按Prim演算法和Kruskal演算法求最小生成樹.

•普里姆(Prim)演算法

基本思想

假設N=(V,E)是一個具有n個頂點的連通網,T=(U,TE)是所求的最小生成樹,其中U是T的頂點集,TE是T的邊集。

(1)初始U={u0}(u0∈V),TE=φ;

(2)在所有u∈U,v∈V-U的邊中選一條代價最小的邊(u0,v0)並入集合TE,同時將v0並入U;

(3)重復(2),直到U=V為止。

此時,TE中必含有n-1條邊,則T=(V,{TE})為N的最小生成樹。

注意:1.最小生成樹不唯一。

2.該圖從節點最小開始。

⑧ 如何用淺顯的語言解釋Kruskal演算法和Prim演算法

不嚴謹的說:將全集分為遍歷集合未遍歷集。兩種演算法都是遍歷集慢慢擴大為全集的過程。
Kruskal:集合中元素是邊,每次從未遍歷集中找一個最短邊,如果遍歷集包含它後不會構成迴路,就包含,重復過程直到所有點都連通。
Prim:集合中元素是點,每次從未遍歷集中找一個距離遍歷集距離最近的點,將其包含,重復過程直到包含所有點。
當然對於Kruskal,遍歷集並沒有擴展為全集,把全部邊都包含了也沒有意義了。

⑨ 用普里姆(Prim)或克魯斯卡爾(Kruskal)演算法,畫出下列無向網的最小生成樹

如圖,這是Prim演算法構造最小生成樹的每一步,這里是以A點為初始點。


最小生成樹用權重是60

⑩ 如圖1所示,用prim演算法和Kruskal演算法構造最小生成樹。

prim演算法:假設初始節點為A,則擴展的點的順序為:
加入邊AC,擴展C節點
加入邊AB,擴展B節點
加入邊CD,擴展D節點
加入邊BF,擴展F節點
加入邊DE,擴展E節點

所以最小生成樹含有的邊為:AC、AB、CD、BF、DE

kruskal演算法:
加入邊AC
加入邊DE
加入邊AB
加入邊BF
加入邊CD

最小生成樹與上面一樣

熱點內容
伺服器反查ip 發布:2024-09-29 11:18:18 瀏覽:17
連接oracle資料庫的工具 發布:2024-09-29 11:12:02 瀏覽:253
php系統變數 發布:2024-09-29 11:07:32 瀏覽:343
access資料庫是一個 發布:2024-09-29 11:06:59 瀏覽:509
exe反編譯工具下載 發布:2024-09-29 10:59:03 瀏覽:676
安卓手機開播如何設置 發布:2024-09-29 10:49:58 瀏覽:194
eclipse編譯產生的文件 發布:2024-09-29 10:49:20 瀏覽:931
配置cuda需要什麼顯卡 發布:2024-09-29 10:44:29 瀏覽:607
androidgridview載入 發布:2024-09-29 10:44:16 瀏覽:270
android用戶反饋 發布:2024-09-29 10:36:16 瀏覽:179