Trovare vettori di dimensioni elevate simili

6

Ho due elenchi (dimensioni m e n ) contenenti vettori di bit ad alta dimensione. Tutti i vettori hanno lo stesso numero di dimensioni e utilizzano Distanza di Hamming come misura se la distanza.

Per ogni elemento nel primo elenco voglio trovare gli elementi più vicini nel secondo elenco. Un elemento così vicino potrebbe differire di diverse migliaia di bit dall'elemento che sto cercando.

L'approccio ingenuo sarebbe calcolare la distanza di hamming per ogni coppia di vettori, ma ciò ha il tempo di esecuzione O (m * n) che lo rende impossibile. Quindi sto cercando un algoritmo che sia significativamente più veloce.

Diciamo che ho d = 10000, m = 1 miliardo e n = 100 miliardi e voglio che l'algoritmo termini in un paio di giorni di CPU.

Gli elementi nel primo elenco vengono creati prendendo un elemento casuale dalla seconda lista e sfogliando ogni bit con la stessa probabilità p < 0.5. Voglio supportare i valori di p che sono il più vicino possibile a 0,5. Sto bene con algoritmi probabilistici che trovano corrispondenze con alta probabilità.

    
posta CodesInChaos 16.01.2016 - 17:22
fonte

1 risposta

1

Solo un'intuizione. Non ho esaminato i dettagli e potrebbe essere imbarazzantemente sbagliato.

Poiché i tuoi vettori hanno tutti la stessa dimensionalità d e la loro distanza è definita come la loro distanza di hamming, puoi rappresentare ciascun vettore come un punto su un iper cubo bidimensionale. Il percorso tra due punti sarà la distanza di Hamming delle loro coordinate.

Tutti i punti in n sono contrassegnati. Questo richiede O(n) di tempo. Quindi per ogni punto in m si esegue una ricerca per ampiezza per ogni nodo marcato. Questo richiederà O(m * (|V|+|E|)) di tempo. Complessivamente O(n + m * (|V|+|E|)) tempo. Tuttavia, poiché il numero di vertici e spigoli derivano da d e d è una costante, restiamo con O(n + m) .

Potresti ridurre questo fattore costante applicando un algoritmo di ricerca più efficiente. Ad esempio: Trova in modo efficiente stringhe binarie con una bassa distanza di Hamming nel set di grandi dimensioni

    
risposta data 16.01.2016 - 19:58
fonte

Leggi altre domande sui tag