Der Schnellste Weg zu finden, der minimale Abstand zwischen den Punkten

Habe ich eine Reihe von 2D-Punkte und müssen feststellen, dass die Schnellste Weg, um herauszufinden, welches paar von Punkten ist die kürzeste Entfernung in der Menge.

Was ist der optimale Weg, dies zu tun? Mein Ansatz ist, um Sie zu Sortieren mit quicksort und berechnen dann die Entfernungen. Diese wäre O(nlogn + n) = O(nlogn).

Ist es möglich, es zu tun in der linearen Zeit?

Dank.

Wie Sie Sortieren in zweidimensionalen Daten mit quicksort? Und wie funktioniert diese Hilfe finden die beiden nächsten Punkte?
Ich habe gerade diese Sortieren indem Sie auf die x-Koordinate. Im Grunde scheint es implementiert habe ich den Algorithmus erklärt in en.wikipedia.org/wiki/Closest_pair_problem. Zuerst Sortieren nach x, dann teilen und zu erobern. So scheint es, gibt es keinen schnelleren Weg.
Sortieren von X keinen echten Mehrwert, da die nächsten Punkte können nicht schließen Sie die X-Werte. Und Sortieren von X nicht reduzieren die Notwendigkeit zu vergleichen, die jeder Punkt gegen jeden anderen Punkt finden, der nächste paar.
Eigentlich ist es nicht. Blick auf den Wikipedia-link oben und die Teile und herrsche-Lösung. Es ist O(N log N).
Der Wikipedia-Artikel sagt, es ist eigentlich O(n log log n), wenn Boden ist eine Konstante Zeit (aber ich glaube nicht, dass es tatsächlich ist, für beliebig große zahlen)

InformationsquelleAutor | 2009-04-25

Schreibe einen Kommentar