Actualmente estamos tratando con la función hash en mi clase. Nuestro instructor nos pidió una función de hash en Internet para compararla con las dos que usamos en nuestro código.Función hash para una cadena
La primera de ellas:
int HashTable::hash (string word)
// POST: the index of entry is returned
{ int sum = 0;
for (int k = 0; k < word.length(); k++)
sum = sum + int(word[k]);
return sum % SIZE;
}
Segundo:
int HashTable::hash (string word)
{
int seed = 131;
unsigned long hash = 0;
for(int i = 0; i < word.length(); i++)
{
hash = (hash * seed) + word[i];
}
return hash % SIZE;
}
donde el tamaño es 501 (el tamaño de la tabla hash) y la entrada proviene de un archivo de texto de 20.000 palabras.
Vi this pregunta con algunos ejemplos de código pero no estaba exactamente seguro de qué buscar en una función hash. Si entiendo correctamente, en mi caso, un hash toma una entrada (cadena) y hace un cálculo matemático para asignarle un número a la cadena y lo inserta en una tabla. Este proceso se realiza para aumentar la velocidad de búsqueda en la lista?
Si mi lógica es sólida, ¿alguien tiene un buen ejemplo o un recurso que muestra una función de hash diferente que implica una cadena? O incluso el proceso de escribir mi propia función hash eficiente.
Usted acaba de proporcionar 2 respuestas a su pregunta. – Pubby
¿Cómo puede su instructor pedirle que analice dos funciones hash cuando no le ha enseñado nada acerca de las tablas/funciones hash? –
"¿Alguien tiene un buen ejemplo o un recurso?" [Sí.] (Http://en.wikipedia.org/wiki/Hash_function#Hash_function_algorithms) –