algorithm - 坚持使用 O 符号

标签 algorithm big-o analysis

我正在比较两种算法,Prim 的和 Kruskal 的。

我了解时间复杂度的基本概念以及两者何时最有效(稀疏/密集图)

我在 Internet 上找到了这个,但我正在努力将其转换为英文。

dense graph:  Prim = O(N2)
              Kruskal = O(N2*log(N))

sparse graph: Prim = O(N2)
              Kruskal = O(N log(N))

这有点遥不可及,但谁能解释一下这是怎么回事?

最佳答案

Prim 是 O(N^2),其中 N 是顶点数。

Kruskal 是 O(E log E),其中 E 是边数。 “E log E”来自对边缘进行排序的良好算法。然后,您可以在线性 E 时间内处理它。

在稠密图中,E ~ N^2。所以 Kruskal 是 O( N^2 log N^2 ),也就是 O( N^2 log N )。

关于algorithm - 坚持使用 O 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1907929/

相关文章:

arrays - 寻找具有最小乘积的三个项目的 K 个组合

java - 凸/凹多边形内的所有点 - 更好的方法?

java - 如何计算动态规划(Memoization)算法的Big O

big-o - 什么是算法中的常数因子和低阶项?

big-o - n^2 log n 复杂度

algorithm - 循环迭代分析第 2 部分

compiler-construction - 实时范围与到达定义

algorithm - 在方案中制作树

algorithm - 高效整合检测结果

search - Elasticsearch:如何获取字符串字段的长度(分析前)?