Sobes.tech
Junior

¿De qué componentes consta una tabla hash?

sobes.tech AI

Respuesta de la IA

Una tabla hash consta de dos componentes principales:

  1. Array (o lista) de celdas (cubetas): Es la estructura principal de almacenamiento. Cada celda puede contener uno o varios elementos de datos (pares clave-valor).

  2. Función hash: Algoritmo que transforma la clave de entrada en un índice numérico, que se usa para determinar la celda donde debe almacenarse o encontrarse el elemento de datos correspondiente.

Además, para resolver colisiones (situaciones en las que diferentes claves se hash en el mismo índice), se utilizan mecanismos como:

  • Método de encadenamiento: En cada celda se almacena una lista (por ejemplo, una lista enlazada) de elementos que se hash en ese índice.
  • Método de direccionamiento abierto: En caso de colisión, el algoritmo busca la siguiente celda libre siguiendo una estrategia determinada (sondeo lineal, sondeo cuadrático, doble hashing).
# Ejemplo de función hash simple
def simple_hash(clave, tamaño_array):
    # Transformación de la clave en un número
    if isinstance(clave, str):
        valor_hash = sum(ord(caracter) for caracter in clave)
    elif isinstance(clave, int):
        valor_hash = clave
    else:
        raise TypeError("Tipo de clave no soportado")

    # Devolver el índice dentro del tamaño del array
    return valor_hash % tamaño_array

# Ejemplo de componente de array de celdas para método de encadenamiento
class HashTable:
    def __init__(self, tamaño):
        self.tamaño = tamaño
        self.array = [[] for _ in range(self.tamaño)] # Array de listas (encadenamientos)

    def insertar(self, clave, valor):
        índice = simple_hash(clave, self.tamaño)
        self.array[índice].append((clave, valor)) # Añadir par clave-valor a la lista

    def buscar(self, clave):
        índice = simple_hash(clave, self.tamaño)
        for k, v in self.array[índice]:
            if k == clave:
                return v
        return None # Clave no encontrada