Problème
Angenommen, Sie haben N (~100k-1m) Ganzzahlen/Bitstrings, die jeweils K (z. B. 256) Bits lang sind. Der Algorithmus sollte die k Paare mit dem geringsten paarweisen Hamming-Abstand zurückgeben.
Beispiel
N = 4
K = 8
i1 = 00010011
i2 = 01010101
i3 = 11000000
i4 = 11000011
HammingDistance(i1,i2) = 3
HammingDistance(i1,i3) = 5
HammingDistance(i1,i4) = 3
HammingDistance(i2,i3) = 4
HammingDistance(i2,i4) = 4
HammingDistance(i3,i4) = 2
Für k=1 sollte es die Paarliste {(i3,i4)} zurückgeben. Für k=3 sollte sie {(i1,i2), (i1,i4), (i3,i4)} zurückgeben. Und so weiter.
Algorithmus
Bei der naiven Implementierung werden alle paarweisen Abstände berechnet, die Paare sortiert und das k mit dem geringsten Abstand zurückgegeben: O(N^2). Gibt es bessere Datenstrukturen oder Algorithmen? Es sieht so aus, als ob die Ideen aus Effiziente Suche nach binären Zeichenketten mit geringer Hamming-Distanz in großen Mengen kann nicht verwendet werden, da es keine einzige Abfrage-Ganzzahl gibt.