Effizienter Algorithmus für MIN-Schnitt mit angegebener Anzahl von Scheitelpunkten
-
29-09-2020 - |
Frage
Betrachten Sie ein Diagramm mit Scheitelpunkten $ V $ und Kanten $ E $ . Die Standardversion des MIN-Schnittproblems besteht darin, die Partition von $ V $ in eine (nicht leere) Teilmenge
Lösung
für $ n=Frac {| V |} 2 $ , es heißt Minimum-Bissiection, und es ist np-hart. Es gibt einen
Wenn Sie interessiert sind, ist das allgemeinere Problem in mehreren Komponenten derselben Größe, und es wird als ausgewogene Graph-Partitionierung bezeichnet. Für mehr als 2 Teile gibt es keine endliche Annäherung, es sei denn, P= NP: "Ausgewogene Grafik Partitionierung" (Andreev, Rakke) , da Sie nicht effizient überprüfen können, ob die Antwort 0 ist.
Wenn die Teile nicht unbedingt genau ausgewogen sind (ein kleines Ungleichgewicht ist zulässig ist), existiert ein
Einige Algorithmen (auch überprüfen https://en.wikipedia.org/wiki/graph_partition "/a > und "Verweise" Abschnitte der folgenden Papiere):
- .
-
Lokale Suche mit verschiedenen Aromen: Wir beginnen mit einiger Partitionierung und versuchen dann, Scheitelpunkte zwischen den Teilen zu tauschen, um den Schnitt zu minimieren. Z.B. Wir berechnen "Gain" für jeden Scheitelpunkt (Verbesserung, wenn wir sie an einen anderen Teil bewegen) und Scheitelpunkte mit der maximalen Verstärkung tauschen. Sein Vorteil ist, dass Sie es nach einem anderen Algorithmus anwenden können.
-
Spectral-Partitionierung (siehe zB Spectral Graph-Theorie und Grafik Partitionierung ): Verwendet den zweiten Eigenvektor einer laplazischen Matrix, um die Partitionierung anzunähern (z. B. durch Verschieben der kleinsten
$ | v | / 2 $ -Oordinaten in der ersten Teil). Funktioniert überraschend gut. Ich bin jedoch nicht sicher, ob es an den Fall angepasst werden kann, wenn Sie eine unausgeglichene Bissiection (z. B. $ 1: 2 $ anstelle von $ 1: 1 $ ). -
lineare Einbettung: "Ausgeglichene Einteilung durch lineare Einbettung" . Wir bündelten die Scheitelpunkte in ein eindimensionales Array, während wir die Summe über alle Paare von Scheitelpunkten minimieren: Der Abstand zwischen ihnen multipliziert mit dem Gewicht ihres Randes. Dann teilen wir dieses Array gerade in aufeinanderfolgende Brocken der erforderlichen Größen auf. Funktionierte nicht so gut in meiner Erfahrung.
-
(Anzeigen) Unsere Papier: "Multi-dimensionales ausgewogenes Diagramm Partitionierung via. Prognostizierter Gradientenabstieg ", wo wir Gradient-Abstieg verwendet haben, um eine Mindestbisektion zu finden: Für jeden Scheitelpunkt führen wir eine Variable ein, die grob eine Wahrscheinlichkeit darstellt, dass der Scheitelpunkt zum ersten Teil gehört, und die Minimierung des Schnittes verringert sich zur eingeschränkten Optimierung von a Quadratische Funktion. Es ist ein bisschen, in der Praxis durch eine fein abgestimmte lokale Suche zu übertreffen, aber es funktioniert wirklich gut, wenn Sie mehrere Balance-Einschränkungen haben.
Abgesehen von der spektralen Methode können alle, die alle an die Partitionierung des Graphen in beliebigen Proportionen anpassen können.
Es gibt auch Standard-Löser: kahip , metis . In meiner Erfahrung war Kahip ziemlich gut. Ich bin nicht sicher, ob sie jedoch auf Teile von willkürlichen Größen unterstützen.