SlideShare una empresa de Scribd logo
1 de 27
TABLAS HASH

       César Torres S.
HISTORIA Y ORÍGENES
• El término hash proviene, aparentemente, de
  la analogía con el significado de dicha palabra
  en el mundo real: picar y mezclar.
• Se cree que H. P. Luhn, empleado de IBM, fue
  el primero en utilizar el concepto en un
  memorándum fechado en enero de 1953. Su
  utilización masiva no fue hasta después de 10
  años.
TABLAS HASH
• Una tabla hash 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 almacenados a partir de una clave
  generada
• Funciona transformando la clave con una función
  hash en un hash, un número que la tabla hash
  utiliza para localizar el valor deseado.
TABLAS HASH

• 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.
TIEMPO DE EJECUCIÓN TABLAS HASH
• Las tablas hash se implementar sobre arrays de una
  dimensión,     aunque     se    pueden      realizar
  implementaciones multi-dimensionales.

• El tiempo es O(1)

• En casos particularmente puede ser O(n).

• Comparada con otras estructuras de arrays asociadas,
  las tablas hash son más útiles cuando se almacenan
  grandes cantidades de información.
FUNCIONAMIENTO
• Las operaciones implementadas en las tablas hash son:

   – inserción(llave, valor)

   – búsqueda(llave) que devuelve valor

• La mayoría de las implementaciones también incluyen
  borrar. También se pueden ofrecer funciones como
  iteración en la tabla, crecimiento y vaciado.
• Algunas tablas hash permiten almacenar múltiples
  valores bajo la misma clave.
FUNCIONAMIENTO
• Para usar una tabla hash se necesita:

  – Una estructura de acceso
  – Una estructura de datos con una clave
  – Una función (hash)
OPERACIONES BÁSICAS TABLAS HASH
• Inserción:

• Para almacenar un elemento en la tabla hash se ha de
  convertir su clave a un número. Esto se consigue
  aplicando la función resumen a la clave del elemento.

• El resultado de la función resumen ha de mapearse al
  espacio de direcciones del array que se emplea como
  soporte, lo cual se consigue con la función módulo.

• Tras este paso se obtiene un índice válido para la tabla.
OPERACIONES BÁSICAS TABLAS HASH
• El elemento se almacena en la posición de la
  tabla obtenido en el paso anterior.

• Si en la posición de la tabla ya había otro
  elemento, se ha producido una colisión. Este
  problema se puede solucionar asociando una lista
  a cada posición de la tabla, aplicando otra
  función o buscando el siguiente elemento libre.

• Estas posibilidades han de considerarse a la hora
  de recuperar los datos.
OPERACIONES BÁSICAS TABLAS HASH
• Búsqueda

• Para recuperar los datos, es necesaria la llave.

• El valor obtenido se mapea al espacio de direcciones de la
  tabla.

• Si el elemento existente en la posición indicada en el paso
  anterior tiene la misma clave que la empleada en la
  búsqueda, entonces es el deseado. Si la clave es distinta, se
  ha de buscar el elemento según la técnica empleada para
  resolver el problema de las colisiones al almacenar el
  elemento.
FUNCIONES HASH MÁS USADAS
• Hash de División:

• Dado un diccionario D, se fija un número m >=
  |D|
• Debe ser primo no cercano a potencia de 2 o
  de 10. Siendo k la clave a buscar y h(k) la
  función hash, se tiene h(k)=k%m.
FUNCIONES HASH MAS USADAS
• Hash de Multiplicación

• Se escoge un tamaño de tabla m >= |D|.
• Número irracional φ (normalmente se usa
  1+5^(1/2)/2 o 1-5^(1/2)/2). De este modo se
  define h(k)= Suelo(m*Parte fraccionaria(k*φ))
RESOLUCIÓN DE COLISIONES
• Si dos llaves generan un hash apuntando al
  mismo índice, los registros correspondientes
  no pueden ser almacenados en la misma
  posición.
RESOLUCIÓN DE COLISIONES
• En 1 millón de entradas, hay un 95% de
  posibilidades de que al menos una colisión
  ocurra antes de alcanzar los 2.500 registros.

• Técnicas Resolución de Colisiones
  – Encadenamiento
  – Direccionamiento Abierto.
RESOLUCIÓN DE COLISIONES
• ENCADENAMIENTO

• En la técnica más simple.

• 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.
• La técnica de encadenamiento tiene ventajas
  sobre direccionamiento abierto. Primero el
  borrado es simple y segundo el crecimiento de la
  tabla puede ser pospuesto durante mucho más
  tiempo dado que el rendimiento disminuye
  mucho más lentamente incluso cuando todas las
  casillas ya están ocupadas.
• De hecho, muchas tablas hash encadenadas
  pueden no requerir crecimiento nunca, dado que
  la degradación de rendimiento es lineal en la
  medida que se va llenando la tabla.
• Las tablas hash encadenadas heredan las
  desventajas de las listas ligadas. Cuando se
  almacenan cantidades de información
  pequeñas, el gasto extra de las listas ligadas
  puede ser significativo. También los viajes a
  través de las listas tienen un rendimiento de
  caché muy pobre.
RESOLUCIÓN DE COLISIONES




         Encadenamiento
RESOLUCIÓN DE COLISIONES
• DIRECCIONAMIENTO ABIERTO

• 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.

• Las secuencias de sondeo más socorridas incluyen:
    – sondeo lineal - en el que el intervalo entre cada intento es constante
      (frecuentemente 1).
    – sondeo cuadrático - en el que el intervalo entre los intentos aumenta
      linealmente (por lo que los índices son descritos por una función cuadrática).
    – doble hasheo - en el que el intervalo entre intentos es constante para cada
      registro pero es calculado por otra función hash.
• El sondeo lineal ofrece el mejor rendimiento
  del caché, pero es más sensible al
  aglomeramiento
• Doble Hasheo tiene pobre rendimiento en el
  caché pero elimina el problema de
  aglomeramiento.
• El sondeo cuadrático se sitúa en medio.
• Una influencia crítica en el rendimiento de una tabla hash
  de direccionamiento abierto es el porcentaje de casillas
  usadas en el array.
• Conforme el array se acerca al 100% de su capacidad, el
  número de saltos requeridos por el sondeo puede
  aumentar considerablemente.
• Una vez que se llena la tabla, los algoritmos de sondeo
  pueden incluso caer en un círculo sin fin. Incluso utilizando
  buenas funciones hash, el límite aceptable de capacidad es
  normalmente 80%.
• Con funciones hash pobremente diseñadas el rendimiento
  puede degradarse incluso con poca información, al
  provocar aglomeramiento significativo.
RESOLUCIÓN DE COLISIONES




      DIRECCIONAMIENTO ABIERTO
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.
• 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.
EJEMPLOS HASH


• Ejemplo Hash 1 - > Web

• Ejemplo Hash 2 - > Cain & Abel (Sniffer)
Tablas Hash

Más contenido relacionado

La actualidad más candente

Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..NANO-06
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosJosé Antonio Sandoval Acosta
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfijaOmarzingm
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Juan Astudillo
 
Unidad 3 estructura lineales
Unidad 3 estructura linealesUnidad 3 estructura lineales
Unidad 3 estructura linealesEnrique2194
 
Estructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesEstructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesJosé Antonio Sandoval Acosta
 
Listas como estructura de datos..
Listas como estructura de datos..Listas como estructura de datos..
Listas como estructura de datos..NANO-06
 
Cuadro comparativo algoritmos de busqueda
Cuadro comparativo algoritmos de busquedaCuadro comparativo algoritmos de busqueda
Cuadro comparativo algoritmos de busquedaCristopher Morales Ruiz
 
Memoria Estatica
Memoria EstaticaMemoria Estatica
Memoria EstaticaJ M
 
Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de DatosVannesa Salazar
 
Exposicion Busqueda
Exposicion BusquedaExposicion Busqueda
Exposicion BusquedaAngie Suarez
 
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)Rubi Veronica Chimal Cuxin
 
Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos Kaneki04
 

La actualidad más candente (20)

Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
 
Estructuras no-lineales
Estructuras no-linealesEstructuras no-lineales
Estructuras no-lineales
 
Algoritmo de ordenamiento: Heap Sort
Algoritmo de ordenamiento: Heap SortAlgoritmo de ordenamiento: Heap Sort
Algoritmo de ordenamiento: Heap Sort
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfija
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
 
Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
 
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datosPilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
 
Listas doblemente enlazadas
Listas doblemente enlazadasListas doblemente enlazadas
Listas doblemente enlazadas
 
Unidad 3 estructura lineales
Unidad 3 estructura linealesUnidad 3 estructura lineales
Unidad 3 estructura lineales
 
Método por plegamiento Hash
Método por plegamiento HashMétodo por plegamiento Hash
Método por plegamiento Hash
 
Estructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesEstructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no lineales
 
Listas como estructura de datos..
Listas como estructura de datos..Listas como estructura de datos..
Listas como estructura de datos..
 
Cuadro comparativo algoritmos de busqueda
Cuadro comparativo algoritmos de busquedaCuadro comparativo algoritmos de busqueda
Cuadro comparativo algoritmos de busqueda
 
Memoria Estatica
Memoria EstaticaMemoria Estatica
Memoria Estatica
 
Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de Datos
 
Exposicion Busqueda
Exposicion BusquedaExposicion Busqueda
Exposicion Busqueda
 
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
 
Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos
 

Similar a Tablas Hash

Tablas Hash Fash Vmaa
Tablas Hash Fash VmaaTablas Hash Fash Vmaa
Tablas Hash Fash Vmaavicomanuel
 
T A B L A D E D I S P E R S I O N (Hash Table)
T A B L A  D E  D I S P E R S I O N (Hash Table)T A B L A  D E  D I S P E R S I O N (Hash Table)
T A B L A D E D I S P E R S I O N (Hash Table)Angie Suarez
 
hashing y colisiones
hashing y colisioneshashing y colisiones
hashing y colisionesemiru48
 
COMPILADORES-Tabla de Simbolos
COMPILADORES-Tabla de SimbolosCOMPILADORES-Tabla de Simbolos
COMPILADORES-Tabla de SimbolosLilian León Meza
 
15 Tablas Hash
15 Tablas Hash15 Tablas Hash
15 Tablas HashUVM
 
Busqueda por HASH
Busqueda por HASHBusqueda por HASH
Busqueda por HASHSykrayo
 
Tablas hash
Tablas hashTablas hash
Tablas hashPrivada
 
Tablas de disperción
Tablas de disperciónTablas de disperción
Tablas de disperciónWhaleejaa Wha
 
Funcion resumen
Funcion resumenFuncion resumen
Funcion resumenG Hoyos A
 
BúSqueda Por Hash
BúSqueda Por HashBúSqueda Por Hash
BúSqueda Por HashAngie Suarez
 
Estructura de Datos - Unidad VI: Métodos de Búsqueda
Estructura de Datos - Unidad VI: Métodos de BúsquedaEstructura de Datos - Unidad VI: Métodos de Búsqueda
Estructura de Datos - Unidad VI: Métodos de BúsquedaJosé Antonio Sandoval Acosta
 
Tabla hash
Tabla hashTabla hash
Tabla hashuo179050
 
Tablas de dispersión
Tablas de dispersiónTablas de dispersión
Tablas de dispersiónsalomon
 

Similar a Tablas Hash (20)

Tablas Hash
Tablas HashTablas Hash
Tablas Hash
 
Tablas Hash Fash Vmaa
Tablas Hash Fash VmaaTablas Hash Fash Vmaa
Tablas Hash Fash Vmaa
 
EXPOSICION HASH
EXPOSICION HASHEXPOSICION HASH
EXPOSICION HASH
 
T A B L A D E D I S P E R S I O N (Hash Table)
T A B L A  D E  D I S P E R S I O N (Hash Table)T A B L A  D E  D I S P E R S I O N (Hash Table)
T A B L A D E D I S P E R S I O N (Hash Table)
 
hashing.ppt
hashing.ppthashing.ppt
hashing.ppt
 
hashing y colisiones
hashing y colisioneshashing y colisiones
hashing y colisiones
 
COMPILADORES-Tabla de Simbolos
COMPILADORES-Tabla de SimbolosCOMPILADORES-Tabla de Simbolos
COMPILADORES-Tabla de Simbolos
 
Analisissss
AnalisissssAnalisissss
Analisissss
 
15 Tablas Hash
15 Tablas Hash15 Tablas Hash
15 Tablas Hash
 
Hashing
HashingHashing
Hashing
 
Busqueda por HASH
Busqueda por HASHBusqueda por HASH
Busqueda por HASH
 
Tablas hash
Tablas hashTablas hash
Tablas hash
 
Tablas de disperción
Tablas de disperciónTablas de disperción
Tablas de disperción
 
RESUMEN DE BASE DE DATOS.pdf
RESUMEN DE BASE DE DATOS.pdfRESUMEN DE BASE DE DATOS.pdf
RESUMEN DE BASE DE DATOS.pdf
 
Funcion resumen
Funcion resumenFuncion resumen
Funcion resumen
 
BúSqueda Por Hash
BúSqueda Por HashBúSqueda Por Hash
BúSqueda Por Hash
 
Estructura de Datos - Unidad VI: Métodos de Búsqueda
Estructura de Datos - Unidad VI: Métodos de BúsquedaEstructura de Datos - Unidad VI: Métodos de Búsqueda
Estructura de Datos - Unidad VI: Métodos de Búsqueda
 
Tabla hash
Tabla hashTabla hash
Tabla hash
 
Tablas de dispersión
Tablas de dispersiónTablas de dispersión
Tablas de dispersión
 
Metodo de busqueda binario koby
Metodo de busqueda binario kobyMetodo de busqueda binario koby
Metodo de busqueda binario koby
 

Más de César Torres Soto (6)

PresentacióN Tesis
PresentacióN TesisPresentacióN Tesis
PresentacióN Tesis
 
Presentacion Final
Presentacion FinalPresentacion Final
Presentacion Final
 
Plan Informático
Plan InformáticoPlan Informático
Plan Informático
 
Etica
EticaEtica
Etica
 
Comercio ElectróNico
Comercio ElectróNicoComercio ElectróNico
Comercio ElectróNico
 
MarkQual
MarkQualMarkQual
MarkQual
 

Tablas Hash

  • 1. TABLAS HASH César Torres S.
  • 2. HISTORIA Y ORÍGENES • El término hash proviene, aparentemente, de la analogía con el significado de dicha palabra en el mundo real: picar y mezclar. • Se cree que H. P. Luhn, empleado de IBM, fue el primero en utilizar el concepto en un memorándum fechado en enero de 1953. Su utilización masiva no fue hasta después de 10 años.
  • 3. TABLAS HASH • Una tabla hash 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 almacenados a partir de una clave generada • Funciona transformando la clave con una función hash en un hash, un número que la tabla hash utiliza para localizar el valor deseado.
  • 4. TABLAS HASH • 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.
  • 5.
  • 6. TIEMPO DE EJECUCIÓN TABLAS HASH • Las tablas hash se implementar sobre arrays de una dimensión, aunque se pueden realizar implementaciones multi-dimensionales. • El tiempo es O(1) • En casos particularmente puede ser O(n). • Comparada con otras estructuras de arrays asociadas, las tablas hash son más útiles cuando se almacenan grandes cantidades de información.
  • 7. FUNCIONAMIENTO • Las operaciones implementadas en las tablas hash son: – inserción(llave, valor) – búsqueda(llave) que devuelve valor • La mayoría de las implementaciones también incluyen borrar. También se pueden ofrecer funciones como iteración en la tabla, crecimiento y vaciado. • Algunas tablas hash permiten almacenar múltiples valores bajo la misma clave.
  • 8. FUNCIONAMIENTO • Para usar una tabla hash se necesita: – Una estructura de acceso – Una estructura de datos con una clave – Una función (hash)
  • 9. OPERACIONES BÁSICAS TABLAS HASH • Inserción: • Para almacenar un elemento en la tabla hash se ha de convertir su clave a un número. Esto se consigue aplicando la función resumen a la clave del elemento. • El resultado de la función resumen ha de mapearse al espacio de direcciones del array que se emplea como soporte, lo cual se consigue con la función módulo. • Tras este paso se obtiene un índice válido para la tabla.
  • 10. OPERACIONES BÁSICAS TABLAS HASH • El elemento se almacena en la posición de la tabla obtenido en el paso anterior. • Si en la posición de la tabla ya había otro elemento, se ha producido una colisión. Este problema se puede solucionar asociando una lista a cada posición de la tabla, aplicando otra función o buscando el siguiente elemento libre. • Estas posibilidades han de considerarse a la hora de recuperar los datos.
  • 11. OPERACIONES BÁSICAS TABLAS HASH • Búsqueda • Para recuperar los datos, es necesaria la llave. • El valor obtenido se mapea al espacio de direcciones de la tabla. • Si el elemento existente en la posición indicada en el paso anterior tiene la misma clave que la empleada en la búsqueda, entonces es el deseado. Si la clave es distinta, se ha de buscar el elemento según la técnica empleada para resolver el problema de las colisiones al almacenar el elemento.
  • 12. FUNCIONES HASH MÁS USADAS • Hash de División: • Dado un diccionario D, se fija un número m >= |D| • Debe ser primo no cercano a potencia de 2 o de 10. Siendo k la clave a buscar y h(k) la función hash, se tiene h(k)=k%m.
  • 13. FUNCIONES HASH MAS USADAS • Hash de Multiplicación • Se escoge un tamaño de tabla m >= |D|. • Número irracional φ (normalmente se usa 1+5^(1/2)/2 o 1-5^(1/2)/2). De este modo se define h(k)= Suelo(m*Parte fraccionaria(k*φ))
  • 14. RESOLUCIÓN DE COLISIONES • Si dos llaves generan un hash apuntando al mismo índice, los registros correspondientes no pueden ser almacenados en la misma posición.
  • 15. RESOLUCIÓN DE COLISIONES • En 1 millón de entradas, hay un 95% de posibilidades de que al menos una colisión ocurra antes de alcanzar los 2.500 registros. • Técnicas Resolución de Colisiones – Encadenamiento – Direccionamiento Abierto.
  • 16. RESOLUCIÓN DE COLISIONES • ENCADENAMIENTO • En la técnica más simple. • 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.
  • 17. • La técnica de encadenamiento tiene ventajas sobre direccionamiento abierto. Primero el borrado es simple y segundo el crecimiento de la tabla puede ser pospuesto durante mucho más tiempo dado que el rendimiento disminuye mucho más lentamente incluso cuando todas las casillas ya están ocupadas. • De hecho, muchas tablas hash encadenadas pueden no requerir crecimiento nunca, dado que la degradación de rendimiento es lineal en la medida que se va llenando la tabla.
  • 18. • Las tablas hash encadenadas heredan las desventajas de las listas ligadas. Cuando se almacenan cantidades de información pequeñas, el gasto extra de las listas ligadas puede ser significativo. También los viajes a través de las listas tienen un rendimiento de caché muy pobre.
  • 19. RESOLUCIÓN DE COLISIONES Encadenamiento
  • 20. RESOLUCIÓN DE COLISIONES • DIRECCIONAMIENTO ABIERTO • 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. • Las secuencias de sondeo más socorridas incluyen: – sondeo lineal - en el que el intervalo entre cada intento es constante (frecuentemente 1). – sondeo cuadrático - en el que el intervalo entre los intentos aumenta linealmente (por lo que los índices son descritos por una función cuadrática). – doble hasheo - en el que el intervalo entre intentos es constante para cada registro pero es calculado por otra función hash.
  • 21. • El sondeo lineal ofrece el mejor rendimiento del caché, pero es más sensible al aglomeramiento • Doble Hasheo tiene pobre rendimiento en el caché pero elimina el problema de aglomeramiento. • El sondeo cuadrático se sitúa en medio.
  • 22. • Una influencia crítica en el rendimiento de una tabla hash de direccionamiento abierto es el porcentaje de casillas usadas en el array. • Conforme el array se acerca al 100% de su capacidad, el número de saltos requeridos por el sondeo puede aumentar considerablemente. • Una vez que se llena la tabla, los algoritmos de sondeo pueden incluso caer en un círculo sin fin. Incluso utilizando buenas funciones hash, el límite aceptable de capacidad es normalmente 80%. • Con funciones hash pobremente diseñadas el rendimiento puede degradarse incluso con poca información, al provocar aglomeramiento significativo.
  • 23. RESOLUCIÓN DE COLISIONES DIRECCIONAMIENTO ABIERTO
  • 24. 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.
  • 25. • 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.
  • 26. EJEMPLOS HASH • Ejemplo Hash 1 - > Web • Ejemplo Hash 2 - > Cain & Abel (Sniffer)