Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Busqueda Por Hash

Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1de 22

MTODOS DE BUSQUEDA

Los mtodos de bsqueda pueden clasificarse segn la ubicacin de los datos sobre los que se realizara la bsqueda. Existen dos clases: y Mtodos de Bsqueda Interna y Mtodos de Bsqueda Externa.

METODOS DE BUSQUEDA INTERNA


Se denomina bsqueda interna cuando todos los elementos se encuentran en la memoria principal. Por ejemplo, almacenados en estructuras estticas (arreglos) o en estructuras dinmicas (listas ligadas y arboles). Los mtodos de bsqueda mas importantes son:
y Secuencial o lineal y Binaria y Por transformacin de claves y Arboles de bsqueda

METODOS DE BUSQUEDA EXTERNA


y Se denomina bsqueda externa cuando todos los

elementos se encuentran en memoria secundaria (archivos almacenados en dispositivos tales como cintas y discos magnticos).

BUSQUEDA POR TRANSFORMACION DE CLAVES (HASH)


y Aumenta la velocidad de bsqueda sin necesidad de

tener los objetos ordenados. y El tiempo de bsqueda es totalmente independiente del numero de componentes del arreglo. y La bsqueda se realiza por medio de direcciones, creadas por una funcin hash(H).

FUNCIONES HASH
y Las Funciones HASH (H) mas aplicadas son: y Funcin Modulo (Por divisin). y Funcin Cuadrado. y Funcin Plegamiento. y Funcin Truncamiento.

Procedimiento
yMtodo consistente en aplicar

una funcin que traduce un conjunto de posibles valores llave en un rango de direcciones relativas

Casos de Colisin

soluciones para reducir el nmero de colisiones


y Propagar los registros: Buscar funciones que distribuyan muy

aleatoriamente los registros podemos evitar "agrupaciones" de llaves que produzcan las mismas direcciones y Usar memoria extra: En el ejemplo anterior planteamos tener una direccin de entre 1000 posibles, el uso de memoria extra se basa en proponer un espacio de direcciones posibles mucho ms grande que el nmero de registros a usar, de modo que si vamos a insertar 100 registros un espacio de 500 direcciones nos una mejor opcin de esparcir mejor. y Colocar ms de un registro en una direccin: A diferencia de los casos anteriores donde cada direccin almacena nicamente un registro, este concepto se basa en "buckets" o cubetas de datos en cada direccin, ah se colocan algunos (casi todos) los registros que colisionan de manera que al hacer una bsqueda debemos recuperar la cubeta entera y ahi buscar por el registro deseado.

9.3.1 Un Algoritmo de Hash


y

No existe una frmula "nica" para hash, pero el producirla es un algoritmo que bsicamente se presenta en 3 pasos: 1) Representar la llave de manera numrica (siempre que no sea de por s un nmero) Una buena opcin es usar los valores ASCII o bien los Unicode de las letras LOWELL= L O W E L L _ _ _ _ _ _

76 79 87 69 76 76 32 32 32 32 32 32 2) Plegar y Agregar Combinar algunos de estos nmeros para generar pequeos trozos con los que podamos trabajar 76 79 | 87 69 | 76 76 | 32 32 | 32 32 | 32 32 De manera que podemos hacer algunas operaciones matemticas con dichos nmeros para finalmente obtener un nmero del cual obtendremos la direccin 7679 + 8769 + 7676 + 3232 + 3232 = 30 588 Nota: Respecto a la implementacin se puede dar el caso de formar nmeros demasiado grandes, tanto que llegue al overflow del tipo de datos que estemos usando. Para solucionar esto podemos usar funciones como el "mod intermedias para no tener ese problema. 3) Dividir por un nmero primo y usar el resultado como direccin: Los archivos de hash por lo general suelen limitarse a un cierto rango de direcciones posibles para aprovechar mejor el concepto de memoria. de manera que podemos concluir nuestro algoritmo con la frmula: a= s mod n. Donde a es la direccin resultante, s es la suma o resultado de los pasos anteriores y n el nmero de direcciones posibles en el archivo. Existen innumerables operaciones adicionales que pueden aplicarse en las frmulas, as como las tcnicas para limitar el valor final. Entre ellas se encuentran: elevar a alguna potencia, raz cuadrada, convertir los nmeros de base (hexadecimal, octal), etc...

Ventajas
y Se pueden usar los valores naturales de la llave,

puesto que se traducen internamente a direcciones fciles de localizar y Se logra independencia lgica y fsica, debido a que los valores de las llaves son independientes del espacio de direcciones y No se requiere almacenamiento adicional para los ndices.

Desventajas
y No pueden usarse registros de longitud variable y El archivo no esta clasificado y No permite llaves repetidas y Solo permite acceso por una sola llave

Costos
y Tiempo de procesamiento requerido para la

aplicacin de la funcin hash y Tiempo de procesamiento y los accesos E/S requeridos para solucionar las colisiones.

Factores de Eficiencia
y La distribucin de los valores de llave que realmente se

usan y El numero de valores de llave que realmente estn en uso con respecto al tamao del espacio de direcciones y El numero de registros que pueden almacenarse en una direccin dad sin causar una colisin y La tcnica usada para resolver el problema de las colisiones

Tipos de Funcion Hash

yResiduo de la divisin yMedio del cuadrado yPliegue

Hashing por residuo de divisin


y

La idea de este mtodo es la de dividir el valor de la llave entre un numero apropiado, y despus utilizar el residuo de la divisin como direccin relativa para el registro (direccin = llave mdulo divisor).

Consideraciones
y

Independientemente de que tan bueno sea el divisor, cuando el espacio de direcciones de un archivo esta completamente lleno, la probabilidad de colisin crece dramticamente. La saturacin de archivo de mide mediante su factor de carga, el cual se define como la relacin del numero de registros en el archivo contra el numero de registros que el archivo podra contener si estuviese completamente lleno.

Factor de Carga

Todas las funciones hash comienzan a trabajar probablemente cuando el archivo esta casi lleno. Por lo general el mximo factor de carga que puede tolerarse en un archivo para un rendimiento razonable es de entre el 70 % y 80 %.

Hashing por Elevacin al cuadrado


En esta tcnica, la llave es elevada al cuadrado, despus algunos dgitos especficos se extraen de la mitad del resultado para constituir la direccin relativa. Si se desea una direccin de n dgitos, entonces los dgitos se truncan en ambos extremos de la llave elevada al cuadrado, tomando n dgitos intermedios. Las mismas posiciones de n dgitos deben extraerse para cada llave. y Utilizando esta funcin hashing el tamao del archivo resultante es de 10n donde n es el numero de dgitos extrados de los valores de la llave elevada al cuadrado.
y

Hashing por Pliegue


En esta tcnica el valor de la llave es particionada en varias partes, cada una de las cuales y (excepto la ultima) tiene el mismo numero de dgitos que tiene la direccin relativa objetivo. Estas particiones son despus plegadas una sobre otra y sumadas. El resultado, es la direccin relativa. Igual que para el mtodo del medio del cuadrado, el tamao del espacio de direcciones relativas es una potencia de 10.
y
Video Hash pulsa

También podría gustarte