Вы находитесь на странице: 1из 19

Estudiante: Jos Chacan

Inteligencia Artificial
El mtodo de bsqueda que da a conocer en este informe es el mtodo de
bsqueda binario que es de alta velocidad y eficiente.

Se le da el nombre de bsqueda binaria porque el algoritmo divide en dos el


arreglo, aludiendo al concepto de bit, el cual puede tener dos estados. Est
altamente recomendado para buscar en arreglos de gran tamao. La nica
condicin para usar este algoritmo es que los datos dentro del arreglo estn
ordenados de menor a mayor.
1
Bsqueda Binaria
El algoritmo de bsqueda binaria elimina, tras cada comparacin, la mitad de los elementos
del arreglo en los que se efecta la bsqueda.

Primero localiza el elemento central del arreglo y luego lo compara con la clave de
bsqueda.

Si son iguales, se ha encontrado dicha clave y se devuelve el subndice de ese elemento,


de otro modo, el problema se reduce a buscar en una mitad del arreglo.

Si la clave de bsqueda es menor que el elemento central del arreglo, se busca en la


primera mitad; de otro modo se busaca en la segunda mitad.

Si la clave de bsqueda no est en el elemento central del sub-arreglo especificado (parte


del arreglo original), se repite el algoritmo en una cuarte parte del arreglo original.

La bsqueda continua hasta que la clave de bsqueda sea igual al elemento, el cual no es
igual a la clave de bsqueda (es decir, no se encuentra la clave de bsqueda).
2 Modelo Cascada
Bsqueda Binaria
En el peor caso, la bsqueda en un arreglo de 1024 elementos solo llevara 10
comparaciones mediante la bsqueda binaria.
La divisin repetida de 1024 entre 2 (dado que tras cada comparacin se puede descartar
la mitad del arreglo) nos da los valores 512, 256, 128, 64, 32, 16, 8, 4, 2 y 1.
El numero 1024 (2^10) se divide entre dos diez veces para llegar al valor 1.

La divisin entre 2 es equivalente a una comparacin en el algoritmo de bsqueda binaria.

Un arreglo de 10488576 (2^20) elementos tarda un mximo de 20 comparaciones en


encontrar la clave de bsqueda.
Un arreglo de mil millones de elementos necesita un mximo de 30 comparaciones.
Esta es una mejora enorme en relacin con la bsqueda lineal, que requera comparar la
clave de bsqueda con un promedio de la mitad de los elementos del arreglo.
Para un arreglo de mil millones de elementos, esta diferencia es entre un promedio de 500
millones de comparaciones y un mximo de 30!
La cantidad mxima de comparaciones necesarias para la bsqueda binaria de cualquier
arreglo ordenado puede determinarse encontrando la primera potencia de 2 mayor que el
nmero de elementos del arreglo.
Ttulo y/o nombre del Ponente
FUNCIONALIDAD 1. Se declaran los ndices superior e inferior. El inferior que inicia en cero y el
DEL ALGORTMO superior con el tamao del arreglo menos 1.
DE BUSQUEDA
BINARIA
2. Se calcula el centro del arreglo con la siguiente frmula. Centro= (inferior +
superior) / 2.

3. Se verifica si el arreglo en la posicin centro es igual al dato o elemento que


se desea encontrar. Si es igual significa que encontramos el elemento y
retornamos centro.
4. Debido a que el vector se encuentra ordenado si el dato que buscamos es
mayor a la posicin central se descartan todos los datos que se encuentren en
la parte inferior, ahora la variable inicio se ubica en la posicin centro + 1 de la
misma manera si el dato que buscamos es menor que la posicin central
definida se descarta la parte superior del vector, ahora la variable final se
mover a la izquierda y se ubica en la posicin centro 1.
5. Volvemos al paso 2, hasta encontrar el dato que buscamos.

Ttulo y/o nombre del Ponente


EJERCICIO DEL ALGORITMO DE BSQUEDA
BINARIA
Se quiere buscar el 10 en el siguiente arreglo:

Se quiere buscar el 10 en el siguiente arreglo:


EJERCICIO DEL ALGORITMO DE BSQUEDA
BINARIA
Paso 1:
La bsqueda binaria busca la mitad del arreglo:
Es decir toma las posiciones inicial y final del arreglo para obtener el centro Centro
= (0 + 9)/2 Centro = 4,5 Tomamos la parte entera que seria 4.
EJERCICIO DEL ALGORITMO DE BSQUEDA
BINARIA
Ahora se realiza una comparacin del nmero 21 con el nmero buscado.
21 < 10 no 21 > 10 si
Esto quiere decir que el nmero que buscamos se encuentra al lado izquierdo del
21 y se descartan todos los elementos ubicados al lado derecho por ser mayores
que el nmero que buscamos. Ahora la variable pos_fin se ubica en la posicin
anterior 21 que sera el 15, de esta manera se define un nuevo intervalo.
Nuevamente se repite el procedimiento Centro = (0 + 3)/2 Centro = 1,5 Tomo la
parte entera que seria 1
EJERCICIO DEL ALGORITMO DE BSQUEDA
BINARIA
Ahora se realiza una comparacin del nmero 5 con el nmero buscado.
5 < 10 si 5 >10 no
Esto quiere decir que el nmero que buscamos se encuentra al lado derecho del 5
y se descartan el nmero 3 por ser menor al nmero que buscamos. Ahora la
variable pos_ini se ubica en la posicin siguiente del nmero 5 que sera el 10.
Se define un nuevo intervalo. Nuevamente se repite el mismo proceso. Centro = (2
+ 3)/2 Centro = 2,5 entonces tomamos el 2 y comparamos 10<15 si ; se descarta el
15 y la variable pos_fin se mueve a la izquierda tomando el mismo valor que pos_ini
entonces tenemos pos_ini = pos_fin.

Centro= (2 + 2)/2; esto nos da 2 que sera la posicin del nmero buscado.
EJEMPLO DE ALGORITMOS DE BUSQUEDA
BINARIA C++
La bsqueda binaria slo se puede implementar si el arreglo est ordenado. La idea
consiste en ir dividiendo el arreglo en mitades. Por ejemplo supongamos que
tenemos este vector:

int vector[10] = {2,4,6,8,10,12,14,16,18,20};


La clave que queremos buscar es 6. El algoritmo funciona de la siguiente manera.

Se determinan un ndice arriba y un ndice abajo, Iarriba=0 e Iabajo=9


respectivamente.

Se determina un ndice central, Icentro = (Iarriba + Iabajo)/2, en este caso quedara


Icentro = 4.
EJEMPLO DE ALGORITMOS DE BUSQUEDA
BINARIA C++

int vector[10] = {2,4,6,8,10,12,14,16,18,20};

Evaluamos si vector[Icentro] es igual a la clave de busqueda, si es igual ya


encontramos la clave y devolvemos Icentro.

Si son distintos, evaluamos si vector[Icentro] es mayor o menos que la clave, como


el arreglo est ordenado al hacer esto ya podemos descartar una mitad del arreglo
asegurndonos que en esa mitad no est la clave que buscamos.
En nuestro caso vector[Icentro] = 4 < 6, entonces la parte del arreglo vector[0...4] ya
puede descartarse.
EJEMPLO DE ALGORITMOS DE BUSQUEDA
BINARIA C++

int vector[10] = {2,4,6,8,10,12,14,16,18,20};

Reasignamos Iarriba o Iabajo para obtener la nueva parte del arreglo en donde
queremos buscar. Iarriba, queda igual ya que sigue siendo el tope. Iabajo lo
tenemos subir hasta 5, entonces quedara Iarriba = 9, Iabajo = 5. Y volvemos al
paso 2.
Si la clave no fuese encontrada en algun momento Iabajo > Iarriba, con un while
vamos a controlar esta condicin para salir del ciclo en tal caso y devolver -1 (clave
no encontrada).
EJEMPLO DE ALGORITMOS DE BUSQUEDA
BINARIA C++

int vector[10] = {2,4,6,8,10,12,14,16,18,20};


VENTAJAS Y DESVENTAJAS
La bsqueda binaria es un mtodo eficiente siempre y cuando el arreglo este ordenado de manera
ascendente y descendente.

La bsqueda binaria proporciona un medio para reducir al mximo el tiempo necesario para
buscar un elemento dentro de una lista de gran tamao.

Esta altamente recomendado para buscar en arreglos extremadamente extensos ya que si se


tiene un arreglo de ms 100 elementos, este en una sola iteracin desecha la mitad del
arreglo reduciendo elementos y de esta manera tiempo.

El arreglo debe estar necesariamente ordenado de manera ascendente.


PROYECTO
CONCLUSIONES
El mtodo de bsqueda binaria se encarga de examinar primero el elemento
central de la lista; si este es el elemento buscado entonces la bsqueda ha
terminado. El tipo de bsqueda binaria se utiliza en vectores ordenados.

Es por eso que luego de realizar este trabajo hemos visto como los algoritmos son
una de las herramientas ms complejas y aplicables en el rea de la informtica y el
mundo de los computadores.

Las tcnicas de desarrollo de algoritmos nos permiten encontrar la mejor solucin a


los problemas que se nos presentan y deben ser solucionados por el computador y
nuestro razonamiento, estas tcnicas estn orientadas para utilizarse en cada uno
de los niveles de complejidad y variedad o alternativas para las cuales se aplican
los algoritmos.
Bibliografa

Joyanes, L. (2013). Fundamentos de programacin, Algoritmos, estructura de


datos y objetos. Espaa: McGraw Hill
LOZANO, Letvin.(2013) Diagramacin y Programacin. Tercera Edicin.
Editorial: McGraw- Hill. Madrid, Espaa. 18, 19 pginas.
Y. Langsam, M. J. Augenstein, A. Tenenbaum. Data Structures using C and
C++ Prentice Hall, Second edition. ISBN 0-13-036997-7.
.

19

Вам также может понравиться