ley - ¿Cuál es el propósito de la información hash?
parlamento europeo internet (5)
Después de que me enseñaron cómo crear una tabla hash en clase, no entiendo cuándo los datos hash serían útiles. Me parece que todo lo que hace hash es almacenar información en posiciones semialeatorias en una matriz. Quiero saber cómo se puede hacer útil alguno de los datos después de su almacenamiento.
Mi pregunta es esta: ¿Cuáles son algunos ejemplos donde la información hash es beneficiosa? ¿Cómo se recuperan los datos de cualquier manera organizada? Parece estar colocado en posiciones arbitrarias donde sería difícil recuperarlo.
Hashing es una técnica útil para búsqueda rápida de claves. Le permite a uno encontrar más eficientemente un valor en lugar de escanear una lista de principio a fin.
Hashing puede usarse para muchos propósitos:
Se puede usar para comparar grandes cantidades de datos. Usted crea los hash para los datos, almacena los hashes y luego si quiere comparar los datos, simplemente compara los hashes.
Hashes se puede usar para indexar datos. Se pueden usar en tablas hash para señalar a la fila correcta. Si desea encontrar rápidamente un registro, calcule el hash de los datos y vaya directamente al registro al que apunta el registro hash correspondiente. (Esto supone que tiene una lista ordenada de valores hash que apuntan a los registros reales)
Se pueden usar en aplicaciones criptográficas como firmas digitales.
Hashing se puede usar para generar cadenas aparentemente aleatorias.
Aquí están las aplicaciones de las funciones hash que enumera la wikipedia:
- Encontrar registros duplicados
- Encontrar registros similares
- Encontrar subcadenas similares
- Hashing geométrico
Ahora con respecto a la tabla hash , aquí hay algunos puntos a tener en cuenta:
Si está utilizando una tabla hash, los valores hash en la tabla deben estar ordenados. De lo contrario, deberá crear un índice en la columna hash. Algunas implementaciones almacenan el hash por separado de una manera ordenada y apuntan al registro original.
Si alguien está almacenando hashes en un orden semialeatorio, debe ser debido a los motivos anteriores o simplemente porque quiere almacenar el resumen del mensaje de la información para comparar, encontrar duplicados, etc. y no como un índice de los datos.
Hay un par de razones típicas para hash de datos. En el ejemplo al que hace referencia, debe cifrar los datos y usarlos como una clave para extraer el valor real del elemento hash. Los datos hash a menudo se denominan clave y hacen referencia a un depósito donde se puede encontrar el valor real sin hash.
La otra razón típica es crear una firma del valor hash para que pueda verificar si el valor ha sido cambiado por otra persona. Como generalmente es raro, dependiendo del algoritmo utilizado, tener dos elementos hash con el mismo valor, puede volver a generar un valor y compararlo con el valor hash guardado para verificar si el elemento sigue siendo el mismo.
¿Alguna vez ha usado un diccionario o un conjunto? Normalmente se implementan en términos de una tabla hash porque el valor asociado con una clave se puede encontrar rápidamente.
{
''WA'': ''Washington'',
''WV'': ''West Virginia'',
''WY'': ''Wyoming''
}
Uno de los principales usos de las tablas hash que creó en clase es cuando necesita tiempos de búsqueda O (1) rápidos. Tendrás dos componentes, claves y valores.
La función hash transforma la clave en un hash . Ese hash es un número, y específicamente, es el índice de los datos en el conjunto.
Por lo tanto, cuando necesita buscar la reputación de Agscala en una tabla hash y ha utilizado su nombre de usuario como clave, casi no necesita tiempo para localizar y encontrar el valor relevante. Simplemente vuelve a mezclar su nombre de usuario y viola, existe el índice de los datos que estaba buscando. No tuvo que iterar sobre toda la matriz buscando ese valor específico.
Para algunas referencias, la página de Wikipedia en tablas Hash es bastante buena.