Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Una tabla
hash,
es
una estructura
de
datos que
asocia llaves o claves con valores. La operacin principal que soporta de
manera eficiente es la bsqueda: permite el acceso a los elementos
(telfono y direccin, por ejemplo) almacenados a partir de una clave
generada (usando el nombre o nmero de cuenta, por ejemplo).
Funciona transformando la clave con una funcin hash en un hash, un
nmero que identifica la posicin (casilla o cubeta) donde la tabla hash
localiza el valor deseado. En otras palabras, una tabla hash no es ms
que un vector unidimensional que almacena elementos pero que a la
hora de la bsqueda podemos encontrar un elemento X con rapidez sin
la necesidad de recorrer todo el arreglo en busca de dicho elemento.
Cmo funciona?
Primero que nada, se necesita una funcin hash que asigne un nmero
(valor hash/clave) a un elemento determinado:
ValorHash = hash(x)
Se hace uso de una funcin (como la anterior, por ejemplo) para indexar
un valor al arreglo, aunque a veces suele pasar que la clave que nos
arroja la funcin hash es mayor que el tamao del arreglo, para resolver
dicho problema se hace uso de un operador modulo:
Pero qu pasa cuando la funcin hash nos arroja una misma clave para
dos objetos distintos? A esto se le conoce como colisin.
Existen diversas maneras de manejar estas colisiones, una de ellas es la
exploracin lineal. Lo que hace la exploracin lineal es que cuando se
produce una colisin visita la siguiente casilla del arreglo, y si esta vaca
insertar el elemento en esa posicin, de lo contrario seguir buscando
casilla por casilla hasta encontrar un espacio libre.
Otra manera de manejar las colisiones es a travs de listas enlazadas,
as en cada posicin del arreglo se tiene una lista enlazada en la que se
van insertando los elementos cuya clave es la misma.
Factor
de
carga
Bsqueda
Aplicaciones
Correctores ortogrficos
Tablas de smbolos de compiladores
Diccionarios
Recomendaciones
A la hora de manejar las tablas hash es necesario tener en cuenta
algunas cosas para obtener un desempeo ms ptimo.
Es crucial que la funcin hash que nosotros vayamos a definir sea
fcilmente calculable para que al momento de ejecucin el coste de
operacin no sea un problema.