Anda di halaman 1dari 22

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS Facultad de Ingeniera de Sistemas e Informtica E.A.P.

de Ingeniera de Sistemas

Algortmica III
Captulo 6

Mtodos de Bsqueda
Lic. Jorge Luis Chvez Soto

Contenido

Introduccin. Clasificacin de la Bsqueda. Mtodos de Bsqueda Interna. Bsqueda Secuencial. Anlisis. Bsqueda Secuencial usando Bloques. Determinacin del Bloque. Anlisis. Bsqueda Secuencial usando ndices. Bsqueda d Binaria. Anlisis. l rbol Binario de Bsqueda. Bsqueda, Insercin y Eliminacin Anlisis. Eliminacin. Anlisis Mtodos de Bsqueda Externa.

Introduccin

La bsqueda es una operacin que nos permite recuperar informacin previamente almacenada. almacenada

El resultado de la operacin es el xito en el caso de encontrar t el l elemento l t buscado b d y de d fracaso f en caso contrario. Ejemplos: l Directorios de archivos ordenados. Ofertas laborales ordenados p por tipo p de trabajo. j Libros de la biblioteca ordenados por autor y tema.

Se puede realizar sobre elementos ordenados sobre elementos desordenados.

Clasificacin de la Bsqueda

Se pueden clasificar en:

Bsqueda Interna: Cuando los elementos se encuentran en memoria i principal. i i l Bsqueda externa: Cuando todos los elementos se encuentran en memoria secundaria

Mtodos de Bsqueda Interna

Estos pueden ser almacenados en estructuras estticas como arreglos y estructuras dinmicas como listas enlazadas y rboles.

Bsqueda Secuencial lineal Bsqueda Secuencial con Bloques Bsqueda con ndices. Bsqueda Binaria. Bsqueda por transformacin de clave (hash). rboles Binarios de Bsqueda.

Bsqueda Secuencial

Consiste en revisar elemento por elemento de la estructura d datos. de d t

Hasta encontrar el dato ms buscado Hasta llegar al final de la lista de datos disponibles.

B Bsqueda d Secuencial S i l en Arreglo A l Desordenado. D d d Bsqueda Secuencial en Arreglo Ordenado Bsqueda Secuencial en Lista Enlazada Desordenada B Bsqueda d Secuencial S i l en Lista Li t Enlazada E l d Ordenada Od d

Anlisis de la Bsqueda Secuencial

Consiste en determinar cual es la operacin elemental que ms afecta al algoritmo.

La comparacin: L i es la l operacin i que determina d t i si i un elemento se encuentra en su posicin respecto de otro.

Determina la operacin elemental, se tiene que definir los lmites de dicha operacin. Caso peor Caso medio Caso mejor mejo

Anlisis de la Bsqueda Secuencial en Arreglo Desordenado

La operacin p elemental seleccionada es la comparacin. p Caso Mejor: El elemento buscado est en la primera posicin. Caso Mejor = 1

Caso Peor: El elemento buscado no se encuentra en el arreglo. arreglo Caso Peor = n

Caso Medio: El elemento buscado se encuentra en la posicin i en el arreglo. Caso Medio = (1 + n) / 2

Anlisis de la Bsqueda Secuencial en Arreglo Desordenado (Caso Medio)

Misma probabilidad de la distribucin de los datos. Misma probabilidad de encontrar al elemento buscado en cualquier posicin del arreglo. El nmero de comparaciones puede ser 1, 2, 3, ..., n y en cada paso debe darse una p probabilidad de 1/n /

CasoMedio CasoMedio CasoMedio

=1

+2

+3

+ ... + n

= (1 + 2 + 3 + ... + n )

n +1 n (n + 1 ) 1 = = 2 2 n

Anlisis de la Bsqueda Secuencial en Listas Enlazadas

La operacin comparacin.

elemental

seleccionada

es

la

No existe N i t una forma f a para etiquetar ti t los l nodos d de d la lista. La forma ms eficiente de representar una lista para efectuar una bsqueda es en un matriz de dos columnas. columnas El anlisis debe ser exactamente igual a los anteriores ya efectuados.

Bsqueda Secuencial usando Bloques

El vector debe estar ordenado p para este mtodo. Trabajar con bloque de elementos en vez de elementos aislados. El tamao del bloque de elementos depende del nmero de elementos del vector vector. Se realiza comparando la clave con el ltimo elemento de cada bloque. bloque Si la clave resulta menor, se busca secuencialmente en los elementos l t salteados lt d del d l bloque bl d elementos. de l t

Anlisis de la Bsqueda Secuencial usando Bloques

La operacin elemental seleccionada es la comparacin. Caso Mejor: El elemento buscado se encuentre en el ltimo elemento del primer bloque. Caso Mejor = 1

Caso Peor: El elemento buscado se encuentre en la penltima posicin del ltimo bloque y donde todos los bloque sean del mismo tamao.

En el caso de que el ltimo bloque no sea del mismo tamao que el resto, estara dado por el penltimo elemento del penltimo bloque. Caso Peor = N/(N)1/2 +((N)1/2 -1) = 2N/(N)1/2 1

Anlisis de la Bsqueda Secuencial usando Bloques

Caso Medio: El elemento buscado se encuentra en la posicin i en el arreglo. Caso Medio = [ 2N/(N)1/2 1 + 1 ]/2 = 2N/(N)1/2

Bsqueda Secuencial usando ndices

El mtodo emplea vectores ordenados. Una alternativa es usando un vector principal y un vector con di ndices.

El vector principal trabajara con los datos ordenados. ordenados El vector de ndices almacenar:

Los valores de los campos claves correspondiente a los elementos del vector principal y un apuntador a la posicin en el vector principal de los datos respectivos.

Bsqueda Binaria

Se efecta sobre arreglos ms no sobre listas. listas Los datos previamente deben estar ordenados. ordenados Consiste en comparar el valor buscado con el elemento medio y discriminar si se encuentra en medio, la mitad superior la mitad inferior. Para luego proseguir con esta misma tctica en el bloque definido anteriormente.

Anlisis de la Bsqueda Binaria

La operacin elemental seleccionada es la comparacin. Caso Mejor: El elemento buscado est en la posicin del medio de la lista. lista Caso Mejor = 1 Caso Peor: El l elemento l b buscado d no se encuentra en el l arreglo. l

El problema consiste en que no se sabe a priori cuantas comparaciones van a realizarse. Habr tantas comparaciones como elementos medios.

rboles Binario de Bsqueda

rbol de bsqueda q es si el valor contenido en cada nodo

Es menor que los valores del subrbol derecho Es mayor o igual que los valores del subrbol izquierdo.

Esta estructura p permite buscar valores en forma ms eficiente. f

3 2 1 4 5 6

Bsqueda de rboles Binarios de Bsqueda

El proceso consiste en buscar el VALOR. VALOR

Si VALOR < N hijo j izquierdo q de N Si VALOR > N hijo derecho de N Repetir el paso (1) y (2) hasta que las siguientes condiciones:

38

14

56

23

45

82

Si VALOR = N puntero al nodo encontrado. Si hay un subrbol vaci La bsqueda ha sido infructuosa

19

70

Insercin de rboles Binarios de Bsqueda

El p proceso consiste en insertar el VALOR. Si VALOR < N el hijo izquierdo de N. Si VALOR > N el hijo derecho de N. Si VALOR = N y existe hijo izquierdo el hijo izquierdo de N. N Repetir el paso (1) , (2) y (3) hasta que 8 las siguientes condiciones: Si hay un subrbol vaci Se inserta en el subrbol vaci. vaci
14 56 38

23

45

82

19

70

Eliminacin de rboles Binarios de Bsqueda

El proceso consiste es eliminar el VALOR. Caso 1: N no tiene hijos N se elimina y se remplaza el puntero del padre a N por el puntero t nulo. l Caso2: N tiene un hijo N se elimina y es reemplazando el puntero a N del Padre por puntero al hijo nico de N
8 14 38

56

23

45

82

Caso 3: N tiene dos hijos, hijos N se elimina y es remplazado por el nodo que est ms a la derecha en el subrbol izquierdo.

19

70

Anlisis de operaciones en rboles Binarios de Bsqueda

Las operaciones bsicas sin destruir la propiedad del rbol es importante importante, puede resultar un rbol desequilibrado desequilibrado. Muchos nodos pueden tener un solo hijo y as sus ramas se vuelven l l largas y delgadas, d l d con esto t se vuelve l ineficiente. El peor caso todos los nodos pueden tener un solo hijo. Buscar un valor en el significa comparar prcticamente con los n nodos del rbol. Existen mtodos para equilibrar el rbol y que las operaciones de bsqueda, adicin, borrado requieran un tiempo que q e este en O(Log n) en el caso peor peo

Mtodos de Bsqueda Externa

Datos almacenados en memoria secundaria y se usa archivos. Archivos por que el volumen de datos permanencia de datos. O Operaciones i d escritura de it y lectura l t ti tienen alto lt costo t en tiempo. ti Reducir el costo se optimiza la operacin de bsqueda. Las ms importantes son:

Bsqueda Bsqueda Bsqueda Bsqueda Bsqueda

en Archivos Secuenciales. en Archivos Secuenciales con Bloques con ndices. Binaria. por transformacin de clave (Hash).

Anda mungkin juga menyukai