最小生成樹

2021-06-19 12:37:44 字數 1200 閱讀 5917

0) 引論

這裡的最小生成樹是圖論中的概念,是指在圖中找到乙個最小的樹,這棵樹包含所有的點,並且總的邊的權重要最小。

這裡我們說的圖是指無向圖。

下圖所示為乙個無向圖的最小生成樹。

下面我們看看解決這個問題的兩種演算法。

1) prim』s algorithm

這個演算法有點類似於dijkstra algorithm。是一步一步的增長樹。依次處理每乙個頂點,選取最短的路徑。

prim』s algorithm也引入了dijkstra algorithm中的table來輔助樹的生成。以上圖的圖為例:

這是初始化的表。

首先選擇v1點,更新v2,v3,v4。

然後選擇v4點,更新v3,v5,v6,v7。因為2<3,因此不更新v2.

然後選擇v2點,沒有需要更新的點

然後選擇v3點,更新v6點。

然後選擇v7點,更新v6,v5點。

還剩下兩個點v5,v6;且v5與v6不鄰接,因此此處不需要更新,直接選中v5,v6,顯示其以處理即可。

這個演算法相當容易理解,首先把圖的所有頂點看做是只有根的樹,然後合併樹,合併的原則是選取最小的權重的邊,切不能是樹形成圈。如下圖所示

最小生成樹 次小生成樹

一 最小生成樹 說到生成樹首先要解釋一下樹,樹是乙個聯通的無向無環圖,多棵樹的集合則被稱為森林。因此,樹具有許多性質 1.兩點之間的路徑是唯一的。2.邊數等於點數減一。3.連線任意兩點都會生成乙個環。對於乙個無向聯通圖g的子圖,如果它包含g的所有點,則它被稱為g的生成樹,而各邊權和最小的生成樹則被稱...

最小生成樹

package 圖 最小生成樹是用最少的邊吧把所有的節點連線起來。於是和圖的深度優先搜素差不多。class stack public void push int key public int pop 檢視棧頂的元素 public int peek public boolean isempty cla...

最小生成樹

define max vertex num 20 最大頂點數 typedef int adjmatrix max vertex num max vertex num 鄰接矩陣型別 typedef char vertextype typedef struct mgraph struct dnodecl...