Академический Документы
Профессиональный Документы
Культура Документы
ALGORITMICA III
HASHING
(TABLAS DE DISPERSION)
Universo de Claves
1
U
2
5 8 0 2
3
Función de
6 hash o 4
1 función de
Dispersión 5
Claves 3
Almacenadas (K) 6
4
7
7
8
9
9
TABLAS DE DISPERSION
• FUNCION DE DISPERSION
Función que hace corresponder cada llave con un
número entero que es el código de dispersión
(hashcode) de esa llave
Características de una buena función de dispersión:
• El código de dispersión debe ser un número dentro
del rango de índices del vector (N-1)
• Suele utilizarse el operador módulo (%) para lograrlo
• Debe generar una dispersión uniforme de las llaves en
el vector
• Debe poder computarse de manera muy eficiente
FUNCIONES DE DISPERSION CUANDO
LA CLAVE ES UN NUMERO ENTERO
FUNCIONES DE DISPERSION CUANDO
LA CLAVE ES UN NUMERO ENTERO
FUNCIONES DE DISPERSION CUANDO
LA CLAVE ES UNA CADENA DE
CARACTERES
FUNCIONES DE DISPERSION CUANDO
LA CLAVE ES UNA CADENA DE
CARACTERES
FUNCIONES DE DISPERSION CUANDO
LA CLAVE ES UNA CADENA DE
CARACTERES
FUNCIONES DE DISPERSION CUANDO
LA CLAVE ES UNA CADENA DE
CARACTERES
hashCode() java
Todos los objetos String tienen el método hashCode() que se calcula
mediante la siguiente fórmula
𝑛−1
ℎ 𝑠 = 𝑠 𝑖 ∗ 31𝑛−1−𝑖
𝑖=0
PROBLEMA DE LAS COLISIONES
METODOS PARA LA RESOLUCION DE
COLISIONES
DISPERSION ABIERTA
Tablas de Direccionamiento Directo
1 1
Universo de Claves
U 2
3 3
5 8 0 2
4 5
6
5
1
Claves 3 6
Almacenadas
(K) 4
7 7
7
8
9 9 9
DISPERSION ABIERTA
DISPERSION ABIERTA
IMPLEMENTACION DE OPERACIONES
DISPERSION ABIERTA
IMPLEMENTACION DE OPERACIONES
DISPERSION CERRADA
DISPERSION CERRADA
0
Universo de
Claves 1
U K0
K5 2
K4
K8 K2
K7 3
Función
K6 de hash 4
K1 o
función 5
Claves
Almacenad
de
6
as (K) dispersi
K3 ón 7
8
K9
9
DISPERSION CERRADA
DISPERSION CERRADA
DISPERSION CERRADA
DISPERSION CERRADA