最小生成樹的概念:樹:無迴路,v個頂點一定有v-1條邊;生成樹:包含全部頂點,v-1條邊都在圖里;向生成樹中任加一條邊都一定構成迴路;最小:邊的權重和最小
如果最小生成樹存在,圖一定是連通的。
貪心演算法:(貪)每一步都要最好的,(好)權重最下的邊。
約束:只能用圖里有點邊,只能正好用掉v-1條邊,樹中不能有迴路
prim演算法——讓一棵小樹長大,時間複雜度是t = o(v²),在稠密圖里是合算的。
找權重最小的某一條邊,收入樹中,搜尋相連邊的兩個頂點的下一條最小的邊,注意不能是迴路。
**見書229頁
kruskal演算法——將森林合併成樹,用作在稀疏圖。時間複雜度是t = o(|e| log |e|)
把權重最小的邊無論多少,收入樹中,但是不能收入能構成迴路的邊。
可以把所有邊的權重放入最小堆。可以用並查集來判斷某一條邊是否構成了迴路。
**見書234頁(只有偽**)
最小生成樹 次小生成樹
一 最小生成樹 說到生成樹首先要解釋一下樹,樹是乙個聯通的無向無環圖,多棵樹的集合則被稱為森林。因此,樹具有許多性質 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...