Probabilmente non è quello che vuoi, ma dal momento che è interessante, ho pensato di farlo apparire. In realtà circa un decennio fa è stato prodotto qualcosa chiamato Metrica di similarità (vedi anche Clustering per compressione ). L'idea è data x
e y
vogliamo calcolare la lunghezza del programma più breve che produce x
dato y
e y
dati x
(modulo alcuni fattori fondali). Se normalizziamo questo in modo appropriato, otteniamo una buona nozione di somiglianza relativa. Tuttavia, questa nozione è definita in termini di complessità di Kolmogorov che non è calcolabile, quindi questo in realtà non produce un algoritmo utilizzabile. Dobbiamo invece approssimarlo. Questo porta alla distanza di compressione normalizzata che è semplicemente:
NCD(x,y) = (C(x++y) - min(C(x),C(y))/max(C(x),C(y))
dove x++y
rappresenta la concatenazione di x
e y
visualizzati come sequenze di bit. E, soprattutto, C(x)
rappresenta la lunghezza in bit della rappresentazione compressa di x
per un algoritmo di compressione (che si comporta appropriatamente) C
. Fondamentalmente, se si prende un algoritmo di compressione, come gzip
, si può semplicemente comprimere ogni input e la loro concatenazione e usare la formula sopra per ottenere un numero razionale tra 0 e 1 che indica come "simili" sono. (È quindi possibile arrotondare quel numero razionale al numero di punto fisso più vicino per un dato numero di bit per ottenere un output a dimensione fissa.) Ciò presuppone che ogni bit sia significativo. Potrebbe avere senso "normalizzare" l'input (ad esempio rimuovendo spazi bianchi estranei o filtri passa-basso) per evitare differenze spurie. Concettualmente, questo può essere piegato nell'algoritmo di compressione. Ciò fa notare che questa nozione di somiglianza varia con l'algoritmo di compressione, sebbene gli algoritmi di compressione generici siano spesso adeguati. Alcuni strumenti per farlo sono qui , anche se sarebbe facile eseguire il rollover.
Sospetto che un vero compressore sarà "troppo buono" per trovare somiglianze con i tuoi scopi. Cioè, troverà la somiglianza tra le cose che non vuoi considerare simili. Potrebbe essere tecnicamente risolvibile con una scelta adeguata di compressore, ma l'uso di qualche altra metrica potrebbe avere più senso di ciò.