Ich weiß nicht, ob es einen Polynom-Zeit-Algorithmus gibt (es scheint NP-schwer zu sein), aber hier sind einige plausible algorithmische Ansätze, die Sie in Betracht ziehen könnten, wenn Sie ihn in der Praxis lösen müssen:
Heuristik
Ein gut erforschter Algorithmus ist Furthest Point First (FPF). Bei jeder Iteration wird ein Punkt ausgewählt, der am weitesten von der bisher ausgewählten Punktmenge entfernt ist. Iterate mal. Da es sich um eine gierige Strategie handelt, gibt es keinen Grund zu der Annahme, dass dies eine optimale oder sogar nahezu optimale Antwort liefert, und sie wurde entwickelt, um eine etwas andere Zielfunktion zu optimieren ... aber in einigen Kontexten gibt sie eine vernünftige Annäherung es könnte einen Versuch wert sein.k
FPF stammt aus der Literatur zum graphbasierten Clustering und wurde in folgendem Forschungsbericht vorgestellt:
Teofilo F. Gonzalez. Clustering, um den maximalen Abstand zwischen den Clustern zu minimieren . Theoretical Computer Science, Bd. 38, S. 293-306, 1985.
Sie können versuchen, die Literatur zu graphbasiertem Clustering zu durchsuchen, um festzustellen, ob jemand Ihr spezifisches Problem untersucht hat.
Genaue Algorithmen
Wenn Sie dieses Problem in der Praxis haben und eine genau optimale Lösung benötigen, können Sie versuchen, es mit einem ILP-Solver zu lösen.
Hier ist wie. Führen Sie 0-oder-1-Variablen , wobei angibt, ob der te Scheitelpunkt ausgewählt wurde, und 0-oder-1-Variablen , mit der beabsichtigten Bedeutung, dass nur ist, wenn und . Maximieren Sie nun die Zielfunktion unter den Bedingungen und und . Lösen Sie dieses ILP nun mit einem handelsüblichen ILP-Solver. Da ILP NP-hart ist, gibt es keine Garantie dafür, dass dies effizient ist, aber es könnte bei einigen Probleminstanzen funktionieren.xixiiyi,jyi,j=1xi=1xj=1∑i,jd(i,j)yi,j∑xi≤kxi≥yi,jxj≥yi,j
Ein anderer Ansatz ist die Verwendung von gewichtetem MAX-SAT . Führen Sie insbesondere die booleschen Variablen und ein, wenn der te Scheitelpunkt ausgewählt wurde, sowie die Variablen . Die Formel lautet , wobei wahr sein muss (seine Klauseln haben das Gewicht für einige sehr große ) und jede Klausel gegeben ist Gewicht . Definieren Sie die Formel um wahr zu sein , wenn höchstens des ist wahr sind (siehe hier für Details, wie das zu tun) , und wennx i i y i , j φ ∧ ∧ i , j y i , j φ W W y i , j d ( i , j ) φ k x i y i , j = x i ∧ x j i , jxixiiyi,jϕ∧∧i,jyi,jϕWWyi,jd(i,j)ϕkxiyi,j=xi∧xj für alle . Die Lösung für dieses gewichtete MAX-SAT-Problem ist nun die Lösung für das ursprüngliche Problem. Sie können also versuchen, einen gewichteten MAX-SAT-Löser auf das Problem zu werfen. Die gleichen Einschränkungen gelten.i,j