ScholarGate
Asistente

Tablas Hash

Una tabla hash implementa un diccionario utilizando una función hash para mapear claves a posiciones de un array, lo que permite la inserción, eliminación y búsqueda en tiempo constante esperado cuando las colisiones se gestionan adecuadamente.

Encontrar tema con PaperMindPróximamenteFind papers & topics
Tools & resources
Descargar diapositivas
Learn & explore
VídeoPróximamente

Definition

Una tabla hash es una estructura de datos que almacena pares clave-valor en un array, utilizando una función hash para calcular a partir de cada clave un índice en el array, con un esquema de resolución de colisiones para manejar claves distintas que se mapean al mismo índice.

Scope

Este tema cubre los diccionarios basados en hashing: las funciones hash y sus propiedades deseables, las estrategias de resolución de colisiones (encadenamiento separado y direccionamiento abierto), el factor de carga y el redimensionamiento, los marcos de hashing universal y perfecto que ofrecen garantías demostrables, y estructuras probabilísticas relacionadas como los filtros de Bloom. Se excluyen las estructuras de diccionario ordenadas, que se tratan en el apartado de árboles de búsqueda.

Core questions

  • ¿Qué hace que una función hash sea buena y cómo se elige para distribuir las claves de manera uniforme?
  • ¿Cómo se resuelven las colisiones mediante encadenamiento o direccionamiento abierto, y cómo afectan al costo?
  • ¿Cómo rige el factor de carga el tiempo de operación esperado y cuándo desencadena el redimensionamiento?
  • ¿Cómo proporcionan el hashing universal y el perfecto garantías de rendimiento demostrables?
  • ¿Cuándo es preferible una estructura probabilística eficiente en espacio como un filtro de Bloom a una tabla exacta?

Key concepts

  • función hash
  • encadenamiento separado
  • direccionamiento abierto
  • factor de carga
  • rehashing y redimensionamiento
  • hashing universal
  • hashing perfecto
  • filtro de Bloom

Key theories

Hashing universal
Al elegir la función hash al azar de una familia cuidadosamente diseñada (universal), se puede garantizar un bajo número esperado de colisiones para cualquier conjunto fijo de claves, haciendo improbables los casos adversos en el peor de los escenarios.
Resolución de colisiones y factor de carga
El encadenamiento separado almacena las claves colisionantes en listas por ranura, mientras que el direccionamiento abierto sondea ranuras alternativas; el tiempo de operación esperado se rige por el factor de carga (entradas por ranura), y las tablas se redimensionan para mantenerlo acotado.

Clinical relevance

Las tablas hash se encuentran entre las estructuras de datos más utilizadas en la computación: implementan diccionarios y conjuntos en bibliotecas estándar, potencian la indexación de bases de datos y las cachés en memoria, soportan tablas de símbolos en compiladores y subyacen a la deduplicación y las pruebas de pertenencia. Los filtros de Bloom escalan las consultas de pertenencia en bases de datos y redes donde el almacenamiento exacto es inviable.

History

El hashing se originó en la década de 1950 con trabajos atribuidos a Hans Peter Luhn en IBM. Burton Bloom introdujo el filtro de Bloom, eficiente en espacio, en 1970. Carter y Wegman formalizaron el hashing universal y, posteriormente, el fuertemente universal a finales de los años 70 y principios de los 80, proporcionando al hashing su rigurosa base teórica.

Key figures

  • Hans Peter Luhn
  • J. Lawrence Carter
  • Mark Wegman
  • Burton H. Bloom

Related topics

Seminal works

  • bloom1970
  • carter1981
  • cormen2009

Frequently asked questions

¿Por qué las operaciones de la tabla hash se describen como O(1) esperado en lugar de O(1) garantizado?
Si muchas claves colisionan, las operaciones pueden degradarse hacia O(n). El tiempo constante se mantiene en expectativa bajo una buena función hash y un factor de carga acotado; el hashing universal hace improbable un caso malo, pero las garantías en el peor de los casos requieren hashing perfecto u otras técnicas.
¿Qué es un filtro de Bloom y en qué se diferencia de una tabla hash?
Un filtro de Bloom es una estructura probabilística compacta que prueba la pertenencia a un conjunto utilizando varias funciones hash sobre un array de bits. Puede producir falsos positivos pero nunca falsos negativos, y no almacena claves, intercambiando la exactitud por grandes ahorros de espacio en comparación con una tabla hash.

Methods for this concept

Related concepts