最小生成树基础
【0】README
0.1) 本文總結于 數據結構與算法分析, 源代碼均為原創, 旨在 review 最小生成樹的基礎知識;
0.2)了解本文的內容是 分析 Prim算法(普利姆算法)和 Kruskal算法(克魯斯卡爾算法) 的前提;
【1】最小生成樹(一句話,所有點相連的邊的權值最小)
1.1)我們考慮的問題: 在一個無向圖中找出一顆最小生成樹。一個無向圖G的最小生成樹就是由該圖的那些連接G 的所有頂點的邊構成的樹, 且其總價值最低。最小樹存在,且僅當G是連通的。
Attention)
- A1)注意, 在最小生成樹中邊的條數為 |V|-1;最小生成樹是一顆樹, 因為它無圈;因為最小生成樹包含每一個頂點,所以它是生成樹;
- A2)此外,最小生成樹顯然包含圖的所有頂點的最小的樹;
- A3)應用: 如果我們需要用最少的電線給一所房子安裝電路,我們就需要解決最小生成樹問題;
1.2)對于任一生成樹T, 如果將一條不屬于 T的邊e 添加進來,則產生一個圈;
- 1.2.1)如果從該圈中除去任意一條邊, 則又恢復生成樹的特性;
- 1.2.2)如果邊e 的值比除去的邊的值還低, 那么新的生成樹的值就比原生成樹的值低;
- 1.2.3)如果在建立生成樹時所添加的邊在所有避免成圈的邊中值最小,那么最后得到的生成樹的值不能再改進, 因為任意一條替代的邊的值都大于等于已經存在于該生成樹中的一條邊的值;它指出, 對于最小生成樹這種貪欲是成立的;
Attention)下面介紹兩種方法以實現 最小生成樹, 它們的區別在于最小(值的)邊的選取上——Prim算法(普利姆算法)和 Kruskal算法(克魯斯卡爾算法)
總結
- 上一篇: dnspod怎么添加记录(dnspod如
- 下一篇: 最小生成树——Prim(普利姆)算法