Hay dos algoritmos llamados "búsqueda de Fibonacci".
es sobre un algoritmo numérico para encontrar el máximo o mínimo de ciertas funciones. Es el algoritmo óptimo para este problema. Este problema es lo suficientemente diferente del problema de búsqueda binaria que debería ser obvio para cualquier caso dado que sea apropiado.
The other kind of Fibonacci search ataca el mismo problema que la búsqueda binaria. La búsqueda binaria es esencialmente siempre mejor. Knuth escribe que la búsqueda de Fibonacci "es preferible en algunas computadoras, porque implica solo sumas y restas, no división por 2." Pero casi todas las computadoras usan aritmética binaria, en la que la división por 2 es más simple que la suma y la resta.
(El artículo de Wikipedia afirma actualmente que Fibonacci búsqueda podría tener mejor localidad de referencia, una reclamación Knuth hace no maquillaje. Se podría, tal vez, pero esto es engañoso. Las pruebas realizadas por una búsqueda de Fibonacci están más cerca Juntos, precisamente en la medida en que son menos útiles para reducir el rango, en promedio esto daría como resultado más lecturas de más partes de la tabla, no menos. Si los registros se almacenan realmente en cinta, para que domine el tiempo de búsqueda, entonces La búsqueda de Fibonacci puede superar la búsqueda binaria —, pero en ese caso ambos algoritmos están lejos de ser óptimos.)
En lugar de ondear con la mano, sería mejor dejarnos saber las complejidades de la búsqueda de Fibonacci que faltan en el [artículo] de la Wikipedia (http: //en.wikipedia.org/wiki/Fibonacci_search) (solo hay una complejidad dada y esto es sin decir de qué tipo es: inútil * información *). –
Las diferencias son de factor constante. En la memoria de acceso aleatorio, la búsqueda binaria y la búsqueda de Fibonacci son ambas O (log n). Al buscar una cinta, ambos son O (n). –