什么是函数的大O(log n)^ 2 + logn

时间:2011-09-23 00:38:50

标签: algorithm math complexity-theory big-o logarithm

任何k的函数(log n) k 的大O复杂度是什么?

4 个答案:

答案 0 :(得分:29)

运行时形式为(log n) k 的任何函数都是O((log n) k )。这个表达式不能使用简单的转换减少到任何其他原始函数,并且看到像O(n(log n) 2 )这样的运行时的算法是相当常见的。具有此增长率的函数称为 polylogarithmic。

顺便说一下,通常(log n) k 写成log k n,所以上面的算法会有运行时O(n log 2 < / sup> n。在您的情况下,函数log 2 n + log n将为O(log 2 n)。

但是,任何具有log(n k )运行时的函数都具有运行时O(log n),假设k是常量。这是因为log(n k )= k log n使用对数标识,并且k log n是O(log n),因为k是常数。你应该注意不要盲目地断定O(log(n k ))的算法是O(log n);如果k是函数的参数或取决于n,则在这种情况下正确的big-O计算将为O(k log n)。

根据您工作的上下文,有时您会看到符号Õ(f(n))表示某些常数k的O(f(n)log k n)。这有时称为“soft-O”,用于对数项不相关的上下文中。在这种情况下,你可以说这两个函数都是Õ(1),虽然这种用法在简单的算法分析中并不常见(实际上,在维基百科之外,我已经看到它只使用了一次)。

希望这有帮助!

答案 1 :(得分:7)

(log n)^ k是:

  • O((log n)^ k)
  • 为O(n ^ k)的
  • O(n)的
  • O(n log n)
  • 为O(n ^ 1/2)
  • 为O(n ^ 0.00000002)

等。哪一个对你有意义取决于常数和上下文。

答案 2 :(得分:5)

log(n)O((log(n))^2),因此整个表达式为O((log(n))^2)

答案 3 :(得分:4)

它仍然是(log(n))^2。提升为幂的对数已经是最低/最简单的形式。