12 Hash
12 Hash
1/1
Tablas Hash
Las tablas hash son una estructura de datos en la que las operaciones de
inserción, búsqueda y eliminación son muy rápidas, independientemente
del tamaño de los datos.
Arreglo Asociativo.
Pares llave-valor.
Llaves únicas.
Función hash.
2/1
Tablas Hash
Diseñadas originalmente para resovler el problema de búsqueda, las
Tablas Hash es una estructura basada en arreglos, pero sin trabajar
directamente con el ı́ndice de ellos. Algunos usos:
Diccionarios en Python.
Map en C++.
Sistemas de contraseñas (encriptación).
Memoria Caché.
4/1
Tabla Hash: Métodos
Métodos
i n t s e a r c h ( i n t a r r a y [ 1 0 ] , c h a r ∗ k e y ){
r e t u r n a r r a y [ hash ( key ) ] ;
}
v o i d i n s e r t ( i n t a r r a y [ 1 0 ] , c h a r ∗ key , i n t v a l u e ){
a r r a y [ hash ( key ) ] = v a l u e ;
}
v o i d remove ( i n t a r r a y [ 1 0 ] , c h a r ∗ k e y ){
a r r a y [ h a s h ( k e y ) ] = NULL ;
}
5/1
Tablas Hash: Conflicto
Las tablas hash, al trabajar con un arreglo fijo, poseen un gran problema.
Dos llaves pueden ser asignadas a un mismo indice por la tabla hash.
Esto es lo que se llama conflicto.
6/1
Tablas Hash: Hashing Abierto
7/1
Tablas Hash: Hashing Cerrado
Otra for de resolución es el Hashing Cerrado. En donde existen
corrimientos de la posición de inserción si hay un conflicto. Esto evita el
uso de estructuras de datos adiciones, pero habrá que tener cuidados son
los overflow de memoria.
8/1
Tablas Hash: Hashing Cerrado
La primera técnica de Hashing Cerrado, busca insertar el dato en el
casillero disponible más cercano.
11/1
Tablas Hash: Método de la División
h(k) = k mod m
La recomendación general, es usar un largo de arreglo m que no esté
relacionado con la distribución de llaves. Por lo general, un número primo.
12/1
Tablas Hash: Método de la Multiplicación
13/1
Tablas Hash: Uso de Strings
14/1