Der schnellste Weg, um einen st min-cut aus einem st max-flow zu finden?

8

Ford-Fulkerson kann spärliche zeitliche Strömungen in der Größe der Strömung und der Anzahl der Knoten finden, wenn die Kanten eine Einheitskapazität haben.

Wie könnte ich einen spärlichen st-Fluss verwenden, um einen st-min-Zeitschnitt zu finden, der proportional zur Größe des Flusses und zur Anzahl meiner Knoten für den Fall des spärlichen / geringen Volumens des maximalen Flusses ist?

Elliot JJ
quelle
Gibt es eine Kurzreferenz für die Definition eines spärlichen Flusses?
Chazisop
1. Alle Kanten zu durchqueren und gesättigte Kanten zu finden, schien intuitiv ziemlich legitim zu sein. Ein Fehler ist jedoch, dass nicht alle gesättigten Kanten notwendigerweise zu einem Min-Cut gehören. 2. Min-Cut sollte eine Reihe von Kanten sein, keine Reihe von Eckpunkten. 3. Die typische Lösung sollte also nur die oben akzeptierte Antwort sein. Markieren Sie aus dem Max-Flow-Netzwerk (entweder angegeben oder von Ford-Fulkerson oder Edmunds-Karp berechnet), DFS oder BFS aus s alle Scheitelpunkte, die erreichbar sind (Der Prozess des Versuchs, einen Erweiterungspfad zu finden, aber Sie kennen y
Jinggang

Antworten:

8

Wenn Sie den Flow nicht per se verwenden, sondern den Ford-Fulkerson-Algorithmus (oder eine Version wie Edmonds-Karp) verwenden, können Sie sowohl den Max-Flow als auch den Min-Cut direkt als Ergebnis erhalten. Wenn Sie nach Erweiterungspfaden suchen, führen Sie eine Durchquerung durch, bei der Sie eine Art Warteschlange für noch nicht besuchte Knoten verwenden (in der Edmonds-Karp-Version verwenden Sie BFS, dh eine FIFO-Warteschlange). In der letzten Iteration können Sie von (dies ist schließlich das Beendigungskriterium). Zu diesem Zeitpunkt bildet die Menge der Knoten, die Sie erreicht haben, den Teil des Schnitts, während die Knoten, die Sie nicht erreicht haben, den bilden .tsst

Die Blattknoten Ihres Traversalbaums bilden den „Rand“ des Teils, während die Knoten in Ihrer Traversal-Warteschlange den Rand des Teils bilden. Was Sie wollen, ist die Menge der Kanten vom Rand zum Rand. Dies kann auch während des Durchlaufs leicht beibehalten werden: Fügen Sie dem Schnitt bei der Untersuchung einfach eine Kante hinzu, die zu einem nicht besuchten Knoten führt, und entfernen Sie ihn, wenn er durchquert wird (damit sein Ziel besucht wird). Sobald Ford-Fulkerson fertig ist, haben Sie Ihren Min-Cut (oder besser gesagt einen von ihnen) genau dort. Die Laufzeit ist (asymptotisch) identisch mit Ford-Fulkerson (oder Edmonds-Karp oder einer anderen von Ihnen verwendeten Version), die Ihnen das geben sollte, wonach Sie gesucht haben.stst

Magnus Lie Hetland
quelle
-1

Gibt es eine Kurzreferenz für die Definition eines spärlichen Flusses?

Im allgemeinen Fall ist es mit dem Max-Flow ziemlich einfach, den Min-Cut über den Max-Flow-Min-Cut-Satz zu bestimmen. Die Kanten, die vollständig gesättigt sind, bilden einen Schnittsatz. Wenn Sie also einen Scheitelpunkt für jede dieser Kanten auswählen, können Sie einen Min-Schnitt bilden. Trivialerweise ist dies im schlimmsten Fall O (m), und auch wenn man die Laufzeit ausgangsempfindlich macht, ist die Anzahl der Kanten im Fluss oder noch besser die Anzahl der gesättigten Kanten im Fluss immer höher gebunden an die Laufzeit des Algorithmus zum Ermitteln des Min-Cut aus dem Max-Flow. Wenn Sie also eine Modifikation haben, die diese spärlichen st-Flüsse in linearer Zeit in der Größe des Flusses findet, ändert das Finden des Min-Cut die Laufzeit des Algorithmus nicht asymptotisch.

Chazisop
quelle
2
Ich habe keine spezifische Definition. Nur etwas, bei dem Ford-Fulkerson asymptotisch schneller ist als alles andere. Wenn alle meine Kanten eine Einheitskapazität haben, sind dann nicht viele von ihnen gesättigt, einschließlich Kanten, die, wenn sie entfernt werden, leicht ersetzt werden können, ohne das maximale Durchflussvolumen zu beeinträchtigen? Ich könnte all diese Kanten entfernen und einen Schnitt bilden, aber dann bin ich mir nicht sicher, wie ich diejenigen ersetzen würde, die ich eigentlich nicht entfernen musste.
Elliot JJ
Das hängt von der Grafik ab. Wenn Sie Einheitskapazitäten und ein dichtes Diagramm hätten, wäre es sehr wahrscheinlich, dass Sie viele Flüsse mit Maximalwert haben würden. Dies könnte wiederum so interpretiert werden, dass Sie auch eine große Anzahl verschiedener Min-Schnitte haben könnten. Schauen Sie sich auch diese Referenz an: en.wikipedia.org/wiki/Max-flow_min-cut_theorem
chazisop