Gibt es einen (effizienten) Algorithmus, um eine Teilmenge von Punkten aus einer Menge von Punkten ( ) so auszuwählen, dass sie den größten Bereich "abdecken" (über alle möglichen Teilmengen der Größe )?
Ich gehe davon aus, dass die Punkte in der 2D-Ebene liegen.
Der naive Algorithmus ist einfach, aber in Bezug auf die zeitliche Komplexität unerschwinglich:
for each subset of N points
sum distance between each pair of points in the subset
remember subset with the maximum sum
Ich suche nach einer effizienteren oder sogar ungefähren Methode.
Beispiel: Hier ist eine Ebene mit einigen zufälligen Punkten:
Für erwarte ich folgende Punkte:
Beachten Sie, dass die ausgewählten Punkte (rot) über die gesamte Ebene verteilt sind.
Ich habe einen Artikel " EFFIZIENTE AUSWAHL VON SPATIALLY DISTRIBUTED KEYPOINTS FÜR VISUAL TRACKING " gefunden, der sich auf dieses Problem bezieht. Dies setzt jedoch voraus, dass die Punkte gewichtet sind.
Antworten:
Hier ist eine ungefähre Lösung. Da N so groß und M so klein ist, wie wäre es mit Folgendem:
Die Intuition dahinter ist, dass, da N >> M und Sie Punkte so weit wie möglich voneinander entfernt haben möchten, diese wahrscheinlich nahe an den Rändern der Daten liegen, sodass Sie genauso gut mit dem Rumpf und dann iterativ beginnen können Arbeite dich von dort aus ein.
Wenn Sie mit dem Rumpf beginnen, reduzieren Sie außerdem Ihre anfängliche Suche von N auf N 1/2 .
AKTUALISIEREN
Wenn die obigen Schritte 3 und 4 zu lange dauern (da Sie das Innere Ihres Datasets iterativ testen), sind mir zwei weitere Ideen eingefallen, um Ihr Problem zu beschleunigen.
quelle
Bei einer sehr großen Anzahl von Punkten und einer kleinen zu wählenden Teilmenge kann es hilfreich sein, zu überlegen, was über kontinuierliche Versionen des Problems in zwei Dimensionen bekannt ist.N M
L. Fejes Tóth (Acta Math. Acad. Sci. Hungar., 7: 397–401, 1956) zeigte, dass die Menge der Punkte auf einem Kreis die Summe der Punkte maximiert paarweise Abstände werden durch Eckpunkte eines regulären Gons erreicht, das in den Kreis eingeschrieben ist.M M
Anschließend stellte er (L. Fejes Tóth, "Über eine Punktverteilung auf der Kugel", Acta Math. Acad. Sci. Hungar., 10: 13-19, 1959) das schwierigere Problem der Maximierung der Summe der paarweisen Abstände für Punkte in der Ebene, deren Durchmesser (maximaler paarweiser Abstand) beträgt . Dieses Problem bleibt im Allgemeinen offen, obwohl Friedrich Pillichshammer eine obere Schranke angegeben und gezeigt hat, dass sie für scharf ist ( "Über Extremalpunktverteilungen in der euklidischen Ebene" , Acta Mathematica Hungarica, 98 (4): 311–321, 2003).M 1 M= 3 , 4 , 5
Diese wenigen Fälle legen nahe, dass die Punkte solcher extremer Verteilungen dazu neigen, an der Peripherie einer Region aufzutreten. Für die Lösung ein gleichseitiges Dreieck mit Kantenlänge . Für drei der Punkte wieder ein gleichseitiges Dreieck und der vierte Punkt liegt auf dem Mittelpunkt eines Kreisbogens durch zwei der Punkte, zentriert auf dem dritten Punkt. Für die Lösung ein regelmäßiges Fünfeck mit Durchmesser . Keines von diesen zeigt eine "Streuung" von Punkten durch das Innere einer Figur.M= 3 1 M= 4 M= 5 1
Wenn wir eine vorherrschende Auswahl von Punkten an der Peripherie vermeiden wollen, kann sich ein anderes Ziel als nützlich erweisen. Die Maximierung des Mindestabstands zwischen Punkten ist ein solches Kriterium. Verwandte Probleme wurden bei angeschnitten Stackoverflow , bei Informatik SE , bei Math.SE und bei MathOverflow .
Betrachten Sie die grobe Entsprechung dieser Methode zum Packen von KreisenM mit einem Durchmesser von innerhalb einer Figur, um einen Einblick zu erhalten, warum diese Methode Punkte innerhalb einer Figur ergibt . Die Zentren sind dann Punkte, von denen keine zwei näher als der Abstand . Das Bild in dieser Math.SE-Antwort ist wahrscheinlich einen Blick wert und zeigt, wie man am besten zehn Punkte in einem Quadrat anordnet .D M D
quelle
OK, Sie möchten also M Punkte aus einer gegebenen Menge von N Punkten in der euklidischen Ebene auswählen, sodass die Summe der paarweisen Abstände der ausgewählten Punkte maximal ist. Richtig?
Der standardmäßige lokale Suchalgorithmus ist ziemlich schnell und bietet eine ziemlich gute Annäherung. Die Laufzeit ist in N linear und in M quadratisch. Das Näherungsverhältnis beträgt 1 - 4 / M. Dies bedeutet, dass das Verhältnis mit zunehmendem M besser wird. Zum Beispiel wird für M = 10 ein optimaler Wert von 60% und für M = 50 ein optimaler Wert von 92% erhalten.
Der Algorithmus funktioniert auch für euklidische Räume allgemeiner Dimension. In diesem Fall ist das Problem NP-schwer. Aber im Flugzeug ist nicht bekannt, ob es NP-schwer ist.
Die Quelle ist dieses Papier . Hoffe das hilft! Beste, Alfonso
quelle
Eine Lösung ist:
Machen M künstliche sogar verteilte Punkte in diesem Begrenzungsrechteck, einige M sind schwieriger als andere. In Ihrem Fall vier in den Ecken des Rechtecks und eine in der Mitte
quelle