Es gibt ein Kapitel in Introduction to Algorithms, das dem Finden von zwei nächsten Punkten im zweidimensionalen Raum in O (n * logn) Zeit gewidmet ist. Sie können es auf google books überprüfen. In der Tat, ich schlage es für jeden vor, da die Art und Weise, wie man die Teile-und-herrsche-Technik auf dieses Problem anwendet, sehr einfach, elegant und beeindruckend ist.
Obwohl es nicht direkt auf Ihr Problem erweitert werden kann (als Konstante 7
würde durch 2^101 - 1
ersetzt werden), sollte es für die meisten Datensätze in Ordnung sein. Also, wenn Sie eine relativ zufällige Eingabe haben, gibt es Ihnen O(n*logn*m)
Komplexität wo n
ist die Anzahl der Punkte und m
ist die Anzahl der Dimensionen.
bearbeiten
Das ist alles unter der Annahme, dass Sie euklidischen Raum haben. Das heißt, die Länge des Vektors v
ist sqrt(v0^2 + v1^2 + v2^2 + ...)
. Wenn Sie jedoch Metrik wählen können, könnte es andere Optionen geben, um den Algorithmus zu optimieren.
Ist es ein metrischer Raum? – Seth
Aus Interesse, wo hast du einen 100-dimensionalen Raum bekommen? –
die Frage fehlt Klarheit. Ist das eine mathematische Frage? – Sarmaad