Hier ist eine Frage aus einer früheren Prüfung, die ich zu lösen versuche:
Für einen ungerichteten Graphen mit positiven Gewichten versuche ich, den Minimalschnitt zu finden. Ich kenne keine anderen Möglichkeiten, um das zu tun, als den Max-Flow-Min-Cut-Satz. Das Diagramm ist jedoch ungerichtet. Wie soll ich es steuern? Ich dachte daran, Kanten an beiden Enden auszurichten, aber welcher Scheitelpunkt wäre dann die Quelle und welcher Scheitelpunkt die Senke? Oder gibt es einen anderen Weg, um den Mindestschnitt zu finden?w ( e ) ≥ 0
algorithms
graph-theory
Jozef
quelle
quelle
Antworten:
Es gibt viele Algorithmen, um den minimalen Schnitt eines ungerichteten Graphen zu finden. Kargers Algorithmus ist ein einfacher, aber effektiver Zufallsalgorithmus.
Kurz gesagt, der Algorithmus wählt Kanten gleichmäßig nach dem Zufallsprinzip aus und zieht sie mit entfernten Self-Loops zusammen. Der Prozess wird angehalten, wenn zwei Knoten übrig sind und die beiden Knoten einen Schnitt darstellen. Um die Erfolgswahrscheinlichkeit zu erhöhen, wird der randomisierte Algorithmus mehrmals ausgeführt. Während der Läufe verfolgt man den kleinsten bisher gefundenen Schnitt.
Weitere Informationen finden Sie im Wikipedia-Eintrag. Für eine vielleicht bessere Einführung lesen Sie das erste Kapitel von Wahrscheinlichkeitsrechnung und Computing: Randomisierte Algorithmen und probabilistische Analyse von Michael Mitzenmacher und Eli Upfal.
quelle
Für jede ungerichtete Kante(u,v,weight) (u,v,weight) (v,u,weight)
Spielt keine rolle
quelle
Der Ford-Fulkerson- Algorithmus sollte für Sie funktionieren. Sie können zwei falsche Scheitelpunkte erstellen. die Quelle und Senke.
Schauen Sie sich auch den Edmonds-Karp-Algorithmus an . Es gibt zwei Variationen davon:
Im Gegensatz zu Ford-Fulkerson, der einen willkürlichen Weg einschlägt.
Dies ist eine gute Ressource.
quelle