Der einfachste Weg, dies zu realisieren, ist eine Schleife durch alle Elemente und speichern K am nächsten. (Vergleich nur). Die Komplexität ist O(n)
, die nicht so gut ist, aber keine Vorverarbeitung benötigt wird. Also jetzt kommt es wirklich auf deine Bewerbung an. Sie sollten einen räumlichen Index zum Partitionierungsbereich verwenden, in dem Sie nach knn suchen. Für einige Anwendungen ist die gitterbasierte räumliche Struktur in Ordnung (teilen Sie einfach Ihre Welt in einen festen Block und suchen Sie erst innerhalb der nächsten Blöcke). Das ist gut, wenn Ihre Entitäten gleichmäßig verteilt sind. Besser ist eine hierarchische Struktur wie kd-Baum zu verwenden ... Es hängt wirklich alles auf, was Sie
für weitere Informationen mit Pseudo-Code Blick in diesen Präsentationen benötigen:
http://www.ulozto.net/xCTidts/dpg06-pdf
http://www.ulozto.net/xoh6TSD/dpg07-pdf
Für welche Probleme dieses Algorithmus anwenden werden? KNN ist wirklich einfach und Sie können versuchen, Ihren eigenen Ansatz zu implementieren. –