跳至內容

用戶:Ivyxjc/Sandbox4

維基百科,自由的百科全書
一個平面圖和它的最小生成樹。在該圖中,邊的長度正比於權值A。

最小生成樹是一副連通加權無向圖中一棵權值最小的生成樹

一個連通圖可能有多個生成樹。當圖中的邊具有權值時,總會有一個生成樹的邊的權值之和小於或者等於其它生成樹的邊的權值之和。廣義上而言,對於非連通無向圖來說,它的每一連通分量同樣有最小生成樹。

相關性質

存在個數

這張圖表明一個圖中可能有多個最小生成樹

最小生成樹在一些情況下可能會有多個。例如,當圖的每一條邊的權值都相同是,該圖的所有生成樹都是最小生成樹。

如果圖的每一條邊的權值都互不相同,那麼最小生成樹將只有一個。這一定理同樣適用於最小生成樹森林。

如果圖有具有相同權值的邊,那麼最小生成樹的邊的權值組成的權值集合是唯一的[1]

證明(圖的每一條邊的權值皆不相同):

  1. 假設有兩個最小生成樹
  2. 由於是兩個不同的最小生成樹,那麼中總會有一個或者多個邊並不在中,設這些邊中權值最低的那一條邊為
  3. 由於是一個最小生成樹,由樹的一些定理1可知必然包含一個環
  4. 因為環中存在一條邊它的權值比要大證明見註釋
  5. 因此用替代成為了一個擁有更小權值的生成樹。這和是最小生成樹相矛盾,所以不可能存在兩個最小生成樹。

邊的權值之和最低的子圖

如果圖的邊的權值都為正數,那麼最小生成樹就是該圖的所有包含所有頂點的子圖中權值最低的子圖。

環定理

對於連通圖中的任意一個環:如果中有邊的權值大於該環中任意一個其它的邊的權值,那麼這個邊不會是最小生成樹中的邊

證明:
假設屬於最小生成樹,那麼將刪去將會使得變為兩個樹。因為環必然還存在另一橫切邊f可以連接兩個子樹形成生成樹,且由於,生成樹權值更小,與是最小生成樹矛盾。

切分定理

此圖展示了最小生成樹的切分定理。是該圖唯一的最小生成樹,如果,那麼,然後有3條橫切邊BC,EC,EF可以將這兩個切分相連。其中邊是其中權值最小的邊,所以是最小生成樹的一部分。

在一幅連通加權無向圖中,給定任意的切分英語Cut (graph theory),它的橫切邊中權值最小的邊必然屬於圖的最小生成樹。

證明:
為權重最小的橫切邊,為圖的最小生成樹。假設不包含,那麼如果將加入,得到的圖必然含有一條經過的環,且這個環只是含有一條橫切邊--設為的權重必然大於,那麼用替換可以形成一個權值小於T的生成樹,與為最小生成樹矛盾。所以假設不成立[2]

最小權值邊

如果圖的具有最小權值的邊只有一條,那麼這條邊包含在任意一個最小生成樹中。

證明:
假設該邊沒有在最小生成樹中,那麼將加入中會形成環,用替換環的另一對應的橫切邊,將會形成權值更小的生成樹,與題設矛盾。

相關算法

歷史簡介

計算稠密圖的最小生成樹最早是由羅伯特·普里姆英語Robert C. Prim在1957年發明的[3],即Prim算法。之後艾茲赫爾·戴克斯特拉也獨自發明了它[4]。但該算法的基本思想是由沃伊捷赫·亞爾尼克英語Vojtěch Jarník於1930年發明的[5]。所以該算法有時候也被稱為Jarník算法或者Prim-Jarník算法。20世紀70年代,優先隊列發明之後很快被用在了尋找稀疏圖中的最小生成樹上。1984年,米高·弗里德曼英語Michael Fredman羅伯特·塔揚發明了斐波那契堆,Prim算法所需要的運行時間在理論上由提升到了約瑟夫·克魯斯卡爾英語Joseph Kruskal在1956年發表了他的算法,在他的論文中提到了Prim算法的一個變種,而奧塔卡爾·布盧瓦卡英語Otakar Borůvka在20世紀20年代的論文中就已經提到了該變種。M.Sollin在1961年重新發現了該算法,該算法後成為實現較好漸進性能的最小生成樹算法和並行最小生成樹算法的基礎[6]

以下各算法介紹中,表示圖的邊數,表示圖的頂點數。 

Borůvka算法

第一個用於尋找最小生成樹的算法由捷克科學家奧塔卡爾·布盧瓦卡英語Otakar Borůvka提出,即Borůvka算法英語Borůvka's algorithm

Prim算法

Prim算法的每一步都會為一棵生長中的樹添加一條邊,該樹最開始只有一個頂點,然後會添加個邊。每次總是添加生長中的樹和樹中除該生長的樹以外的部分形成的切分的具有最小權值的橫切邊。

Prim算法的時間複雜度為

Kruskal算法

按照邊的權重順序(從小到大)將邊加入生成樹中,但是若加入該邊會與生成樹形成環則不加入該邊。直到樹中含有條邊為止。這些邊組成的就是該圖的最小生成樹。

Kruskal算法的時間複雜度為

更快的算法

一些研究者希望可以找出更為高效的算法,在這方面也有了一定的成果。 Karger, Klein & Tarjan (1995)針對邊的權值可以成對比較的特殊模型提出了一個基於Borůvka算法和翻轉刪除算法的可以在線性時間內解決最小生成樹的算法[7][8]

最快的非隨機比較算法是由伯納德·沙澤勒英語Bernard Chazelle提出的。該算法依賴於soft heap英語soft heap這樣一個類似於優先級隊列數據結構[9][10] 。該算法的時間複雜度為就是阿克曼函數反函數的增長速度非常慢,對於一般的數值來說,其值很難超過5,所以該算法的複雜度可以近似看成是線性時間。

線性時間的最小生成樹算法

目前,既不能證明不存在能在線性時間內得到任意圖的最小生成樹的算法,也未能發明能夠在線性時間內計算稀疏圖的最小生成樹的算法。

相關問題

k-最小生成樹英語k-minimum spanning tree:圖中包含k個頂點的所有子圖的所有最小生成樹中權值最小的生成樹。

k-最小生成樹的集合問題,在此集合外的生成樹不具有比 A set of k-smallest spanning trees is a subset of k spanning trees (out of all possible spanning trees) such that no spanning tree outside the subset has smaller weight.[11][12][13] (Note that this problem is unrelated to the k-minimum spanning tree.)

歐幾里得最小生成樹英語Euclidean minimum spanning tree是一個用歐幾里得距離來表示權值的連通加權圖的最小生成樹。

方格線最小生成樹英語rectilinear minimum spanning tree是一個用曼哈頓距離來表示權值的連通加權圖的最小生成樹。

容量最小生成樹英語capacitated minimum spanning tree是一棵樹且其每個節點的子樹的容量都不大於。解決該問題是NP困難[14]。但是伊薩·威廉姆斯夏爾馬以及提出了可以在接近多項式時間內解決該問題的啟發式

度受限最小生成樹英語degree-constrained spanning tree是一棵樹,其每一個頂點連接的頂點數都不超過d。對一些特定的d值,該問題類似於旅行推銷員問題。該問題也是NP困難的。

對有向圖來說,其與最小生成樹類似的圖處理問題叫做最小樹形問題

最大生成樹是一棵比其它所有生成樹都要大或者相等的生成樹。其解決方法類似於最小生成樹算法。求解最大生成樹的算法在自然語言處理以及條件隨機場這些問題上起到很大的作用[15]動態最小生成樹 是在已經計算完一個圖的最小生成樹後動態改變一些邊的取值或刪除/添加一些點或者邊,求解新圖的最小生成樹[16][17][18]

註釋

^1 :用一條邊連結樹中的任意兩個頂點都會產生一個新的環。

^2 :設最小生成樹的邊的權值集合按從小到大順序排列為的為。因為為在但是不在的邊中權值最小的邊,所以中權值小於的邊也在中。所以子圖==。因為沒有環,所以的子圖都沒有環,那麼組成環的邊中必有邊來自之中。

參考

  1. ^ Do the minimum spanning trees of a weighted graph have the same number of edges with a given weight?
  2. ^ Robert Sedgewick, Kevin Wayne. 算法. 北京: 人民郵電出版社. 2012年10月. ISBN 978-7-115-29380-0.  ,p391--p392
  3. ^ Prim, R. C., Shortest connection networks And some generalizations, Bell System Technical Journal, November 1957, 36 (6): 1389–1401, doi:10.1002/j.1538-7305.1957.tb01515.x .
  4. ^ Dijkstra, E. W., A note on two problems in connexion with graphs (PDF), Numerische Mathematik, 1959, 1: 269–271, doi:10.1007/BF01386390 .
  5. ^ Jarník, V., O jistém problému minimálním [About a certain minimal problem], Práce Moravské Přírodovědecké Společnosti, 1930, 6: 57–63 (Czech) .
  6. ^ Robert Sedgewick, Kevin Wayne. 算法. 北京: 人民郵電出版社. 2012年10月. ISBN 978-7-115-29380-0.  ,p407--p408
  7. ^ Karger, David R.; Klein, Philip N.; Tarjan, Robert E., A randomized linear-time algorithm to find minimum spanning trees, Journal of the Association for Computing Machinery, 1995, 42 (2): 321–328, MR 1409738, doi:10.1145/201019.201022 
  8. ^ Pettie, Seth; Ramachandran, Vijaya, Minimizing randomness in minimum spanning tree, parallel connectivity, and set maxima algorithms, Proc. 13th ACM-SIAM Symposium on Discrete Algorithms (SODA '02), San Francisco, California: 713–722, 2002 .
  9. ^ Chazelle, Bernard, A minimum spanning tree algorithm with inverse-Ackermann type complexity, Journal of the Association for Computing Machinery, 2000, 47 (6): 1028–1047, MR 1866456, doi:10.1145/355541.355562 .
  10. ^ Chazelle, Bernard, The soft heap: an approximate priority queue with optimal error rate, Journal of the Association for Computing Machinery, 2000, 47 (6): 1012–1027, MR 1866455, doi:10.1145/355541.355554 .
  11. ^ Gabow, Harold N., Two algorithms for generating weighted spanning trees in order, SIAM Journal on Computing, 1977, 6 (1): 139–150, MR 0441784, doi:10.1137/0206011 .
  12. ^ Eppstein, David, Finding the k smallest spanning trees, BIT, 1992, 32 (2): 237–248, MR 1172188, doi:10.1007/BF01994879 .
  13. ^ Frederickson, Greg N., Ambivalent data structures for dynamic 2-edge-connectivity and k smallest spanning trees, SIAM Journal on Computing, 1997, 26 (2): 484–538, MR 1438526, doi:10.1137/S0097539792226825 .
  14. ^ Jothi, Raja; Raghavachari, Balaji, Approximation Algorithms for the Capacitated Minimum Spanning Tree Problem and Its Variants in Network Design, ACM Trans. Algorithms, 2005, 1 (2): 265–282, doi:10.1145/1103963.1103967 
  15. ^ McDonald, Ryan; Pereira, Fernando; Ribarov, Kiril; Hajič, Jan. Non-projective dependency parsing using spanning tree algorithms (PDF). Proc. HLT/EMNLP. 2005. 
  16. ^ Spira, P. M.; Pan, A., On finding and updating spanning trees and shortest paths, SIAM Journal on Computing, 1975, 4 (3): 375–380, MR 0378466, doi:10.1137/0204032 .
  17. ^ Holm, Jacob; de Lichtenberg, Kristian; Thorup, Mikkel, Poly-logarithmic deterministic fully dynamic algorithms for connectivity, minimum spanning tree, 2-edge, and biconnectivity, Journal of the Association for Computing Machinery, 2001, 48 (4): 723–760, MR 2144928, doi:10.1145/502090.502095 .
  18. ^ Chin, F.; Houck, D., Algorithms for updating minimal spanning trees, Journal of Computer and System Sciences, 1978, 16 (3): 333–344, doi:10.1016/0022-0000(78)90022-3 .

Additional reading