是否存在线性О(n+m)
时间算法,仅用于查找给定图r
的最小生成树的值G(V,E)
?我们不想找到MST,只是它的边缘之和。
我已经搜索了问题的解决方案,但由于他们使用的比较结构(UnionFind(Kruskal)
和PQ(Prim)
),Kruskal和Prim的算法具有更高的复杂性。他们也找到了MST,这是不可取的,也许有更快的方法只能找到r
。
答案 0 :(得分:2)
没有。没有线性解决方案。
您可以使用disjoin-set optimizations和基数/计数排序来优化Kruskal,以便复杂度为O(E alpha(V)),其中alpha是一个非常缓慢增长的反Akermann函数。对于大多数数据集,这几乎与线性无法区分。此时,通过优化代码而不是算法,您可以在运行时获得更多。
答案 1 :(得分:2)
如果您的边是整数加权,则Ferdman和Willard在以下出版物中有一个线性算法: http://www.sciencedirect.com/science/article/pii/S0022000005800649
还有一个来自Karger,Klein和Tarjan的随机线性时间算法,使用比较模型: http://dl.acm.org/citation.cfm?doid=201019.201022
我相信在比较模型中,使用软堆的Chazelle算法是最快的确定性算法,但它不是线性的(你有一个逆Akermann开销)。