我在正在阅读的有关数据结构的书中遇到了这个术语O(log* N)
。是什么log*
意思?我在 Google 上找不到它,WolframAlpha也不明白。
问问题
7181 次
4 回答
27
它被称为迭代对数函数。这是一个增长非常缓慢的功能。例如:
lg*(2) = 1
lg*(4) = 2
lg*(16) = 3
lg*(65536) = 4
lg*(2^65536) = 5
/注意 (2^65536) 远大于可观测宇宙中的原子数/
或者在 Big O 的情况下,它几乎可以被视为常数时间。
于 2010-09-26T11:46:29.587 回答
5
log* (n) - “log Star n”,即“迭代对数”
简单来说,您可以假设 log* (n)= log(log(log(.....(log* (n))))
log* (n) 非常强大。
例子:
1) Log* (n)=5 其中 n= 宇宙中的原子数
2) 使用 3 种颜色的树着色可以在 log*(n) 中完成,而着色树 2 种颜色就足够了,但复杂度将是 O(n)。
3)在知道欧几里得最小生成树的情况下找到一组点的Delaunay三角剖分:随机O(n log * n)时间。
我希望你可以在 WolframAlpha 上像这样可视化Log* (n)检查这里
于 2014-09-30T06:25:55.857 回答
2
log* 是您需要应用对数函数的次数,直到您达到小于或等于 1 的值。例如:log*(16) = 3,因为 log 2 (log 2 (log 2 (16) )) = 1。
出于实际目的,您可以将其视为常数,因为此函数增长非常缓慢。
于 2017-08-12T14:14:59.347 回答