¿La base logarítmica de Big O (logn) es e?

96

Para el tipo de árbol de búsqueda binario de estructuras de datos, veo que la notación Big O generalmente se indica como O (logn). Con una 'l' minúscula en log, ¿esto implica log base e (n) como lo describe el logaritmo natural? Perdón por la pregunta simple, pero siempre he tenido problemas para distinguir entre los diferentes logaritmos implícitos.

BuckRellenoPlatypus
fuente
58
Como otros han señalado convincentemente, no importa. Todos los logaritmos se diferencian entre sí por una constante que solo depende de las bases involucradas. Debido a que estos factores son constantes, son irrelevantes a los efectos del análisis asintótico. En segundo lugar, en cuanto a determinar la base implícita, depende del contexto. Como regla general, utilice lo siguiente: 1. Cuando un matemático escribe, log nse refiere al logaritmo natural. 2. Cuando un informático escribe log nse refiere a base dos. 3. Cuando un ingeniero escribe log nse refiere a base diez. Suelen ser verdad.
jason
4
@ Jason, otra convención (dentro de las matemáticas) es que ln n significa el logaritmo natural y log n es base diez. Think ln representa el francés "logarithm naturelle".
Internet man
2
La base del logaritmo es el número de hijos que tiene cada nodo. Si es un árbol binario, entonces es un registro de base 2.
Paul
3
Agradezco tu respuesta, Jason, y aquí tienes algo en lo que pensar. Mientras investigaba en qué base está el registro (asumí 2), he visto la misma respuesta: que no importa porque puede eliminar la constante, log_10 (2). Mi problema con esto es que, por ejemplo: 5 log_10 (5) <5 mientras que 5 log_2 (5)> 5. Los ingresé rápidamente en mi cálculo para ayudar a conceptualizar dónde O (n logn) tiene un tiempo de ejecución mejor o peor que O (norte). Dependiendo de la base, SI importa. Por lo tanto, realmente creo que la respuesta CORRECTA a esto debería ser que log contextualmente significa base 2 en la mayoría de las aplicaciones informáticas.
Doug Mead
@jason, yo diría que es más fácil de usar ln (interpretación matemática);). Los otros dos ejemplos son razonables.
belford

Respuestas:

77

Una vez expresados ​​en notación O grande (), ambos son correctos. Sin embargo, durante la derivación del polinomio O (), en el caso de la búsqueda binaria , solo log 2 es correcto. Supongo que esta distinción fue la inspiración intuitiva de su pregunta para empezar.

Además, en mi opinión, escribir O (log 2 N) es mejor para su ejemplo, porque comunica mejor la derivación del tiempo de ejecución del algoritmo.

En la notación Big-O (), se eliminan los factores constantes. La conversión de una base logarítmica a otra implica multiplicar por un factor constante.

Entonces, O (log N) es equivalente a O (log 2 N) debido a un factor constante.

Sin embargo, si puede escribir fácilmente log 2 N en su respuesta, hacerlo es más pedagógico. En el caso de la búsqueda de árbol binario, tiene razón en que log 2 se introduce N durante la derivación del tiempo de ejecución big-O ().

Antes de expresar el resultado como notación O grande (), la diferencia es muy importante. Al derivar el polinomio que se comunicará a través de la notación O grande, sería incorrecto para este ejemplo utilizar un logaritmo distinto de log 2 N, antes de aplicar la notación O (). Tan pronto como el polinomio se use para comunicar un tiempo de ejecución en el peor de los casos mediante la notación big-O (), no importa qué logaritmo se use.

Heath Hunnicutt
fuente
4
Pero es muy fácil mostrar que log_2 nestá en Θ(log_a n)cualquier base a, así que no estoy seguro de ver cómo usar la base 2 es "más correcto".
bcat
1
Kinopkio y bcat, gracias por ayudarlo a ser útil. Al principio no estaba muy bien escrito. :)
Heath Hunnicutt
2
Bueno, agregué claridad, pero estoy seguro de que me duele que piense que mi respuesta podría confundir a la gente. En realidad, la mayoría de las respuestas aquí no consideraron la intuición del OP y trataron de enseñarle mucho. No estoy tan impresionado por la competencia, estoy un poco triste por el listón bajo de la pedagogía.
Heath Hunnicutt
11
"durante la derivación del polinomio O (), en el caso de la búsqueda binaria, sólo log2 es correcto". -1 para malas matemáticas. La definición de x (n) ~ O (f (n)) dice que existe una constante c tal que c * (f (n)) <x (n) para todo n> n_0. Por tanto, el coeficiente constante es completamente irrelevante durante el análisis.
rlbond
3
Dado que log2 (x) es igual a log10 (x) / log10 (2), puede derivarlo de cualquier manera. El registro no es estrictamente base 2 en ningún momento.
rlbond
80

La notación Big O no se ve afectada por la base logarítmica, porque todos los logaritmos en bases diferentes están relacionados por un factor constante , O(ln n)es equivalente a O(log n).

ingrese la descripción de la imagen aquí

Cade Roux
fuente
2
los gráficos son nítidos, pero piense en la derivación del polinomio O () ... antes de aplicar O (), solo log-base-2 es correcto para la búsqueda binaria.
Heath Hunnicutt
1
@Heath Hunnicutt: No. se log_2 xdiferencia de log_b xpor un factor constante c(b)para cualquier base bindependiente de x.
jason
4
Pero, ¿por qué estás hablando de eso, cuando no tiene relación con la pregunta y solo sirve para confundir?
hobbs
4
hobbs: Porque ese hecho es la razón por la que el OP se inspiró para investigar. Estoy tratando de conectar sus ideas con la respuesta, para que comprenda por qué tuvo su intuición, por qué no se aplica a O (), pero no para aplicar en exceso lo que aprende aquí a la parte de derivación del análisis. Las respuestas concisas que no abordan la causa raíz del malentendido pueden dar lugar a más malentendidos. Es una mala pedagogía.
Heath Hunnicutt
4
@Heath Hunnicutt: Si estás haciendo un análisis asintótico, no importa. Que esperes hasta el último minuto para lanzar algunas grandes O no cambia el hecho de que puedo multiplicar y dividir todos mis logaritmos por alguna constante tonta y cambiar la base en todos los pasos. Es decir, si tengo algún análisis que involucre log_2 n, puedo simplemente entrar y reemplazar en log_2 ntodas partes log_pi 2 * log_2 n / log_pi 2y luego terminar con un análisis que tiene en log_pi 2 * log_pi ntodas partes. Ahora mi análisis está en términos de log_pi n.
jason
9

Realmente no importa qué base sea, ya que la notación de O grande generalmente se escribe mostrando solo el orden asintóticamente más alto de n, por lo que los coeficientes constantes desaparecerán. Dado que una base logarítmica diferente es equivalente a un coeficiente constante, es superflua.

Dicho esto, probablemente asumiría log base 2.

Daniel Pryden
fuente
@Kinopiko: ¿Qué tiene de malo exactamente? Más precisamente, ¿en qué se diferencia de hecho mi respuesta de la suya y de los demás?
Daniel Pryden
Ah, quizás mi error en el uso de "coeficiente". Editaré para aclarar.
Daniel Pryden
Ese fue mi principal problema con tu respuesta. Además, no está claro a qué te refieres con "todavía tendrán algún efecto". ¿Algún efecto sobre qué?
bcat
1
Su respuesta analiza los coeficientes de orden más alto. Lo que dijiste es correcto hasta donde llega, pero esa no es la razón por la que la base del logaritmo es irrelevante. La razón es que la diferencia entre diferentes logaritmos de base es una constante que es absorbida por O ().
1
@Kinopiko: Está bien. Creo que estamos diciendo lo mismo. Yo diría O (100) = O (1) porque O (100) = O (100 * 1) = O (C * 1) = O (1). Que es lo que quise decir con expresiones constantes que son superfluas. Es decir, el orden de cualquier constante es 1.
Daniel Pryden
7

Ambos son correctos. Piensa sobre esto

log2(n)=log(n)/log(2)=O(log(n))
log10(n)=log(n)/log(10)=O(log(n))
logE(n)=log(n)/log(E)=O(log(n))
cartonn
fuente
2

Sí, cuando se habla de notación Big-O, la base no importa. Sin embargo, computacionalmente cuando se enfrenta a un problema de búsqueda real, sí importa.

Al desarrollar una intuición sobre las estructuras de los árboles, es útil comprender que un árbol de búsqueda binario se puede buscar en O (n log n) tiempo porque esa es la altura del árbol, es decir, en un árbol binario con n nodos, el árbol la profundidad es O (n log n) (base 2). Si cada nodo tiene tres hijos, el árbol todavía se puede buscar en tiempo O (n log n), pero con un logaritmo de base 3. Computacionalmente, la cantidad de hijos que tiene cada nodo puede tener un gran impacto en el rendimiento (ver, por ejemplo: texto del enlace )

¡Disfrutar!

Pablo

Pablo
fuente
Querías decir que la altura de un árbol binario es log n, no n log n, ¿verdad?
celda
1

Técnicamente, la base no importa, pero generalmente puedes pensar en ella como base-2.

Tim Sylvester
fuente
1

Primero debe comprender lo que significa que una función f (n) sea O (g (n)).

La definición formal es: * Se dice que una función f (n) es O (g (n)) sif | f (n) | <= C * | g (n) | siempre que n> k, donde C y k son constantes. *

así que sea f (n) = log base a de n, donde a> 1 y g (n) = log base b of n, donde b> 1

NOTA: Esto significa que los valores ayb pueden ser cualquier valor mayor que 1, por ejemplo, a = 100 y b = 3

Ahora obtenemos lo siguiente: log base a de n se dice que es O (log base b of n) iff | log base a of n | <= C * | base logarítmica b de n | siempre que n> k

Elija k = 0 y C = base logarítmica a de b.

Ahora nuestra ecuación se parece a la siguiente: | base logarítmica a de n | <= base logarítmica a de b * | base logarítmica b de n | siempre que n> 0

Observe el lado derecho, podemos manipular la ecuación: = base logarítmica a de b * | base logarítmica b de n | = | base logarítmica b de n | * base logarítmica a de b = | base logarítmica a de b ^ (base logarítmica b de n) | = | base logarítmica a de n |

Ahora nuestra ecuación se parece a la siguiente: | base logarítmica a de n | <= | base logarítmica a de n | siempre que n> 0

La ecuación es siempre verdadera sin importar cuáles sean los valores n, bo a, además de sus restricciones a, b> 1 y n> 0. Entonces, la base logarítmica a de n es O (base logarítmica b de n) y dado que a, b no importa, simplemente podemos omitirlos.

Puede ver un video de YouTube aquí: https://www.youtube.com/watch?v=MY-VCrQCaVw

Puede leer un artículo al respecto aquí: https://medium.com/@randerson112358/omitting-bases-in-logs-in-big-o-a619a46740ca

tempmail
fuente