Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Resumen académico sobre Tablas Hash, Resúmenes de Tecnologías de la Información y las Comunicaciones (TIC)

Resumen sobre Tablas Hash que incluye conceptos básicos, función hash, universal hashing, colisiones y métodos para solucionar colisiones

Tipo: Resúmenes

2025/2026

Subido el 16/04/2026

karla-fragoso-2
karla-fragoso-2 🇲🇽

1 documento

1 / 5

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Introducción
Una tabla de hash es una estructura de datos que asocia claves únicas con valores mediante una
función hash. Su principal objetivo es resolver el problema de la búsqueda ineficiente en grandes
colecciones de datos. Mientras que una búsqueda lineal en una lista tiene complejidad O(n), las tablas
hash ofrecen, en promedio y bajo condiciones adecuadas, un tiempo de acceso O(1) (tiempo
constante).
El análisis teórico de su eficiencia se basa en la suposición de hashing simple uniforme (Simple
Uniform Hashing Assumption), aunque en la práctica se aproxima mediante técnicas como el universal
hashing.
Ejemplos de uso en la vida real:
Bases de datos: Indexación de registros para acelerar consultas (índices hash).
Lenguajes de programación: Implementación interna de diccionarios (dict en Python, HashMap
en Java).
Cachés: Almacenamiento de datos de acceso frecuente (Redis, Memcached).
Compiladores: Tablas de símbolos para variables y funciones.
Conceptos básicos
La estructura consiste en un arreglo de posiciones llamadas buckets o cubetas. Cada entrada
almacena un par (clave, valor). Las claves deben ser hasheables, lo que generalmente implica que
sean inmutables.
Operaciones principales:
Inserción: Aplicar la función hash a la clave para determinar la posición e insertar el par.
Búsqueda: Calcular el índice con la función hash y recuperar el valor.
Eliminación: Localizar y borrar el par asociado a la clave.
En algunos métodos, como el direccionamiento abierto, la eliminación requiere marcadores especiales
(“deleted”) para no romper las secuencias de sondeo.
Función Hash
La función hash transforma una clave arbitraria en un índice entero dentro del tamaño de la tabla (m).
Propiedades de una buena función hash:
Determinística: La misma clave siempre produce el mismo índice.
Rápida de calcular: Su costo debe ser bajo.
Distribución uniforme: Repartir las claves equitativamente para minimizar colisiones.
pf3
pf4
pf5

Vista previa parcial del texto

¡Descarga Resumen académico sobre Tablas Hash y más Resúmenes en PDF de Tecnologías de la Información y las Comunicaciones (TIC) solo en Docsity!

Introducción

Una tabla de hash es una estructura de datos que asocia claves únicas con valores mediante una función hash. Su principal objetivo es resolver el problema de la búsqueda ineficiente en grandes colecciones de datos. Mientras que una búsqueda lineal en una lista tiene complejidad O(n), las tablas hash ofrecen, en promedio y bajo condiciones adecuadas, un tiempo de acceso O(1) (tiempo constante). El análisis teórico de su eficiencia se basa en la suposición de hashing simple uniforme (Simple Uniform Hashing Assumption), aunque en la práctica se aproxima mediante técnicas como el universal hashing. Ejemplos de uso en la vida real:

  • Bases de datos: Indexación de registros para acelerar consultas (índices hash).
  • Lenguajes de programación: Implementación interna de diccionarios (dict en Python, HashMap en Java).
  • Cachés: Almacenamiento de datos de acceso frecuente (Redis, Memcached).
  • Compiladores: Tablas de símbolos para variables y funciones.

Conceptos básicos

La estructura consiste en un arreglo de posiciones llamadas buckets o cubetas. Cada entrada almacena un par (clave, valor). Las claves deben ser hasheables, lo que generalmente implica que sean inmutables. Operaciones principales:

  • Inserción: Aplicar la función hash a la clave para determinar la posición e insertar el par.
  • Búsqueda: Calcular el índice con la función hash y recuperar el valor.
  • Eliminación: Localizar y borrar el par asociado a la clave. En algunos métodos, como el direccionamiento abierto, la eliminación requiere marcadores especiales (“deleted”) para no romper las secuencias de sondeo.

Función Hash

La función hash transforma una clave arbitraria en un índice entero dentro del tamaño de la tabla (m). Propiedades de una buena función hash:

  • Determinística: La misma clave siempre produce el mismo índice.
  • Rápida de calcular: Su costo debe ser bajo.
  • Distribución uniforme: Repartir las claves equitativamente para minimizar colisiones.

Universal Hashing

El universal hashing consiste en utilizar una familia de funciones hash donde la probabilidad de colisión entre cualquier par de claves distintas es ≤ 1/m. Este concepto es fundamental para garantizar el análisis teórico del rendimiento esperado en O(1). Ejemplos de funciones hash:

  • Método de división:

ℎ(𝑘)^ = 𝑘 mod 𝑚

Se recomienda que m sea un número primo grande para mejorar la distribución.

  • Método de multiplicación:

ℎ(𝑘)^ = [𝑚(𝑘 ⋅ 𝐴 mod 1 )]

donde A suele ser una constante irracional como (√ 5 − 1 ) ∕ 2

  • Hash para cadenas: Funciones reales ampliamente usadas incluyen djb2, FNV-1a o MurmurHash3. Estas funciones están diseñadas para ser rápidas y producir una buena distribución de valores, reduciendo significativamente las colisiones. En sistemas modernos se prefieren funciones hash rápidas no criptográficas, pero con semillas aleatorias para mejorar la seguridad contra ataques.

Colisiones

Una colisión ocurre cuando dos claves distintas producen el mismo índice:

Las colisiones son inevitables debido al principio del palomar (pigeonhole principle), ya que el espacio de claves posibles suele ser mucho mayor que el tamaño de la tabla (m). Si no se manejan correctamente, pueden degradar el rendimiento hasta O(n) en el peor caso.

Métodos de resolución de colisiones

1. Encadenamiento (Separate Chaining)

Cada bucket apunta a una lista enlazada (u otra estructura) que contiene los elementos que colisionan en esa posición. Ventajas:

  • Implementación sencilla.
  • Eliminación eficiente.
  • Permite factor de carga α > 1.

Rehashing

Cuando el factor de carga supera un umbral, se crea una tabla más grande (normalmente el doble del tamaño y preferiblemente primo) y se reinsertan todos los elementos.

  • Costo puntual: O(n)
  • Costo amortizado por operación: O(1)

Complejidad temporal

Operación Promedio (buen hashing y α controlado) Peor caso

Inserción O(1)^ O(n)

Búsqueda O(1)^ O(n)

Eliminación O(1)^ O(n)

Las tablas hash son más rápidas en promedio que los árboles binarios equilibrados (O(log n)), aunque estos últimos mantienen el orden de las claves, lo cual es útil para consultas por rango.

Ventajas y desventajas

Ventajas:

  • Acceso extremadamente rápido en promedio.
  • Escalabilidad para grandes volúmenes de datos.
  • Soporte para múltiples tipos de claves (siempre que sean hasheables). Desventajas:
  • Las colisiones pueden degradar el rendimiento.
  • No mantienen el orden de los datos.
  • Posible uso ineficiente de memoria.
  • Vulnerables a ataques de hash flooding (denegación de servicio). Mitigación moderna: Uso de funciones hash con semilla aleatoria por ejecución (ej. SipHash) o conversión automática de listas enlazadas a árboles balanceados cuando las cadenas son largas.

Aplicaciones reales

  • Lenguajes de programación: dict (Python), HashMap/HashSet (Java), unordered_map (C++).
  • Bases de datos y cachés: Redis, Memcached, índices hash en sistemas relacionales.
  • Seguridad: Las contraseñas se protegen con funciones criptográficas lentas como bcrypt, Argon2 o PBKDF2 (las tablas hash se usan para indexar usuarios o sesiones).
  • Integridad de datos: Verificación de archivos mediante MD5 o SHA-256.
  • Otras: Compiladores, enrutamiento de redes, Bloom filters y perfect hashing en estructuras estáticas.

Conclusión

Las tablas de hash son una de las estructuras de datos más importantes en informática por su capacidad de ofrecer acceso casi instantáneo a grandes volúmenes de información. Su eficiencia depende de una buena función hash, una estrategia adecuada de resolución de colisiones, el control del factor de carga y técnicas de redimensionamiento. Gracias a estas características, siguen siendo fundamentales en sistemas modernos, desde lenguajes de programación hasta bases de datos distribuidas y cachés de alto rendimiento. El estudio de sus variantes avanzadas (como cuckoo hashing o perfect hashing) continúa siendo un área activa de investigación.

Bibliografía:

  • Joaquín, F. (2019-2020). Notas de Clase. Estructuras de Datos: Tablas Hash. Universidad Nacional del Sur. https://cs.uns.edu.ar/~federico.joaquin/web/public/ed/Conceptos- b%C3%A1sicos-tablas-hash.pdf
  • Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2022). Introduction to Algorithms (4th ed.). MIT Press.
  • Medina Rosas, J. A. (2009). Funciones Hash Criptográficas [Tesis de Licenciatura, Universidad Nacional Autónoma de México]. Facultad de Ciencias. http://repositorio.fciencias.unam.mx:8080/jspui/bitstream/11154/139759/1/tesis%2012.pdf
  • StudySmarter. (2024). Tablas Hash: Conceptos, Aplicaciones. StudySmarter GmbH. https://www.studysmarter.es/resumenes/ciencias-de-la-computacion/estructuras-de- datos/tablas-hash/
  • Franco Martínez, E. A. (s.f.). Tema 05: Tablas hash [Presentación de diapositivas]. Instituto Politécnico Nacional, Escuela Superior de Cómputo. https://docencia.eafranco.com/materiales/estructurasdedatos/05/Tema05.pdf
  • Universidad de Zaragoza. (2023). Estructuras de Datos y Algoritmos: El TAD tabla y las tablas dispersas (Lección 19). Departamento de Informática e Ingeniería de Sistemas. https://webdiis.unizar.es/asignaturas/EDA/curso_23-24/lecciones/leccion_19.pdf