Algoritmos de Busqueda

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 11

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO.

FACULTAD DE INGENIERIA.

ESTRUCTURAS DE DATOS Y ALGORITMOS II.

Contenido
Unidad 2. Algoritmos de Búsqueda. ................................................................................... 2
BÚSQUEDA EN LISTAS. ............................................................................................ 2
Búsqueda Secuencial o Lineal. ........................................................................................... 3
Mejoras en la eficiencia de la búsqueda lineal ............................................................... 4
Complejidad de la búsqueda secuencial ......................................................................... 5
Búsqueda Binaria. ............................................................................................................... 6
Algoritmo de Búsqueda Binaria: ........................................................................................ 7

1
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO.

FACULTAD DE INGENIERIA.

ESTRUCTURAS DE DATOS Y ALGORITMOS II.

Unidad 2. Algoritmos de Búsqueda.

BÚSQUEDA EN LISTAS.
Con mucha frecuencia los programadores trabajan con grandes cantidades de
datos almacenados en arrays y registros, y por ello será necesario determinar si un
array contiene un valor que coincida con un cierto valor clave. El proceso de
encontrar un elemento específico de un array se denomina búsqueda. En esta
sección se examinarán dos técnicas de búsqueda: búsqueda lineal o secuencial, la
técnica más sencilla, y búsqueda binaria o dicotómica, la técnica más eficiente.

Los algoritmos de búsqueda están diseñados para verificar un elemento o recuperar


un elemento de cualquier estructura de datos donde esté almacenado.

Búsqueda secuencial: en esto, la lista o matriz se recorre secuencialmente y se


verifica cada elemento. Por ejemplo: Búsqueda lineal.

Búsqueda de intervalo: estos algoritmos están diseñados específicamente para


buscar en estructuras de datos ordenadas. Este tipo de algoritmos de búsqueda son
mucho más eficientes que la búsqueda lineal, ya que apuntan repetidamente al
centro de la estructura de búsqueda y dividen el espacio de búsqueda por la mitad.
Por ejemplo: búsqueda binaria.

2
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO.

FACULTAD DE INGENIERIA.

ESTRUCTURAS DE DATOS Y ALGORITMOS II.

Búsqueda Secuencial o Lineal.


La búsqueda secuencial busca un elemento de una lista utilizando un valor destino
llamado clave. En una búsqueda secuencial (a veces llamada búsqueda lineal), los
elementos de una lista o vector se exploran (se examinan) en secuencia, uno
después de otro.
La búsqueda es el proceso de localizar un registro (elemento) con un valor de llave
particular. La búsqueda termina exitosamente cuando se localiza el registro que
contenga la llave buscada, o termina sin éxito, cuando se determina que no aparece
ningún registro con esa llave. Búsqueda lineal, también se le conoce como
búsqueda secuencial. Supongamos una colección de registros organizados como
una lista lineal. El algoritmo básico de búsqueda lineal consiste en empezar al inicio
de la lista e ir a través de cada registro hasta encontrar la llave indicada (k), o hasta
al final de la lista. Posteriormente hay que comprobar si ha habido éxito en la
búsqueda.
Es el método más sencillo en estructuras lineales. En estructuras ordenadas el
proceso se optimiza, ya que al llegar a un dato con número de orden mayor que el
buscado, no hace falta seguir. La situación óptima es que el registro buscado sea el
primero en ser examinado. El peor caso es cuando las llaves de todos los n registros
son comparados con k (lo que se busca). El caso promedio es n/2 comparaciones.
Este método de búsqueda es muy lento, pero si los datos no están en orden es el
único método que puede emplearse para hacer las búsquedas. Si los valores de la
llave no son únicos, para encontrar todos los registros con una llave particular, se
requiere buscar en toda la lista.

3
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO.

FACULTAD DE INGENIERIA.

ESTRUCTURAS DE DATOS Y ALGORITMOS II.

Mejoras en la eficiencia de la búsqueda lineal


1) Muestreo de acceso
Este método consiste en observar que tan frecuentemente se solicita cada registro
y ordenarlos de acuerdo a las probabilidades de acceso detectadas.

2) Movimiento hacia el frente


Este esquema consiste en que la lista de registros se reorganicen dinámicamente.
Con este método, cada vez que la búsqueda de una llave sea exitosa, el registro
correspondiente se mueve a la primera posición de la lista y se recorren una
posición hacia abajo los que estaban antes que él.

3) Transposición
Este es otro esquema de reorganización dinámica que consiste en que, cada vez
que se lleve a cabo una búsqueda exitosa, el registro correspondiente se
intercambia con el anterior. Con este procedimiento, entre más accesos tenga el
registro, más rápidamente avanzará hacia la primera posición. Comparado con el
método de movimiento al frente, el método requiere más tiempo de actividad para
reorganizar al conjunto de registros. Una ventaja de método de transposición es que
no permite que el requerimiento aislado de un registro, cambie de posición todo el
conjunto de registros. De hecho, un registro debe ganar poco a poco su derecho a
alcanzar el inicio de la lista.

4
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO.

FACULTAD DE INGENIERIA.

ESTRUCTURAS DE DATOS Y ALGORITMOS II.

4) Ordenamiento
Una forma de reducir el número de comparaciones esperadas cuando hay una
significativa frecuencia de búsqueda sin éxito es la de ordenar los registros en base
al valor de la llave. Esta técnica es útil cuando la lista es una lista de excepciones,
tales como una lista de decisiones, en cuyo caso la mayoría de las búsquedas no
tendrán éxito. Con este método una búsqueda sin éxito termina cuando se
encuentra el primer valor de la llave mayor que el buscado, en lugar de la final de la
lista.

Complejidad de la búsqueda secuencial


La complejidad de la búsqueda secuencial diferencia entre el comportamiento en el
caso peor y mejor. El mejor caso se encuentra cuando aparece una coincidencia en
el primer elemento de la lista y en ese caso el tiempo de ejecución es O(1). El caso
peor se produce cuando el elemento no está en la lista o se encuentra al final de la
lista. Esto requiere buscar en todos los n términos, lo que implica una complejidad
de O(n).
El caso medio requiere un poco de razonamiento probabilista. Para el caso de una
lista aleatoria es probable que una coincidencia ocurra en cualquier posición.
Después de la ejecución de un número grande de búsquedas, la posición media
para una coincidencia es el elemento central n/2. El elemento central ocurre
después de n/2 comparaciones, que define el coste esperado de la búsqueda.
Por esta razón, se dice que la prestación media de la búsqueda secuencial es O(n).

5
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO.

FACULTAD DE INGENIERIA.

ESTRUCTURAS DE DATOS Y ALGORITMOS II.

Búsqueda Binaria.
Una idea similar se aplica en la búsqueda en una lista ordenada. Se sitúa la lectura
en el centro de la lista y se comprueba si la clave coincide con el valor del elemento
central. Si no se encuentra el valor de la clave, se sigue la búsqueda uno en la mitad
inferior o superior del elemento central de la lista. En general, si los datos de la lista
están ordenados se puede utilizar esa información para acortar el tiempo de
búsqueda.
¿Podemos hacer algo mejor? Trataremos de aprovechar el hecho de que la lista
está ordenada y vamos a hacer algo distinto: nuestro espacio de búsqueda se irá
achicando a segmentos cada vez menores de la lista original. La idea es descartar
segmentos de la lista donde el valor seguro que no puede estar:

 Consideramos como segmento inicial de búsqueda a la lista completa.


 Analizamos el punto medio del segmento (el valor central), si es el valor
buscado, devolvemos el índice del punto medio.
 Si el valor central es mayor al buscado, podemos descartar el segmento que
está desde el punto medio hacia la a derecha.
 Si el valor central es menor al buscado, podemos descartar el segmento que
está desde el punto medio hacia la izquierda.
 Una vez descartado el segmento que no nos interesa, volvemos a analizar el
segmento restante, de la misma forma.
 Si en algún momento el segmento a analizar tiene longitud 0 o negativa
significa que el valor buscado no se encuentra en la lista.

1) El arreglo debe tener valores únicos.


2) El arreglo debe estar ordenado de forma ascendente.

6
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO.

FACULTAD DE INGENIERIA.

ESTRUCTURAS DE DATOS Y ALGORITMOS II.

La búsqueda binaria es un algoritmo de búsqueda que se utiliza en una matriz


ordenada dividiendo repetidamente el intervalo de búsqueda por la mitad. La idea
de la búsqueda binaria es usar la información de que la matriz está ordenada y
reducir la complejidad del tiempo a O (Log n).

Algoritmo de Búsqueda Binaria:


Los pasos básicos para realizar la Búsqueda Binaria son:

 Comience con el elemento medio de toda la matriz como clave de búsqueda.

 Si el valor de la clave de búsqueda es igual al elemento, devuelva un índice de la


clave de búsqueda.

 si el valor de la clave de búsqueda es menor que el elemento en el medio del


intervalo, reduzca el intervalo a la mitad inferior.

 De lo contrario, redúcelo a la mitad superior.

 Verifique repetidamente desde el segundo punto hasta que se encuentre el valor o


el intervalo esté vacío.

 El algoritmo de búsqueda binaria se puede implementar de las siguientes dos


maneras

Método iterativo
Método recursivo

7
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO.

FACULTAD DE INGENIERIA.

ESTRUCTURAS DE DATOS Y ALGORITMOS II.

8
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO.

FACULTAD DE INGENIERIA.

ESTRUCTURAS DE DATOS Y ALGORITMOS II.

9
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO.

FACULTAD DE INGENIERIA.

ESTRUCTURAS DE DATOS Y ALGORITMOS II.

10
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO.

FACULTAD DE INGENIERIA.

ESTRUCTURAS DE DATOS Y ALGORITMOS II.

11

También podría gustarte