|
Una función Hash es aquella que transforma un objeto, ya sea un texto o número, a un número entero positivo.La función Hash
permite la formación de las tablas Hash, es decir, ésta última es una consecuencia de la función Hash dentro de un arreglo de números enteros. Existen diversos tipos de funciones Hash, pero todas tienen el mismo
propósito, pero algunas son más efectivas dependiendo del número y variedad de datos a procesar. Otras funciones Hash son: Truncación: Se ignora una parte considerable del objeto a transformar y
sólo se tranforman a enteros algunas partes. Esta función es muy rápida, pero tiene como desventaja una mala distribución de los resultados a través de la tabla índice o Hash. Folding:
Se consideran individualmente cada uno de los elementos que forman la llave o key de un objeto. Luego se forma el entero a partir de diversas conbinaciones multiplicaciones o divisiones para cada elemento a tranformar.
Aritmética: Consiste en tomar el residuo de la división de el valor número de la llave entre el tamaño de la tabla Hash. Como ejemplo de implementación de una función Hash en Java, se tiene el
siguiente método, que representa una función Hash aritmética.
Se asume que hay una tabla Hash de 100 elementos. public final static int Hash(String key, int Tabla){int valorHash=0; for(int i=0; i<key.length(); i++){ valorHash=37*valorHash+key.charAt(i); valorHash %= Tabla;
if(valorHash<0){ valorHash += Tabla; return valorHash; } }
Analizando éste método se observa que se introducen como valores el objeto a tranformar y el tamaño del arreglo, o más profundamente tabla Hash, en la cual se introducirá es nuevo
entero. Es importante también decir que el entero estará dentro del tamaño de la tabla.Al final se regresa un valor entero, propio de la función Hash. |