Estamos preparando el PDF de «Tablas hash». Se descargará automáticamente en cuanto esté listo.
← Lumbre

Estructuras de Datos y Algoritmos · 2.º Tablas hash

Portada de Tablas hash

Tablas hash

✦ La estructura más usada de la informática: convierte una búsqueda en un acceso directo · Estructuras de Datos y Algoritmos · Programación · en 8 minutos

Roadwise Consulting

Firmado y verificado · Biblioteca UNIV

Objetivo: Explica el funcionamiento de una tabla hash, el origen y tratamiento de las colisiones y el costo promedio y pesimista de sus operaciones.

8 min Estructuras de Datos y Algoritmos · Programación 18–30 años
Más
Tablas hash

Herramientas de la lección

◉ Entrar a La Matrix Sorpréndeme

Sobre este contenido

Ir a

Volver a Estructuras de Datos y Algoritmos · 2.º semestre Cursos Explorar Mi cuenta Salir del modo estudio

Tablas hash

Diagrama de estructuras de datos: arbol binario, lista enlazada y tabla hash.
Estructuras de datos fundamentales y analisis de complejidad algoritmica.

Mapa conceptual

  • Estructuras de Datos
    • Lineales
      • Arrays
      • Listas enlazadas
      • Pilas y Colas
    • No lineales
      • Arboles BST
      • Heaps
      • Grafos
    • Hash
      • Funcion hash
      • Colisiones
      • Rehashing
    • Algoritmos
      • Ordenamiento
      • Busqueda binaria
      • BFS DFS
    • Optimizacion
      • Big-O
      • Dinamica
      • Voracidad

Cómo funciona

  1. Una función hash toma la clave y la reduce a un número (un entero).
  2. Ese número módulo la capacidad de la tabla da el ÍNDICE del «cubo» donde irá el valor.
  3. Para leer, se repite el cálculo y se va directo a ese cubo.
  4. Resultado: acceso promedio O(1), sin recorrer nada.

El problema: colisiones

Distintas claves pueden producir el mismo índice: eso es una colisión. Como el número de claves posibles es infinito y los cubos finitos, por el principio del palomar las colisiones SON obligatorias; el diseño no las elimina, las gestiona.

  • Encadenamiento: cada cubo guarda una mini-lista de los que cayeron ahí. Buscar recorre solo esa lista.
  • Sondeo abierto: si el cubo está ocupado, se prueban cubos vecinos según una regla hasta hallar uno libre.
El O(1) de los diccionarios es PROMEDIO, no garantía. Asumir «siempre O(1)» es el error clásico.
EscenarioBúsquedaCuándo ocurre
Promedio (buen hash, α bajo)O(1)distribución uniforme de claves
Peor casoO(n)todas las claves colisionan (hash adversario o pésimo)
Cubo con cadena largaO(longitud de cadena)α alto o cluster de colisiones
Búsqueda: hash (plana) vs árbol (log) vs escaneo (lineal)

f(x) = x · f(x) = log(x) · f(x) = 1

Errores frecuentes

  • Asumir O(1) garantizado: una función hash que concentra claves (o un ataque deliberado, como el hash-flooding) degrada a O(n).
  • Olvidar que las claves deben ser INMUTABLES y hashables: mutar la clave de un elemento ya insertado rompe el cálculo del cubo y lo «pierde».
  • No dimensionar la tabla: α alto llena las cadenas; por eso se duplica el tamaño y se reinserta (rehash) al crecer.

Ejemplo resuelto

  1. Tabla de 10 cubos, función hash = longitud de la clave mod 10.
  2. Insertar «ana» (len 3) va al cubo 3; «luis» (len 4) al cubo 4; «eva» (len 3) al cubo 3.
  3. «ana» y «eva» colisionan: en encadenamiento, el cubo 3 guarda una lista de dos.
  4. Buscar «eva»: hash da 3, se recorre SOLO la lista de ese cubo (2 elementos) y se compara la clave.
  5. Si el cubo 3 acumulara miles, la búsqueda ahí sería lineal: señal de un hash que no dispersa.

Cuando escribes dict o set en Python, o cuando una base de datos resuelve una clave, o una caché consulta una sesión, hay una tabla hash detrás. Entender colisiones y factor de carga te advierte cuándo esa magia de «constant time» deja de serlo.

Una tabla hash da acceso promedio O(1), pero ¿qué situación la degrada hacia O(n)?

Relaciona cada término de una tabla hash con su papel:

      Anatomía del hash

      función hash
      clave a número
      cubo/bucket
      posición en la tabla
      colisión
      dos claves, mismo índice
      encadenamiento
      lista por cubo
      sondeo abierto
      probar cubos vecinos
      factor de carga α
      elementos / cubos
      O(1)
      promedio, no garantía
      clave inmutable
      requisito para hashar

      Toca una tarjeta para ver la respuesta.

      Video complementario
      Recurso audiovisual para reforzar los conceptos.

      Explica con tus palabras por qué un set en Python responde «¿está x?» muchísimo más rápido que una list para millones de elementos, y describe una situación en la que aun así el set se degradaría y perdería su ventaja.

      Tu texto se guarda sólo en este dispositivo.

      Las respuestas y tu progreso se guardan sólo en este dispositivo. Contenido firmado por su autoría mediante Lumbre.
      Más sobre esta lección
      Explora temas relacionados

      Conceptos

      Comentarios

      Inicia sesión para comentar.

      Todavía no hay comentarios. Sé la primera persona en opinar.