Digamos que tengo un algoritmo hash, y es agradable y suave (las probabilidades de que surja un valor hash son las mismas que cualquier otro valor).¿Cómo calcular las probabilidades de una colisión en algoritmos hash?
Ahora digo que sé que las probabilidades de elegir 2 hashes y que haya una colisión son (por los argumentos) 50000: 1.
Ahora digo que recojo 100 hashes. ¿Cómo calculo las probabilidades de una colisión dentro de ese conjunto de 100 valores, dadas las probabilidades de una colisión en un conjunto de 2?
¿Cuál es la solución general a esto, por lo que puedo llegar a una serie de intentos de hash después de los cuales las probabilidades caen por debajo de un umbral aceptable? P.ej. Puedo decir cosas como "Un lote de creaciones de valor hash 49999 tiene una alta probabilidad de colisión".
Un algoritmo hash perfecta es aquella donde no hay colisiones. Solo pensé en señalarlo. Disculpas por ser exigente :-) – CiscoIPPhone
Suponiendo que el dominio de la función hash es mayor que el rango, eso es imposible. Si no es así, ¿por qué molestarse en usar un hash? – recursive
Bueno, todavía obtiene la ventaja de velocidad de usar una función hash en lugar de buscar. http://en.wikipedia.org/wiki/Perfect_hash_function – CiscoIPPhone