http://en.wikipedia.org/wiki/Minimum_spanning_tree
我希望将我的最小生成树算法与最佳中的最佳算法进行基准测试。有人知道我在哪里可以找到这些算法的 C++ 实现吗?我用谷歌搜索并没有找到任何东西。如果这些算法是最好的,那么肯定在某个地方一定有 C++ 实现吗?
迄今为止最快的最小生成树算法是由 David Karger、Philip Klein 和 Robert Tarjan 开发的,他们发现了一种基于 Borůvka 算法和反向删除算法组合的线性时间随机算法。[2][3] Bernard Chazelle 提出的最快的非随机算法基于软堆,一个近似优先级队列。[4][5] 它的运行时间为 O(m α(m,n)),其中 m 是边数,n 是顶点数,α 是 Ackermann 函数的经典反函数。函数 α 增长非常缓慢,因此对于所有实际目的,它可以被认为是一个不大于 4 的常数;因此 Chazelle 的算法需要非常接近线性时间。如果边缘权重是具有有界位长度的整数,然后确定性算法具有线性运行时间。 [6] 对于一般权重是否存在具有线性运行时间的确定性算法仍然是一个悬而未决的问题。然而,Seth Petie 和 Vijaya Ramachandran 发现了一种可证明的最优确定性最小生成树算法,其计算复杂度未知。 [7]
我已经针对 Boost C++ 的图形算法进行了测试。