2. Sets

2.11. Hash

Sobre Hash ( esto es solo informativo para el Alumno, NO es parte del programa de la Materia.) 

Una función hash es cualquier función que se pueda utilizar para asignar datos de tamaño arbitrario a valores de tamaño fijo. Los valores devueltos por una función hash se denominan valores hash, códigos hash, resúmenes o simplemente hash. Los valores se utilizan generalmente para indexar una tabla de tamaño fijo llamada tabla hash. El uso de una función hash para indexar una tabla hash se denomina direccionamiento de almacenamiento de dispersión o hash.

Las funciones hash y sus tablas hash asociadas se utilizan en aplicaciones de almacenamiento y recuperación de datos para acceder a los datos en un tiempo pequeño y casi constante por recuperación. Requieren una cantidad de espacio de almacenamiento solo una fracción mayor que el espacio total requerido para los datos o registros en sí. El hash es una forma de acceso a datos que ahorra espacio en el almacenamiento y computacionalmente, que evita el tiempo de acceso no lineal de listas ordenadas y no ordenadas y árboles estructurados, y los requisitos de almacenamiento, a menudo exponenciales, de acceso directo a espacios de estado de claves grandes o de longitud variable.

El uso de funciones hash se basa en las propiedades estadísticas de la interacción de teclas y funciones: el comportamiento en el peor de los casos es intolerablemente malo con una probabilidad muy pequeña, y el comportamiento del caso promedio puede ser casi óptimo (colisión mínima). 

Las funciones hash están relacionadas con (y a menudo se confunden con) sumas de verificación, dígitos de verificación, huellas dactilares, compresión con pérdida, funciones de aleatorización, códigos de corrección de errores y cifrados. Aunque los conceptos se superponen en cierta medida, cada uno tiene sus propios usos y requisitos y está diseñado y optimizado de manera diferente. Las funciones hash se diferencian de los conceptos enumerados principalmente en términos de integridad de los datos.

Fuente: https://en.wikipedia.org/wiki/Hash_function

Para aquellos que se pregunten que al haber una colisión mínima que sucede?. Esto generaría un hash duplicado , la respuesta es sí, pero existe una solución sencilla,  aumentar la cantidad de bits de la función hash,  una variante de la función hash son SHA-1 y SHA-2. Esta última es sus variantes : 
  • SHA-2:SHA-224
  • SHA-2: SHA-256 
  • SHA-2: SHA-384
  • SHA-2: SHA-512
  • SHA-2: SHA-512/224
  • SHA-2: SHA-512/256

Al momento NO se encontraron COLISIONES!!