http://en.wikipedia.org/wiki/Minimum_spanning_tree最快最小生成樹算法
我期待我的基準最小生成樹對最好的最好的樹算法。 有人知道我在哪裏可以找到這些算法的C++實現嗎?我瘋狂搜索並沒有發現任何東西。如果這些算法是最好的,肯定肯定有一個C++實現的地方?
最快最小生成樹 算法迄今被 大衛·卡爾格,菲利普·克萊恩和羅伯特 的Tarjan,誰發現基於Borůvka的算法和 反向的 組合 隨機算法的線性時間內開發 - 刪除算法[2] [3] Bernard Chazelle最快的非隨機算法, ,基於 軟堆,優先級爲 隊列。[4] [5]它的運行時間是O(m α(m,n)),其中m是邊的數量,n是頂點的數量,並且α是阿克曼函數的經典函數逆 。函數α增長非常緩慢,因此對於所有實際目的而言,它可能被認爲是不大於4的常數,不大於 。因此Chazelle的算法 需要非常接近線性時間。如果 邊緣權重是具有有限位長度的整數,那麼確定性算法以線性 運行時間已知。[6]如果 運行時間爲0,是否存在 確定性算法與線性 一般權重的運行時間是 仍然是一個未解決的問題。然而,Seth Petie和Vijaya Ramachandran有 找到了一個可證明的最優生成樹算法,其中 的計算複雜度爲 未知[7]。
我已經測試了Boost C++的圖算法。
很好的答案。你應該補充一點,有時Big O也會帶來一些警告,比如散列表的情況以及它們對「好」散列函數的依賴。雖然我們在這裏沒有討論哈希函數,但在不相交的樹等情況下可能會發生同樣的事情。 – wheaties 2011-02-07 18:23:26