Algorithm Kruskal&x27的运行时间;通过改变排序时间的s算法
我在分析最小生成树,想知道排序时间会如何影响Kruskal算法的总体时间复杂度 例如:Algorithm Kruskal&x27的运行时间;通过改变排序时间的s算法,algorithm,graph,analysis,minimum-spanning-tree,kruskals-algorithm,Algorithm,Graph,Analysis,Minimum Spanning Tree,Kruskals Algorithm,我在分析最小生成树,想知道排序时间会如何影响Kruskal算法的总体时间复杂度 例如: 如果可以在O(n log n) 如果可以在O(n) 对于这两种情况,答案仍然是O(e log n),还是会改变 Kruskal算法的时间是O(e log e)它是对边缘进行排序的时间。如果你能在O(e)中做到这一点,考虑到寻找最小生成树的算法的其余部分是O(e logn),你就有了O(e)+O(e logn)。由于e=O(n^2)那么算法时间将是O(n^2 log n)或O(e log n)。如果排序采用O(
O(n log n)
O(n)
对于这两种情况,答案仍然是
O(e log n)
,还是会改变 Kruskal算法的时间是O(e log e)
它是对边缘进行排序的时间。如果你能在O(e)中做到这一点,考虑到寻找最小生成树的算法的其余部分是O(e logn),你就有了O(e)+O(e logn)
。由于e=O(n^2)
那么算法时间将是O(n^2 log n)
或O(e log n)
。如果排序采用O(e log e)进行相同的分析,则总时间将为O(e log e)
详细信息:查找最小生成树的时间由排序边所需的时间计算,然后是一个循环(e次),在该循环中,从排序列表中删除每条边,并检查它是否连接两个不相交的区域。(该检查需要O(logn))并且循环的时间将是如上所述的O(e logn)
使用更复杂的不相交集数据结构来查找和检查不相交区域,循环有O(Eα(V))时间,其中α是单值Ackermann函数的极慢增长的逆()如果使用不相交集来实现kruskal算法,复杂度将是
SortComplexity+Eα(E)
(E
是边数,alpha
是非常缓慢增长的函数(根据n
的实际值小于5)
因此,如果排序可以在O(n)
中进行,那么kruskal的复杂性将是O(Eα(E))
如果排序复杂度是
O(nloglogn)
kruskal的复杂度将是O(elogogoge)
,对于稠密图,它将是O(v^2logv)
(v
是顶点数)你应该指定什么是n,什么是e?如果你发现答案有用,请将其标记为答案并投票。@Ahmad OP只有11个代表,因此他/她无法投票。但是如果你觉得这个问题很有趣,你也可以投它一票;-)@谢谢,我已经做了。我需要一些选票来回答我的问题和答案,留下一个不公平的禁令,如果你还审查了我的问题和答案,请考虑投票。