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)
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist eigentlich:
InformationsquelleAutor leiz
Wenn Sie könnten Sonde in einem Konstanten Betrag von jedem Punkt und verwenden iterative Vertiefung DFS, solltest du nie überprüfen weiter auseinander als die zwei nächsten Punkte...und da sind Sie nicht abhängig von einem gescheiterten pass, würden Sie nie brauchen, berechnen die Art und Weise-ID DFS neigt.
InformationsquelleAutor max
Nicht. Minimale Distanz zwischen ALLEN Punkten in O( n ^ 2 ), da müssen Sie vergleichen, jeder Punkt gegen jeden anderen Punkt. Technisch ist es n * n /2, weil Sie nur zu füllen, haben zur Hälfte füllen der matrix.
Gibt es schnellere algorithmen für die Suche der nächsten Nachbarn zu einem gegebenen Punkt. Leider müssen Sie dann tun Sie dies für jede Stelle zu finden, die nächsten zwei Punkte.
InformationsquelleAutor S.Lott