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