ıllı Internet y Tecnologías de la Información (2018)

internet, Hosting, dominios, seo, antivirus, banco de imágenes, páginas web, tiendas online

[Enciclopedia Online Gratuita] Diccionario de Internet y Tecnologías de la Información y la Comunicación (TIC):

ıllı Búsqueda exponencial wiki: info, historia y vídeos

videos internet

salud  Búsqueda exponencial 


En Ciencias de la Computación, una busca exponencial (asimismo llamado busca galopante o bien busca Struzik) es un algoritmo, creado por Jon Bentley y Andrew Chi-Chih Yao en mil novecientos setenta y seis, para buscar en listas infinitas/no delimitadas ordenadas. Hay numerosas formas para incorporarlo siendo la más frecuente determinar el rango en que la llave de busca radica y efectuar una busca binaria en dicho rango. Esto demora O(log i) dónde i es la situación de la llave de busca en la lista, si la llave de busca está en la lista, o bien la situación donde la llave de busca habría de estar, si la llave de busca no está en la lista.


La busca exponencial asimismo puede ser utilizada en listas delimitadas. La busca exponencial puede aun prosperar los tiempos de algoritmos de busca en listas delimitadas, como busca binaria, cuando el factor buscado está cerca del principio del array. Esto es pues la busca exponencial va a correr en O(log i), donde i es el índice del elemento buscado en la lista, al paso que la busca binaria correría en O(log n), donde n es el número de elementos en la lista.


La busca exponencial deja buscar por medio de una lista no delimitada ordenada para un valor de entrada concretado (la llave de busca). El algoritmo consiste en 2 etapas. La primera etapa determina un rango en el que la llave de busca radicaría si estuviera en la lista. En la segunda etapa, se efectúa una busca binaria en ese rango. En la primera etapa, suponiendo que la lista está ordenada en orden ascendiente, el algoritmo busca el primer exponente j, donde el valor 2j es más grande que la llave de busca. Este valor, 2jse transforma en el tope superior para la busca binaria con el poder precedente de dos, 2j-1, siendo el límite inferior para la busca binaria.

// Devuelve la situación de la llave key en el array arr de tamaño size.template<typenameT>intexponential_search(Tarrintsize,Tkey)

En cada paso, el algoritmo equipara la llave de busca con el valor en el índice de la busca actual. Si el factor en el índice actual es más pequeño que la llave de busca, el algoritmo vuelve a ejecutarse, saltándose el próximo índice de busca doblándolo, calculando la próxima potencia de dos. Si el factor en el índice actual es mayor que la llave de busca, el algoritmo ahora sabe que la llave de busca, si está contenido en la lista en lo más mínimo, está localizado en el intervalo formado por el índice de busca precedente, 2j-1, y el índice de busca actual, 2j. La busca binaria se ejecuta entonces con el resultado de un descalabro, si la llave de busca no está en la lista, o bien la situación de la llave de busca en la lista.


La primera etapa del algoritmo demora O(log i), donde i es el índice donde la llave de busca estaría en la lista. Esto es pues, para determinar el límite superior para la busca binaria, el bucle se ejecuta precisamente ?log?i? veces. Como la lista está ordenada, tras plegar el índice de busca ?log?i? veces, el algoritmo va a estar en un índice de busca que es más grande que o bien igual que i cuando 2?log?(i)?=i. De esta manera, la primera etapa del algoritmo demora O(log i).


La segunda una parte del algoritmo asimismo demora O(log i). Cuando la segunda etapa es simplemente una busca binaria, demora O(log n) donde n es el tamaño del intervalo donde se efectuó la busca. El tamaño de este intervalo sería 2j-2j-1 donde, como se vio ya antes, j = log i. Esto quiere decir que el tamaño del intervalo siendo explorado es 2log?i-2log?i-1=2log?i-1. Esto nos da un tiempo de ejecución de log?(2logi-1)=log?i-1=O(log?i).


Esto le da al algoritmo un tiempo de ejecución total, calculado sumando los tiempos de las 2 etapas, deO(log?i)+O(log?i)=2O(log?i)=O(log?i).


Bentley y Yao sugirieron alteraciones para el algoritmo de busca exponencial. Estas alteraciones constan de ejecutar una busca binaria, en oposición a la busca unaria, al determinar el límite superior para la busca binaria en la segunda etapa del algoritmo. Esto divide la primera etapa del algoritmo a 2 partes, haciendo el algoritmo un algoritmo de 3 etapas generalmente. La primera etapa nueva determina un valor j', justo como anteriormente, tal que 2j' es mayor que la llave de busca y 2j'/2 es menor que la llave de busca. Previamente, j' se determinaba de una manera unario calculando la potencia siguiente de dos (i.e., agregando 1 a j). En la alteración, se plantea que j' se doble en cambio (p. ej., saltando de 22 a 24 en lugar de 23). El primer j' tal que 2j'es mayor que la llave de busca conforma un límite superior considerablemente más aproximado que ya antes. Cuando este j' sea encontrado, el algoritmo se mueve a su segunda etapa y una busca binaria se ejecuta en el intervalo formado por j'/2 y j', devolviendo el límite superior más preciso el exponente j. De ahí, la tercera etapa del algoritmo ejecuta la busca binaria en el intervalo 2j-1 y 2j, como anteriormente. El desempeño de esta alteración es ?log?i?+2?log?(?log?i?+1)?+1=O(log?i)


Bentley y Yao generalizan esta alteración a una donde cualquier número, k, de las buscas binarias se ejecuta a lo largo de la primera etapa del algoritmo, dando la k-anidada alteración de busca binaria.La ejecución asintótica no cambia para las alteraciones, corriendo en O(log i), como con el algoritmo de busca exponencial original.


También, una estructura de datos con una versión estricta de la propiedad de dedo activa puede ser dada cuando el resultado precedente de la busca binaria k-anidada se emplea en un array ordenado. Utilizando esta alteración, el número de las comparaciones hechas a lo largo de una busca es log?d+log?log?d+...+O(log*d), donde d es la diferencia en rango entre el último elemento que fue accedido y el factor actual siendo accedido.


  ELIGE TU TEMA DE INTERÉS: 


autoayuda.es   Internet y Tecnologias 

Está aquí: Inicio > [ INTERNET ] > ıllı Búsqueda exponencial wiki: info, historia y vídeos

Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Ver políticas