任何k的函数(log n) k 的大O复杂度是什么?
答案 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是:
等。哪一个对你有意义取决于常数和上下文。
答案 2 :(得分:5)
log(n)
为O((log(n))^2)
,因此整个表达式为O((log(n))^2)
答案 3 :(得分:4)
它仍然是(log(n))^2
。提升为幂的对数已经是最低/最简单的形式。