¿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* Nbit 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 .