什么是O(log * N)?

什么是O(log* N)

我知道大哦, log*是未知的。

O( log* N )是“ 迭代对数 ”:

在计算机科学中,写入的log * n(通常是“log star”)的迭代对数是对数函数在结果小于或等于1之前必须迭代应用的次数。

log* N位是一个迭代algorithm,其增长非常缓慢,比log N慢得多。 你基本上只是反复地“logging”答案,直到它低于一个(例如: log(log(log(...log(N))) ),你必须log()就是答案。

无论如何,这是一个Stackoverflow五年的问题,但没有代码?(!)让我们来解决这个 – 这是实现recursion和迭代函数(他们都给出了相同的结果):

 public double iteratedLogRecursive(double n, double b) { if (n > 1.0) { return 1.0 + iteratedLogRecursive( Math.Log(n, b),b ); } else return 0; } public int iteratedLogIterative(double n, double b) { int count=0; while (n >= 1) { n = Math.Log(n,b); count++; } return count; } 

log *(n) – “log Star n”称为“迭代对数”

简单地说,你可以假设log *(n)= log(log(log(…..(log *(n))))

日志*(n)是非常强大的。

例:

1) Log *(n)= 5其中n =宇宙中的primefaces数

2)树使用3种颜色的着色可以在log *(n)中完成,而着色树2的颜色是足够的,但是复杂度将是O(n)。

3)find知道欧几里德最小生成树的一组点的Delaunay三angular剖分:随机O(n log * n)时间。