La búsqueda de interpolación es una modificación de la búsqueda binaria, donde se utiliza información adicional sobre los datos para lograr una mejor complejidad temporal.
Suponga que está buscando una clave en el rango [bajo, alto] en una matriz arr .
En cada paso recursivo, la búsqueda binaria compara la clave con el elemento central del rango en el que se está buscando.
medio = (alto + bajo) / 2
Pero alguna vez te has preguntado por qué el elemento intermedio.
¿Qué pasaría si tuviéramos una mejor estimación de la ubicación de la clave?
La búsqueda de interpolación utiliza los valores de arr [bajo] y arr [alto] para estimar la posición de la clave.
Suponiendo una distribución lineal de claves en la matriz.
- ¿Cuál es la diferencia entre una llamada al sistema y un núcleo?
- ¿Está muriendo el aprendizaje automático?
- ¿Por qué CSE en IIT Bombay es la mejor opción sobre CSE en IIT Kanpur?
- ¿Quién influye más en los estudiantes técnicos, Bill Gates o Steve Jobs?
- ¿Cuáles son algunas de las mejores prácticas para escribir paquetes de software específicamente para aplicaciones científicas y aprendizaje automático? ¿Serían relevantes las mismas prácticas utilizadas en el desarrollo de software ágil?
mid = low + ((tecla - arr [low]) * (high - low)) / (arr [high] - arr [low])
Actuación
Si no hacemos suposiciones sobre la distribución de claves en arr, la búsqueda de interpolación es O (N) para una matriz de tamaño N, ya que la matriz puede tener una distribución exponencial de claves. Sin embargo, si las claves están en una distribución uniforme, la búsqueda de interpolación es O (log log N) .
Como la mayoría de la informática, la búsqueda por interpolación implica una compensación. Aumentamos la cantidad de cómputo involucrado en cada paso con la esperanza de disminuir el número de pasos.
Esto puede ser útil cuando el acceso a datos es costoso, por ejemplo, cuando tiene una matriz ordenada no indexada en un disco y debe encontrar una clave.
Y por último el punto más importante. Si bien la mayoría de los recursos que puede encontrar explican la búsqueda de interpolación, suponiendo una distribución uniforme, no es necesaria. ¡La idea de la búsqueda de interpolación es mucho más poderosa que eso!
Como ejemplo, si sabe que la distribución de claves es exponencial, puede calcular el medio como
mid = low + ((clave - log (arr [low])) * (high - low)) / (log (arr [high]) - log (arr [low]))