Auswählen einer Teilmenge, um den Mindestabstand zwischen Punkten zu maximieren

12

Ich habe eine Menge von Punkten und ich habe den Abstand zwischen jedem Punkt D ( P i , P j ) . Diese Abstände sind euklidisch, aber die Punkte befinden sich tatsächlich in einem Merkmalsraum.CD(Pich,Pj)

Aus den Punkten möchte ich eine Teilmenge von n Punkten auswählen . Nennen Sie diese Teilmenge s . Ich mag diese Teilmenge wählen , um den Mindestabstand zwischen allen Punkten in dem neuen Satz zu maximieren s .Cnss

maxsC|s|=n(Mindestich,jsichjD(Pich,Pj))

Im Moment benutze ich Bergsteigen, um dieses Problem zu lösen. Ich verstehe, dass simuliertes Tempern eine bessere Lösung geben kann.

Gibt es eine bekannte Lösung für diese Art von Problem? Oder kann dieses Problem in ein anderes Problem umformuliert werden, das leicht zu lösen ist?

user1389800
quelle
Ich interessiere mich für ein ähnliches Problem. Basierend auf meinen bisherigen Suche Ergebnisse, es ist vergleichbar mit der p-Dispersion Problem in Problem - Anlage Lage , für die dieses ist eine nette Überprüfung Papier.
XTZ
Wissen Sie, wie das Problem heißt?
Löwenzahn

Antworten:

7

Die Entscheidungsproblemversion dieses Optimierungsproblems lautet:

Bei einem gegebenen Schwellenwert möchten Sie wissen, ob es möglich ist, eine Teilmenge von Punkten so zu finden, dass jedes Paar von Punkten in der Teilmenge mindestens Einheiten voneinander entfernt ist.tnt

Wenn Sie das Entscheidungsproblem lösen können, können wir natürlich Ihr Optimierungsproblem lösen (durch binäre Suche auf der Schwelle ).t

Nun ist dieses Entscheidungsproblem ist das Problem des Findens einen unabhängigen Satzes in einem euklidischen Graph ist, in dem Punkt hat einen Rand zwischen ihnen , wenn sie im Abstand sind auseinander. Ein Ansatz wäre, Standard-Approximationsalgorithmen für unabhängige Mengen zu betrachten.x,yt

Noch besser ist es, sich Algorithmen für unabhängige Mengen in geometrischen Schnittkurven anzusehen . Stellen Sie sich einen Scheibensatz vor, bei dem jede Scheibe den Durchmesser und an einem der Punkte in Ihrem Satz zentriert ist . Jetzt können wir einen geometrischen Schnittgraphen bilden, bei dem es für jede Scheibe einen Scheitelpunkt und eine Kante zwischen zwei Scheitelpunkten gibt, wenn sich die entsprechenden Scheiben schneiden. Das Problem, eine unabhängige Menge in einem solchen Graphen zu finden, wurde untersucht, und für dieses Problem gibt es Approximationsalgorithmen, die Sie ausprobieren können.tC

Wenn Sie eher das exakte Optimum als eine Annäherung wünschen, können Sie einen der standardmäßigen "großen Hämmer" verwenden, z. B. einen SAT-Löser oder einen ILP-Löser. Es gibt eine einfache Möglichkeit, das Problem der unabhängigen Menge als SAT-Instanz zu formulieren. Anschließend können Sie einen SAT-Löser darauf anwenden, um festzustellen, ob eine Teilmenge von Punkten vorhanden ist, die alle Einheiten voneinander entfernt sind.nt

DW
quelle