algorithm - 如何计算 kruskal 算法的时间复杂度可能是 O(E log E) = O(E log V)。?

标签 algorithm sorting time-complexity

请告诉我如何计算克鲁斯卡尔定理的时间复杂度的程序? 我知道Kruskal算法的算法但不知道时间复杂度的伪代码和计算......Kruskal算法的复杂度是O(E log E)= O(E log V)(维基百科)。但我不知道如何计算..

最佳答案

Kruskal 算法基于森林的联合查找,直到它们形成一棵树。在每一步中,您都使用一条边连接两棵树。
伪代码(来自wikipedia):

tree = {}
for each v:
   make-set(v)
for each edge (u,v) ordered by w(u,v):
   if find(u) != find(v):
        tree.add((u,v))
        union(u,v)
return tree

该算法的瓶颈是根据权重对边进行排序。排序最多在 O(nlogn) 中完成,我们正在对大小为 E 的列表进行排序,总共有 O(ElogE)=O(Elog (V^2))=O(2ElogV)=O(ElogV)

关于algorithm - 如何计算 kruskal 算法的时间复杂度可能是 O(E log E) = O(E log V)。?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23057376/

相关文章:

java - 为什么 Comparator 应该实现 Serializable?

c++ - 维护一个对象容器,该容器按该对象的成员与其邻居的成员之间的差异排序

algorithm - 一个算法怎么会有两个最坏情况的复杂度?

algorithm - 解决所述复发的方法?

javascript - slider /引脚算法

algorithm - 给定点集的最小面积三角形

arrays - 给定 "source code"字符串列表,如何创建数组组合字符串?

python - Python sort() 时间复杂度如何随非 O(1) 复杂度的 lambda 函数变化?

C++ - 读取 1000 个 float 并通过仅保留最低的 10 个数字将它们插入大小为 10 的 vector 中

algorithm - 以下代码 : 的总运行时间是多少