¿Por qué el registro en el big-O de búsqueda binaria no es base 2?

35

Soy nuevo en la comprensión de algoritmos informáticos. Entiendo el proceso de la búsqueda binaria, pero estoy teniendo un ligero malentendido con su eficiencia.

En un tamaño de elementos, tomaría, en promedio, pasos para encontrar un elemento en particular. Tomar el logaritmo de base 2 de ambos lados produce . Entonces, ¿no sería el número promedio de pasos para el algoritmo de búsqueda binaria ?s=2nnlog2(s)=nlog2(s)

Este artículo de Wikipedia sobre el algoritmo de búsqueda binaria dice que el rendimiento promedio es . ¿Por qué esto es tan? ¿Por qué no es este número ?O(logn)log2(n)

Dr Pepper
fuente
2
Duplicar en SO: ¿es Big O (logn) log base e?
Dukeling

Respuestas:

86

Cuando cambia la base del logaritmo, la expresión resultante difiere solo por un factor constante que, por definición de la notación Big-O , implica que ambas funciones pertenecen a la misma clase con respecto a su comportamiento asintótico.

Por ejemplo donde .

log10n=log2nlog210=Clog2n
C=1log210

Entonces y difiere en una constante , y por lo tanto ambos son verdaderos: En general, es para enteros positivos y mayores que 1.log10nlog2nC

log10n is O(log2n)
log2n is O(log10n)
loganO(logbn)ab

Otro hecho interesante con las funciones logarítmicas es que, mientras que para la constante , NO es , pero es ya que que difiere de solo por el factor constante .k>1nkO(n)lognkO(logn)lognk=klognlognk

fade2black
fuente
No solo para enteros positivos: para todos los reales , p . Ej .a,b>1e
nbubis
2
Agregaría que esta es la razón por la cual con la notación big-O, la base del logaritmo generalmente no se especifica. También significa que no hay confusión sobre qué base usa : puede ser cualquiera de los basados ​​comúnmente utilizados, ya que no hace una diferencia. O(logn)
svick
9

Además de la respuesta de fade2black (que es completamente correcta), vale la pena señalar que la notación " " es ambigua. La base no se especifica realmente, y la base predeterminada cambia según el contexto. En matemáticas puras, casi siempre se supone que la base es (a menos que se especifique), mientras que en ciertos contextos de ingeniería podría ser 10. En informática, la base 2 es tan omnipresente que frecuentemente se asume que es base 2. Esa wikipedia El artículo nunca dice nada sobre la base.log(n)elog

Pero, como ya se ha demostrado, en este caso no termina importando.

MattPutnam
fuente
77
Probablemente valga la pena señalar que, si bien "log (n)" puede ser ambiguo, "O (log (n))" no se debe a que este último solo tenga un significado, sin importar en qué base esté pensando.
Chris