Frage

ex: Wenn ich die Zeichenfolge "ASDF" und den Set von Saiten ("Qwer", "ASWR", "ASDV") habe. Der Hamming-Abstand zwischen dem Set und der Zeichenfolge wäre als "ASDV" und "asdf" mit einem Hamming-Distanz.

Es ist leicht zu streben, mit so etwas zu träumen

generasacodicetagpre.

Ich denke, das hat o (n * k), wo n= len (string) und k= len (Set). Maximale Set-Größenwaagen mit N ^ 2, was bedeutet, dass wir im Wesentlichen mit O (N ^ 3) befassen. Die Sätze eher statisch, so wenn die Vorverarbeitungsvorgänge helfen würde, das ist definitiv eine Option.

0 . Wenn es einen anderen Weg gibt, sich dazu zu nähern, indem Sie den Raum als Ganzes anstelle der einzelnen Subsets betrachten, wäre ich alle Ohren. Als ich diesen Ansatz zum ersten Mal nahm, schien es, als würde der Raumkomplexität jedoch völlig lächerlich werden.

War es hilfreich?

Lösung

Zunächst ist der Hamming-Abstand zwischen den Saiten eine Metrik. Daher versuchen Sie, die k-am nächsten-Nachbarn in einem metrischen Raum zu finden (wobei k= 1).

Folglich möchten Sie möglicherweise einen Baum in Betracht ziehen, der der M-Tree-Datenstruktur ähnlich ist: (siehe http://en.wikipedia.org/wiki/m-tree und http : //www.vldb.org/conf/1997/p426.pdf ). Dieser Baum soll die Zahlenentfernungsvergleiche reduzieren, die ausgeführt werden müssen, um "nächstgelegene Nachbarn" zu finden.

Ich konnte persönlich keine Umsetzung eines M-Baums online finden, mit dem ich mit einem geschlossenen Thread nach einer reifen M-Tree-Implementierung sucht), also rollte ich meine eigenen.

Meine Implementierung ist hier: https://github.com/jon1van/mTreemaprepo

Die einzige andere Implementierung, die ich finden konnte, war dies: https://github.com/erdavila/m -Tree Ich habe diese Implementierung nicht gefallen, da es keine Entfernen von Funktionen (und mehrere andere Probleme) hatte (aber es war frei so ... das ist gut).

Sie möchten möglicherweise in Betracht ziehen, dass Sie mit meinem Code (die KNN in einem generischen Metrikbereich löst) mit einer LevenstHtein-Entfernungsmetrik ( http://en.wikipedia.org/wiki/levenhtein_distance ). Das Finden eines vollständig implementierten Levenshtein-Entfernungsmetrik Online sollte ziemlich einfach sein

Levenstein Entfernungsfunktion hinzugefügt ** http://code.google.com/p/google-refine/source/browse/trunk/src/main/java/edu/mit/simile/vicino/distance/levensteiindistance.java?r= 181

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top