UMG MARIANO GÁLVEZ

Universidad Mariano Gálvez de Guatemala

Estructura de Datos

TABLA HASH

8 Métodos de Inserción

Demostración práctica de los métodos de función hash para insertar claves numéricas y de texto en una tabla de tamaño m = 10. Las colisiones se resuelven por sondeo lineal.

Claves de ejemplo

12345 Maria 999
num numérica str texto

Prueba tu propia clave

Ingresa cualquier valor y mira cómo lo procesa cada método en tiempo real

Escribe algo arriba para ver los resultados
1

Método de Extracción

Extrae dígitos en posiciones específicas (1° y último) y los combina, luego aplica módulo.

Proceso de inserción

Clave Tipo Índice h(k) Índice final Detalle del cálculo
12345 num 5 5 keyToNum(12345) = 12345 → dígitos extraídos (1° y último): 15 = 15 → 15 % 10 = 5
Maria str 0 0 keyToNum(Maria) = 490 → dígitos extraídos (1° y último): 40 = 40 → 40 % 10 = 0
999 num 9 9 keyToNum(999) = 999 → dígitos extraídos (1° y último): 99 = 99 → 99 % 10 = 9

Estado final de la tabla

0
Maria str
5
12345 num
9
999 num

3

ocupadas

0

colisiones

30%

factor carga

2

Método de División

h(k) = k mod m. El método más simple y directo. Funciona bien con m primo.

Proceso de inserción

Clave Tipo Índice h(k) Índice final Detalle del cálculo
12345 num 5 5 keyToNum(12345) = 12345 → 12345 mod 10 = 5
Maria str 0 0 keyToNum(Maria) = 490 → 490 mod 10 = 0
999 num 9 9 keyToNum(999) = 999 → 999 mod 10 = 9

Estado final de la tabla

0
Maria str
5
12345 num
9
999 num

3

ocupadas

0

colisiones

30%

factor carga

3

Método de Plegado

Divide la clave en partes de 2 dígitos, las suma y aplica módulo.

Proceso de inserción

Clave Tipo Índice h(k) Índice final Detalle del cálculo
12345 num 1 1 keyToNum(12345) = 12345 → partes: [12, 34, 5] → suma = 51 → 51 % 10 = 1
Maria str 9 9 keyToNum(Maria) = 490 → partes: [49, 0] → suma = 49 → 49 % 10 = 9
999 num 8 8 keyToNum(999) = 999 → partes: [99, 9] → suma = 108 → 108 % 10 = 8

Estado final de la tabla

1
12345 num
8
999 num
9
Maria str

3

ocupadas

0

colisiones

30%

factor carga

4

Método de Plegado de Frontera

Como el plegado pero invierte las partes alternas antes de sumar (reflexión de frontera).

Proceso de inserción

Clave Tipo Índice h(k) Índice final Detalle del cálculo
12345 num 0 0 keyToNum(12345) = 12345 → partes con inversión: [12, rev(34)=43, 5] → suma = 60 → 60 % 10 = 0
Maria str 9 9 keyToNum(Maria) = 490 → partes con inversión: [49, rev(0)=0] → suma = 49 → 49 % 10 = 9
999 num 8 8 keyToNum(999) = 999 → partes con inversión: [99, rev(9)=9] → suma = 108 → 108 % 10 = 8

Estado final de la tabla

0
12345 num
8
999 num
9
Maria str

3

ocupadas

0

colisiones

30%

factor carga

5

Método de Cuadrado Medio

Eleva la clave al cuadrado y extrae los dígitos del centro del resultado.

Proceso de inserción

Clave Tipo Índice h(k) Índice final Detalle del cálculo
12345 num 0 0 keyToNum(12345) = 345 → 345² = 119025 → dígitos centrales = '90' → 90 % 10 = 0
Maria str 1 1 keyToNum(Maria) = 490 → 490² = 240100 → dígitos centrales = '01' → 01 % 10 = 1
999 num 0 2 ⚡col. keyToNum(999) = 999 → 999² = 998001 → dígitos centrales = '80' → 80 % 10 = 0

Estado final de la tabla

0
12345 num
1
Maria str
2
999 num

3

ocupadas

1

colisiones

30%

factor carga

6

Método de Análisis de Dígitos

Analiza la distribución de dígitos en posiciones pares e impares para seleccionar el índice.

Proceso de inserción

Clave Tipo Índice h(k) Índice final Detalle del cálculo
12345 num 2 2 keyToNum(12345) = 12345 → dígitos pos. par: 9, pos. impar: 6 → selección = |9-6|+9 = 12 → 12 % 10 = 2
Maria str 9 9 keyToNum(Maria) = 490 → dígitos pos. par: 4, pos. impar: 9 → selección = |4-9|+4 = 9 → 9 % 10 = 9
999 num 7 7 keyToNum(999) = 999 → dígitos pos. par: 18, pos. impar: 9 → selección = |18-9|+18 = 27 → 27 % 10 = 7

Estado final de la tabla

2
12345 num
7
999 num
9
Maria str

3

ocupadas

0

colisiones

30%

factor carga

7

Método de Dependiente de Longitud

Combina el valor numérico de la clave con su longitud: (k + longitud²) mod m.

Proceso de inserción

Clave Tipo Índice h(k) Índice final Detalle del cálculo
12345 num 0 0 clave='12345' longitud=5 → keyToNum=12345 → (12345 + 5²) = 12370 → 12370 % 10 = 0
Maria str 5 5 clave='Maria' longitud=5 → keyToNum=490 → (490 + 5²) = 515 → 515 % 10 = 5
999 num 8 8 clave='999' longitud=3 → keyToNum=999 → (999 + 3²) = 1008 → 1008 % 10 = 8

Estado final de la tabla

0
12345 num
5
Maria str
8
999 num

3

ocupadas

0

colisiones

30%

factor carga

8

Método de Compresión

Aplica operaciones bit a bit (XOR + rotación) para comprimir la clave al tamaño de la tabla.

Proceso de inserción

Clave Tipo Índice h(k) Índice final Detalle del cálculo
12345 num 7 7 keyToNum(12345) = 12345 → rotación = 52462 → 12345 XOR 52462 = 64727 → |64727| % 10 = 7
Maria str 2 2 keyToNum(Maria) = 490 → rotación = 2042 → 490 XOR 2042 = 1552 → |1552| % 10 = 2
999 num 8 8 keyToNum(999) = 999 → rotación = 4093 → 999 XOR 4093 = 3098 → |3098| % 10 = 8

Estado final de la tabla

2
Maria str
7
12345 num
8
999 num

3

ocupadas

0

colisiones

30%

factor carga

Resumen Comparativo de los 8 Métodos

Colisiones generadas con las mismas 3 claves en tabla de tamaño 10

# Método Colisiones Factor de carga Complejidad Ideal para
1 Extracción 0 30% O(1) Claves con dígitos representativos
2 División 0 30% O(1) Uso general, m primo recomendado
3 Plegado 0 30% O(n) Claves largas, distribución uniforme
4 Plegado de Frontera 0 30% O(n) Claves largas con patrón repetitivo
5 Cuadrado Medio 1 30% O(1) Claves numéricas medianas
6 Análisis de Dígitos 0 30% O(n) Cuando se conoce distribución de dígitos
7 Dependiente de Longitud 0 30% O(1) Claves de longitud variable
8 Compresión 0 30% O(1) Máxima dispersión, claves arbitrarias