Aquí hay dos ideas de alto nivel.
- Intenta encontrar una manera de asignar un objeto a un entero. Intente incorporar cada pequeña característica de ese objeto de modo que se obtenga un nuevo entero después de convertirlo. Que esto sea una función [matemáticas] f [/ matemáticas]
- Asigne este entero a un entero más pequeño que tendrá una longitud [matemática] 0 [/ matemática] a [matemática] m – 1 [/ matemática] donde [matemática] m [/ matemática] es la longitud de la matriz que está utilizando como una tabla hash. Que esto sea una función [matemáticas] g [/ matemáticas].
Deje que [math] x [/ math] sea el objeto de entrada. Debe encontrar [math] f (g (x)) [/ math], que es solo un número en el rango [math] 0 \ leq x <m [/ math].
Por ejemplo, considere el método
en java. Toma un objeto y escupe un número entero de 32 bits. Para un número entero, simplemente podría devolver su valor para una implementación de hashCode
. Para un objeto más complicado, como una cadena, puede combinar los valores ascii de todos los caracteres en la cadena para producir un número grande y luego devolver ese número mod [math] 2 ^ {32} [/ math]. hashCode
- ¿Qué área de finanzas NO se externalizará a computadoras y algoritmos en el futuro?
- ¿Cuál es la altura, el tamaño y la profundidad de un árbol binario?
- Mis ubicaciones están por venir, así que he estado implementando estructuras de datos y algoritmos en Python, pero llegué a saber que muchas empresas no tienen Python instalado en sus estaciones de trabajo. ¿Es verdad? Y si es así, ¿estaría bien cambiar de Python a Java, que no recuerdo mucho?
- ¿Cuánto AlphaGo es IA real frente a algoritmos de procesamiento informático muy potentes?
- ¿Qué es el tipo de selección?
Finalmente, después de tener la función [math] f [/ math], necesitamos una función [math] g [/ math] que se asigne al rango [math] [0, m-1] [/ math]. El más simple es [matemáticas] g (x) = x \ pmod {m} [/ matemáticas]. Las funciones más elegantes se utilizan en la práctica.