Busqueda Binaria
Busqueda Binaria
Busqueda Binaria
Ir a la navegaci�nIr a la b�squeda
En ciencias de la computaci�n y matem�ticas, la b�squeda binaria, tambi�n conocida
como b�squeda de intervalo medio1? o b�squeda logar�tmica,2? es un algoritmo de
b�squeda que encuentra la posici�n de un valor en un array ordenado.3?4? Compara el
valor con el elemento en el medio del array, si no son iguales, la mitad en la cual
el valor no puede estar es eliminada y la b�squeda contin�a en la mitad restante
hasta que el valor se encuentre.
�ndice
1 Algoritmo
1.1 Procedimiento
1.2 Coincidencias aproximadas
2 Rendimiento
3 Comparaci�n de la b�squeda binaria con otros esquemas
3.1 Hashing
3.2 �rboles
3.3 B�squeda lineal
3.4 Aproximaciones mixtas
3.5 Algoritmos de clasificaci�n
3.6 Otras estructuras de datos
4 Variaciones
4.1 B�squeda binaria uniforme
4.2 B�squeda Fibonacci
4.3 B�squeda exponencial
4.4 B�squeda de interpolaci�n
4.5 Cascada fraccional
5 Historia
6 Problemas de implementaci�n
7 Soporte de biblioteca
8 V�ase tambi�n
9 Notas y referencias
9.1 Notas y citas
9.2 Trabajos
10 Enlaces externos
Algoritmo
La b�squeda binaria funciona en arreglos ordenados. La b�squeda binaria comienza
por comparar el elemento del medio del arreglo con el valor buscado. Si el valor
buscado es igual al elemento del medio, su posici�n en el arreglo es retornada. Si
el valor buscado es menor o mayor que el elemento del medio, la b�squeda continua
en la primera o segunda mitad, respectivamente, dejando la otra mitad fuera de
consideraci�n.
Procedimiento
Dado un arreglo A de n elementos con valores A0 ... An-1, ordenados tal que A0
= ... = An-1, y un valor buscado T, el siguiente procedimiento usa b�squeda binaria
para encontrar el �ndice de T en A.
Asignar 0 a L y a R (n - 1).
Si L > R, la b�squeda termina sin encontrar el valor.
Sea m (la posici�n del elemento del medio) igual a la parte entera de (L + R)?/?2.
Si Am < T, igualar L a m + 1 e ir al paso 2.
Si Am > T, igualar R a m � 1 e ir al paso 2.
Si Am = T, la b�squeda termin�, retornar m.
Este procedimiento iterativo mantiene los l�mites de la b�squeda mediante dos
variables. Algunas implementaciones realizan la comparaci�n de igualdad al final
del algoritmo, como resultando se obtiene un ciclo m�s r�pido de comparaciones pero
se aumenta en uno la cantidad de iteraciones promedio.6?
Coincidencias aproximadas
El procedimiento anterior solo realiza coincidencias exactas, encontrando la
posici�n del valor buscado. Sin embargo, dado el orden natural de los arreglos
ordenados, es trivial extender la b�squeda binaria para realizar coincidencias
aproximadas. Por ejemplo, la b�squeda binaria puede ser usada para computar, para
un valor dado, su rank(el n�mero de elementos menores), antecesor(pr�ximo elemento
menor), sucesor(pr�ximo elemento mayor), y vecinos cercanos. Las consultas en
intervalos, como por ejemplo, buscar el n�mero de elementos entre dos n�meros
pueden ser computadas con dos preguntas de rank.
Las consultas de rank pueden ser realizadas usando una modificaci�n de la b�squeda
binaria, retornando m en las b�squedas donde se encuentre el elemento, y L en donde
no se encuentre, correspondiendo este �ltimo al n�mero de elementos menores que el
valor buscado.
Las consultas de antecesor y sucesor pueden ser computadas con preguntas de rank
tambi�n. Una vez que el rank del valor buscado es conocido, su antecesor es el
elemento en la posici�n dado por su rank(el elemento mayor que es menor que el
valor buscado). Su sucesor es el elemento despu�s del (si �l est� presente en el
arreglo) o en la posici�n siguiente al antecesor (en otro caso). El vecino m�s
cercano del valor buscado es su antecesor o su sucesor, de los dos el m�s cercano.
Las consultas de rango son tambi�n f�ciles de manipular. Una vez que los rank de
ambos valores son conocidos, el n�mero de elementos mayores o iguales al primer
valor y menores que el segundo es la diferencia de los dos ranks. Esta cantidad
puede disminuir o aumentar de acuerdo si los extremos del intervalo deben ser
considerados parte de la pregunta en cuesti�n y cuando el arreglo contenga llaves
que coincidan con los extremos.
Rendimiento
Como promedio, asumiendo que cada elemento es igualmente probable de ser buscado,
despu�s que la b�squeda termine, el valor buscado ser� m�s probable de ser
encontrado en el segundo nivel del �rbol. Esto es equivalente a una b�squeda
binaria que completa una iteraci�n antes del peor de los casos, alcanz�ndola
despu�s de {\displaystyle \log _{2}n-1}{\displaystyle \log _{2}n-1}iteraciones. Sin
embargo, el �rbol puede estar no balanceado, con el nivel m�s profundo parcialmente
completo, y equivalentemente, el arreglo puede no estar dividido perfectamente por
la b�squeda en algunas iteraciones, resultando que en la mitad de las veces el
menor subarreglo es eliminado. El promedio actual del n�mero de iteraciones es
ligeramente mayor {\displaystyle {\bigl (}\log _{2}n-{\frac {n-\log _{2}n-1}{n}}
{\bigr )}}{\displaystyle {\bigl (}\log _{2}n-{\frac {n-\log _{2}n-1}{n}}
{\bigr )}}.7? En el mejor de los casos, donde el elemento del medio del arreglo es
igual al valor buscado, su posici�n es retornada despu�s de una iteraci�n. En
t�rminos de iteraci�n, ning�n algoritmo basado solamente en comparaciones puede
exhibir mejores promedios en su n�mero de iteraciones que la b�squeda binaria.
Cascada fraccional puede ser usada para acelerar la b�squeda del mismo valor en
m�ltiples arreglos. Se requiere {\displaystyle O(k\log n)}{\displaystyle O(k\log
n)} para buscar en cada arreglo el elemento seleccionado, cascada fraacional lo
reduce a {\displaystyle O(k+\log n)}{\displaystyle O(k+\log n)}, donde k es el
n�mero de arreglos.10?
Hashing
Para implementar arreglos asociativos, tablas hash, una estructura que mapea llaves
contra valores usando una funci�n de hash, son generalmente m�s r�pidas que la
b�squeda binaria en arreglos ordenados de valores; la mayor�a de las
implementaciones requiere como promedio un tiempo amortizado constante. Sin
embargo, hashing no es muy �til para comparaciones aproximadas, tales como
antecesor, sucesor, y vecino m�s cercano, dado que la informaci�n que nos presenta
en la b�squeda es si el valor est� presente o no. La b�squeda binaria es ideal para
este tipo de comparaciones, realiz�ndolas en tiempo logar�tmico.11?
�rboles
Un �rbol binario de b�squeda es una estructura de datos que funciona basado en el
principio de la b�squeda binaria: los valores del �rbol est�n colocados en forma
ordenada, y el recorrido del �rbol es realizado usando un algoritmo muy parecido a
la b�squeda binaria. La inserci�n y eliminaci�n requieren al igual que el recorrido
un tiempo logar�tmico. Este costo es mucho mejor que el costo lineal de la
inserci�n y eliminaci�n en los arreglos ordenados, y los �rboles de b�squeda
binaria poseen la habilidad de realizar todas las operaciones posibles en los
arreglos ordenados, incluyendo consultas en rangos y comparaciones aproximadas.
B�squeda lineal
La b�squeda lineal es un simple algoritmo de b�squeda que comprueba cada elemento
hasta que encuentre el valor buscado. La b�squeda lineal puede ser implementada en
una lista enlazada, que nos permite inserciones y eliminaciones m�s eficientes que
un arreglo. La b�squeda binaria es m�s eficiente que la b�squeda lineal en los
arreglos ordenados, exceptuando los arreglos que contenga pocos elementos. Si el
arreglo debe ser ordenado primero, ese costo debe ser amortizado sobre cualquier
b�squeda. Ordenar el arreglo tambi�n nos permite comparaciones aproximadas m�s
eficientes, entre otras operaciones.
Aproximaciones mixtas
El arreglo de Judy usa un conjunto de ideas para lograr una soluci�n m�s eficiente.
Algoritmos de clasificaci�n
Un problema relacionado con la b�squeda es la clasificaci�n. Cualquier algoritmo
que realice b�squedas, como la b�squeda binaria, puede ser usado para clasificar
tambi�n. Existen otros algoritmos m�s espec�ficos para la clasificaci�n, un arreglo
de bit es el m�s simple, usado cuando el rango de los elementos es limitado, es muy
r�pido ya que requiere un tiempo constante.
Variaciones
B�squeda binaria uniforme
La b�squeda binaria uniforme guarda el �ndice del elemento del medio y el n�mero de
elementos alrededor del elemento del medio que no hemos eliminado todav�a. Cada
paso reduce el tama�o del arreglo aproximadamente en la mitad. Esta variaci�n es
uniforme porque la diferencia entre los �ndices de los elementos del medio y el
elemento escogido en la iteraci�n anterior permanece constante para arreglos del
mismo tama�o.
B�squeda Fibonacci
B�squeda exponencial
La b�squeda exponencial es un algoritmo para buscar principalmente en listas
infinitas, pero puede ser aplicada para seleccionar el l�mite superior de la
b�squeda binaria. Comienza encontrando el primer elemento que cumple que es una
potencia de dos y mayor que el valor buscado, despu�s, fija este �ndice como el
l�mite superior de la b�squeda binaria, y cambia hacia la b�squeda binaria. La
b�squeda realiza {\displaystyle \lfloor \log _{2}x+1\rfloor }{\displaystyle \lfloor
\log _{2}x+1\rfloor }iteraciones de la b�squeda exponencial y a lo sumo
{\displaystyle \lfloor \log _{2}x\rfloor }{\displaystyle \lfloor \log
_{2}x\rfloor }iteraciones de la b�squeda binaria, donde {\displaystyle x}x es la
posici�n del valor buscado. Solamente si el valor buscado est� cerca del principio
del arreglo es que esta variaci�n es m�s eficiente que seleccionar el mayor
elemento como el l�mite superior.
B�squeda de interpolaci�n
Al contrario de la b�squeda binaria, la b�squeda de interpolaci�n no calcula el
punto medio sino que realiza varios intentos en busca del valor requerido, tomando
en cuenta el menor y mayor elemento del arreglo as� como su longitud. Este
procedimiento es solamente posible si los elementos del arreglo son n�meros. Se
basa en la hip�tesis de que el elemento del medio no es la mejor opci�n en muchos
casos; por ejemplo, si el elemento buscado esta pr�ximo al mayor elemento del
arreglo, es muy probable que este ubicado en el final del arreglo. Cuando la
distribuci�n de los elementos en el arreglo es uniforme o cercanamente, se realizan
{\displaystyle O{\bigl (}\log \log n{\bigr )}}{\displaystyle O{\bigl (}\log \log
n{\bigr )}}comparaciones.15?
Cascada fraccional
Cascada fraccionaria es una t�cnica que acelera la b�squeda binaria del mismo
elemento en arreglos ordenados. La b�squeda en cada arreglo toma {\displaystyle
O{\bigl (}k\log n{\bigr )}}{\displaystyle O{\bigl (}k\log n{\bigr )}}, donde
{\displaystyle k}k es el n�mero de arreglos. Cascada fraccionaria reduce este costo
a {\displaystyle O{\bigl (}k+\log n{\bigr )}}{\displaystyle O{\bigl (}k+\log
n{\bigr )}}almacenando informaci�n espec�fica en cada arreglo acerca de los otros
arreglos.10?
Historia
En 1946, John Mauchly mencion� por primera vez la b�squeda binaria como parte de
Moore School Lectures, el primer conjunto de conferencias relacionado con las
computadoras. Las siguientes publicaciones mencionaban que la b�squeda binaria solo
funcionaba en arreglos cuya longitud fuese de uno menos que una potencia de dos
hasta 1960, cuando Derrick Henry Lehmer p�blico un algoritmo de b�squeda binaria
que funcionaba en todos los arreglos ordenados. En 1962, Hermann Bottenbruch
present� en ALGOL 60 una implementaci�n del algoritmo de b�squeda binaria en el
cual colocaba la comparaci�n de igualdad en el final del algoritmo, incrementando
el n�mero promedio de iteraciones por uno, pero reduciendo a uno el n�mero de
comparaciones por iteraci�n. La b�squeda binaria uniforme fue presentada a Donald
Knuth en 1971 por A. K. Chandra de la universidad de Stanford y publicado en el
libro de Knuth: The Art of Computer Programming. En 1986, Bernard Chazelle y
Leonidas J. Guibas introdujeron cascada fraccional, una t�cnica usada para acelerar
la b�squeda binaria en m�ltiples arreglos.10?16?17?
Problemas de implementaci�n
A pesar de que la idea b�sica de b�squeda binaria es realtivamente sencilla, los
detalles pueden ser sorprendentemente complicados...�Donald Knuth [2]
Un bucle infinito puede ocurrir si las condiciones de salida para el bucle no est�n
definidas correctamente. Una vez L supera R, la b�squeda ha fallado y debe
transmitir el fracaso de la b�squeda. Adem�s, el bucle debe salir cuando se
encuentra el elemento de destino, o en el caso de una implementaci�n donde este
control se mueve al final, comprueba si la b�squeda tuvo �xito o fall� al final
debe estar en su lugar. Bentley encontr� que, en su asignaci�n de b�squeda binaria,
este error fue realizado por la mayor�a de los programadores que no implementaron
correctamente una b�squeda binaria. 6?
Soporte de biblioteca
Las bibliotecas est�ndar de muchos lenguajes de programaci�n incluyen
implementaciones de la b�squeda binaria:
En otros idiomas
???????
Deutsch
English
Fran�ais
??????
Bahasa Indonesia
Portugu�s
???????
??
31 m�s
Editar enlaces
Esta p�gina se edit� por �ltima vez el 30 ago 2019 a las 11:16.
El texto est� disponible bajo la Licencia Creative Commons Atribuci�n Compartir
Igual 3.0; pueden aplicarse cl�usulas adicionales. Al usar este sitio, usted acepta
nuestros t�rminos de uso y nuestra pol�tica de privacidad.
Wikipedia� es una marca registrada de la Fundaci�n Wikimedia, Inc., una
organizaci�n sin �nimo de lucro.
Pol�tica de privacidadAcerca de WikipediaLimitaci�n de
responsabilidadDesarrolladoresDeclaraci�n de cookiesVersi�n para m�vilesWikimedia
FoundationPowered by MediaWiki