Indices Hash Presentacion

19
UNIVERSIDAD TECNICA ESTATAL DE QUEVEDO Integrantes: Ing. Iván Jaramillo Docente: Irving Rivera Luis Gavilanes JeffersonVillamil Neyser Vega Año lectivo: 2012 - 2013

Transcript of Indices Hash Presentacion

Page 1: Indices Hash Presentacion

UNIVERSIDAD TECNICA ESTATAL

DE QUEVEDOIntegrantes:

Ing. Iván Jaramillo

Docente:

Irving RiveraLuis Gavilanes

JeffersonVillamilNeyser Vega

Año lectivo:

2012 - 2013

Page 2: Indices Hash Presentacion

INTRODUCCIÓN TABLA HASH

FUNCIONES HASH COLISIONES

RESOLUCION DE COLISIONES

TAMAÑO DEL CUBO

HASH EXTENDIDO

CONCLUSIONES

MENÚ

SALIR

Page 3: Indices Hash Presentacion

Un índice hash organiza las claves de búsqueda con sus punteros asociados a una estructura de archivos hash. Se aplica una función hash de una clave de búsqueda para identificar a un cubo, y almacenar la clave y sus punteros asociados en el cubo (o en cubos de desbordamiento). En rigor, los índices hash son sólo estructuras de índices secundarios, ya que si un mismo archivo se organiza mediante hash, no hay necesidad de una estructura de índice independiente de hash sobre el mismo.

INDICES HASH

MENÚ

Page 4: Indices Hash Presentacion

TABLA HASH

Una tabla hash, mapa hash o tabla de dispersión es una estructura de datos que asocia llaves o claves con valores. La operación principal que soporta de manera eficiente es la búsqueda: permite el acceso a los elementos (teléfono y dirección, por ejemplo) almacenados a partir de una clave generada (usando el nombre o número de cuenta, por ejemplo). Funciona transformando la clave con una función hash en un hash, un número que identifica la posición (casilla o cubeta) donde la tabla hash localiza el valor deseado.

Page 6: Indices Hash Presentacion

Las tablas hash se suelen implementar sobre vectores de una dimensión, aunque se pueden hacer implementaciones multidimensionales basadas en varias claves. Como en el caso de los arrays, las tablas hash proveen tiempo constante de búsqueda promedio O(1),1 sin importar el número de elementos en la tabla. Comparada con otras estructuras de arrays asociadas, las tablas hash son más útiles cuando se almacenan grandes cantidades de información.Las tablas hash almacenan la información en posiciones pseudo-aleatorias, así que el acceso ordenado a su contenido es bastante lento. Otras estructuras como árboles binarios auto-balanceables son más rápidos en promedio (tiempo de búsqueda O(log n)) pero la información está ordenada en todo momento.

MENÚ

Page 7: Indices Hash Presentacion

FUNCIONES HASH Ó HASHINGEl método llamado por transformación de claves (hash), permite aumentar la velocidad de búsqueda sin necesidad de tener los elementos ordenados. Cuenta también con la ventaja de que el tiempo de búsqueda es prácticamente independiente del número de componentes del arreglo.Trabaja basándose en una función de transformación o función hash (H) que convierte una clave en una dirección (índice) dentro del arreglo.

Cuando se tienen claves que no se corresponden con índices (p. ejem. por ser alfanuméricas), o bien cuando las claves son valores numéricos muy grandes, debe utilizarse una función hash que permita transformar la clave para obtener una dirección apropiada. Esta función hash debe de ser simple de calcular y debe de asignar direcciones de la manera mas uniforme posible. Es decir, dadas dos claves diferentes debe generar posiciones diferentes. Si esto no ocurre (H (K1)=d,H(K2)=d y K1_K2), hay una colisión. Se define, entonces, una colisión como la asignación de una misma dirección a dos o más claves distintas.

Page 8: Indices Hash Presentacion

Función Módulo (por división)Consiste en tomar el residuo de la división de la clave entre el número de componentes del arreglo.La función hash queda definida por la siguiente formula:H(K) = (K mod N) + 1Se recomienda que N sea el número primo inmediato inferior al número total de elementos.

MENÚ

Page 9: Indices Hash Presentacion

COLISIONESUna colisión se produce durante una inserción cuando dos registros son ordenadas en la misma dirección supongamos que hay un registro en el archivo con el valor 15 la posición seria 5 y hay otro archivo con el nombre 25 que también la posición seria 5 Hay una colisión entre 15 y el 25. Una forma de resolver el problema de las colisiones es encontrar una función hash que evita las colisiones a eso se le llama hashing perfecto. Idealmente lo que se buscaría es tener un "algoritmo de hash perfecto" en el cual no ocurran colisiones y siempre nos garantice direcciones diferentes. Pero desafortunadamente esto es casi imposible, se dice que 1 de 10^120000 algoritmos evitarían dichas colisiones, así que hay que acostumbrarse a la idea de trabajar y lidiar con colisiones.

Page 10: Indices Hash Presentacion

DIRECCIONAMIENTO ABIERTO O HASHING CERRADO

Las tablas hash de direccionamiento abierto pueden almacenar los registros directamente en el array. Las colisiones se resuelven mediante un sondeo del array, en el que se buscan diferentes localidades del array (secuencia de sondeo) hasta que el registro es encontrado o se llega a una casilla vacía, indicando que no existe esa llave en la tabla.

MENÚ

Page 11: Indices Hash Presentacion

RESOLUCION DE COLISIONES

Si dos llaves generan un hash apuntando al mismo índice, los registros correspondientes no pueden ser almacenados en la misma posición. En estos casos, cuando una casilla ya está ocupada, debemos encontrar otra ubicación donde almacenar el nuevo registro, y hacerlo de tal manera que podamos encontrarlo cuando se requiera.Hay varias técnicas de resolución de colisiones, pero las más populares son encadenamiento y direccionamiento abierto.

Page 12: Indices Hash Presentacion

Direccionamiento Cerrado, Encadenamiento separado o Hashing abierto

En la técnica más simple de encadenamiento, cada casilla en el array referencia una lista de los registros insertados que colisionan en la misma casilla. La inserción consiste en encontrar la casilla correcta y agregar al final de la lista correspondiente. El borrado consiste en buscar y quitar de la lista.

Page 13: Indices Hash Presentacion

Direccionamiento abierto o Hashing cerrado

Las tablas hash de direccionamiento abierto pueden almacenar los registros directamente en el array. Las colisiones se resuelven mediante un sondeo del array, en el que se buscan diferentes localidades del array (secuencia de sondeo) hasta que el registro es encontrado o se llega a una casilla vacía, indicando que no existe esa llave en la tabla.

Page 14: Indices Hash Presentacion

Ventajas e inconvenientes de las tablas hash

Una tabla hash tiene como principal ventaja que el acceso a los datos suele ser muy rápido si se cumplen las siguientes condiciones:• Una razón de ocupación no muy elevada (a partir del 75% de ocupación se producen demasiadas colisiones y la tabla se vuelve ineficiente).• Una función resumen que distribuya uniformemente las claves. Si la función está mal diseñada, se producirán muchas colisiones.Los inconvenientes de las tablas hash son:• Necesidad de ampliar el espacio de la tabla si el volumen de datos almacenados crece. Se trata de una operación costosa.• Dificultad para recorrer todos los elementos. Se suelen emplear listas para procesar la totalidad de los elementos.• Desaprovechamiento de la memoria. Si se reserva espacio para todos los posibles elementos, se consume más memoria de la necesaria; se suele resolver reservando espacio únicamente para punteros a los elementos.

Page 15: Indices Hash Presentacion

TAMAÑO DEL CUBO

MENÚ

Tamaño del cubo es el número de registros que se pueden almacenar en un cuboPor ejemplo, desde un cubo de 1.024 bytes puede almacenar 10 registros cada una de ellas es de 100 bytes de longitud el tamaño del cubo es de 10 Alternativamente, si la longitud del registro se duplica de 100 bytes a 200 bytes, el tamaño del cubo se reduce de 10 a 5 A medida que aumenta el tamaño del cubo, la probabilidad de desbordamiento disminuye, pero el tiempo necesario para buscar un registro en el cubo aumenta.

Page 16: Indices Hash Presentacion

HASH EXTENDIDOExisten varias técnicas relacionadas con Hash y el manejo de colisiones, dichas técnicas se basan en una estructura estática, es decir, se calcula un cierto número de posiciones posibles (registros) y en base a este supuesto se amplía el espacio de direcciones y en consecuencia se disminuyen las colisiones.El algoritmo de Hash Extendido se basa en una estructura de recuperación conocida como "trie", la cual se encuentra dentro del grupo de búsquedas por radio, esto debido a que se presenta un árbol donde cada rama presenta un radio de posibilidades hacia donde moverse. en la figura 9.9 tenemos un radio de 26 que son las letras del alfabeto.

Page 17: Indices Hash Presentacion

MENÚ

Para el caso del hash extendido, el trie que se emplea es de radio 2, utilizando como valores posibles el 1 y el 0, significando un bit. De manera que las decisiones de "a qué rama moverse" se definirá como una decisión bit por bit. Así, si buscamos alguna llave cuyo hash produce una dirección empieza con "11" entonces recuperaremos la "cubeta C".

Page 18: Indices Hash Presentacion

CONCLUSIONES

MENÚ

El concepto de Hash es un caso ideal en la recuperación de información El Hash tradicional es muy eficiente pero tiene 2 problemas principales:

colisiones y el hecho de ser estático Al igual que el BTree la estructura crece dinámicamente y permite

búsquedas de alta velocidad; pero para el acceso secuencial (BTree) es una ventaja que sigue ganando la competencia.

No se tienen algunas métricas importantes acerca de la capacidad de cada cubeta

Page 19: Indices Hash Presentacion

GRACIAS POR SU