Wir wissen, dass die Berechnung eines maximalen Durchflusses resp. Ein Minimum-Cut eines Netzwerks mit Kapazitäten ist äquivalent. vgl. der Max-Flow-Min-Cut-Satz .
Wir haben (mehr oder weniger effiziente) Algorithmen zur Berechnung der maximalen Durchflussmengen, und die Berechnung einer minimalen Absenkung bei maximaler Durchflussmenge ist weder schwierig noch teuer.
Aber was ist mit dem Gegenteil? Wie können wir bei einem minimalen Schnitt einen maximalen Durchfluss bestimmen? Natürlich ohne Max-Flow von Grund auf zu lösen, und am liebsten auch schneller .
Einige Gedanken:
Aus dem Minimalschnitt kennen wir den maximalen Durchflusswert. Ich verstehe nicht, wie diese Informationen dem Standard helfen, den Pfad zu erweitern und neu zu kennzeichnen, obwohl die Anpassung des letzteren plausibler erscheint.
Wir können den Minimum Cut nicht verwenden, um das Netzwerk in zwei Teile aufzuteilen und wiederzuverwenden, da dies das Problem im schlimmsten Fall nicht verringert (wenn eine Partition ein Singleton ist). Auch hätten wir keinen Mindestschnitt der kleineren Instanzen.
Kennt man den Wert der maximalen Strömungsgeschwindigkeit, um die Max-Flow-LP zu lösen, möglicherweise über die komplementären Schlupfbedingungen?
quelle
Antworten:
Im schlimmsten Fall liefert der Minimalschnitt selbst nicht viele Informationen über den Maximalfluss. Man betrachte einen Graphen in dem das Minimum cut den Wert . Wenn ich durch Hinzufügen eines neuen Scheitelpunkts und einer Kante mit dem Gewicht , besteht ein Minimum von cut im neuen Diagramm nur aus der Kante aber das tut es nicht Geben Sie keine Informationen darüber, wie Sie Durchflusseinheiten von nach .s , t w G s ' ( s ' , s ) w s ' , t ( s ' , s ) w s tG = ( V, E) s , t w G s′ ( s′, s ) w s′, t ( s′, s ) w s t
Tatsächlich gibt der Minimalschnitt Auskunft über den Wert des Durchflusses, nicht jedoch darüber, wie dieser Durchfluss erzielt werden kann. Dies bedeutet, dass das Erkennen des minimalen Schnitts das Finden des Flusses um höchstens einen logarithmischen Faktor beschleunigen kann, da wir eine binäre Suche durchführen könnten, um den Wert des Schnitts zu finden.
quelle
Es gibt sicherlich Algorithmen, mit denen Sie den minimalen Schnitt berechnen können, bevor Sie den maximalen Fluss berechnen. Zwei solche Algorithmen sind die Push-Relabel- und die Pseudoflow-Algorithmen, die eng miteinander verwandt sind. Letzteres ist effizienter. Beide Algorithmen verwenden spezielle Eigenschaften des Residuendiagramms, das sie iterativ verbessern, um den Maximalfluss aus dem Minimalschnitt abzuleiten. Für Details empfehle ich dringend, den Code und die Artikel zu lesen.
Um den Fall des Push-Relabels zu erläutern, wird garantiert, dass der Algorithmus einen minimalen Schnitt berechnet hat, wenn er keinen Fluss mehr zur Spüle drückt. Dieser Teil des Algorithmus wird mangels eines besseren Namens als Phase 1 bezeichnet. Phase 2 ist die effizientere Phase, in der der Min-Cut in einen Max-Flow umgewandelt wird, indem Zyklen im Restgraphen iterativ mit einer einzelnen Tiefensuche abgebrochen und überschüssiges Material zur Quelle zurückgeschoben wird. Ich glaube, dass Phase 2 nachweislich asymptomatisch effizienter ist als Phase 1.
quelle