¿Qué es O (log * N) y en qué se diferencia de O (log N)?
¿Qué es O (log * N) y en qué se diferencia de O (log N)?
Respuestas:
O( log* N )
es " logaritmo iterado ":
En ciencias de la computación, el logaritmo iterado de n, escrito log * n (normalmente leído "log star"), es el número de veces que la función logaritmo debe aplicarse iterativamente antes de que el resultado sea menor o igual a 1.
O( N log* N )
antes de que se mejorara O( A N )
, donde A es la función de Ackermann inversa. Todavía no entiendo la última prueba, pero el O( N log* N )
algoritmo es una lectura relativamente buena.
El log* N
bit es un algoritmo iterado que crece muy lentamente, mucho más lento que simplemente log N
. Básicamente, simplemente sigue 'registrando' iterativamente la respuesta hasta que esté por debajo de uno (por ejemplo:) log(log(log(...log(N)))
, y la cantidad de veces que tuvo que hacerlo log()
es la respuesta.
De todos modos, esta es una pregunta de cinco años en Stackoverflow, ¿pero no hay código? (!) Arreglemos eso: aquí hay implementaciones para las funciones recursivas e iterativas (ambas dan el mismo resultado):
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" , conocido como "Logaritmo iterado"
En palabras simples, puede asumir log * (n) = log (log (log (..... (log * (n))))
log * (n) es muy poderoso.
Ejemplo:
1) Log * (n) = 5 donde n = Número de átomos en el universo
2) La coloración de árboles con 3 colores se puede hacer en log * (n) mientras que la coloración de árboles con 2 colores es suficiente, pero la complejidad será O (n) entonces.
3) Encontrar la triangulación de Delaunay de un conjunto de puntos conociendo el árbol de expansión mínimo euclidiano: tiempo O (n log * n) aleatorio.
O(log* N)
Desafortunadamente, no hay respuesta .