Junior
¿De qué componentes consta una tabla hash?
sobes.tech AI
Respuesta de la IA
Una tabla hash consta de dos componentes principales:
-
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).
-
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