2011-01-29 18 views
7

Normalmente, el objetivo del hash es convertir una función continua en una función discreta: un pequeño cambio en la entrada debería provocar un gran cambio en la salida. Sin embargo, ¿hay algún algoritmo hashing que, (muy) hablando en términos generales, devuelva hashes similares pero (aún diferentes) para entradas similares?Similitud hashing

(Un ejemplo del uso de esto sería para comprobar si dos archivos son "similares", al comprobar su hashes de similitud. Por supuesto, cierto grado de fracaso siempre es aceptable.)

+0

¿Cómo se define "similar"? – thkala

+0

Se considerarían similares dos flujos de aproximadamente la misma longitud y aproximadamente los mismos datos en el mismo orden. (Tenga en cuenta que no necesito decir "¿Son estos dos similares?" Como un booleano, sino más bien como un tipo de sistema de calificación numérica. Por ejemplo, [1, 2, 3, 4] podría ser más similar a [1, 2, 3] que a [4, 3, 2, 1] ...) – Mehrdad

+0

El objetivo de una función hash es asegurarse de que un cambio en cualquier bit de la entrada debe tener la posibilidad de cambiando * cada * bit de la salida. – Pointy

Respuesta

10

Mira Locality Sensitive Hashing (LSH) . Esa es una forma probabilística de encontrar rápidamente un montón de puntos cerca de uno dado, por ejemplo.

+0

+1 parece ser exactamente lo que estaba buscando ... No sabía los términos para buscar; ¡Gracias! :) – Mehrdad