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
3
ocupadas
0
colisiones
30%
factor carga
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
3
ocupadas
0
colisiones
30%
factor carga
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
3
ocupadas
0
colisiones
30%
factor carga
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
3
ocupadas
0
colisiones
30%
factor carga
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
3
ocupadas
1
colisiones
30%
factor carga
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
3
ocupadas
0
colisiones
30%
factor carga
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
3
ocupadas
0
colisiones
30%
factor carga
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
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 |