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 ?
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 ?
algorithms
runtime-analysis
binary-search
Dr Pepper
fuente
fuente
Respuestas:
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 .
Entonces y difiere en una constante , y por lo tanto ambos son verdaderos: En general, es para enteros positivos y mayores que 1.log10n log2n C
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>1 nk O(n) lognk O(logn) lognk=klogn logn k
fuente
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) e log
Pero, como ya se ha demostrado, en este caso no termina importando.
fuente