Interaktives Graphentheorie-Lernen
Interaktives Graphentheorie-Lernen
Guest User
Using app without sign in
Rechner für minimalen Schnitt
Findet minimalen Kapazitätsschnitt, der Quelle von Senke trennt
Wählen Sie einen Algorithmus und generieren Sie Schritte, um die Visualisierung zu beginnen
Ein minimaler Schnitt ist die günstigste Kantenmenge, deren Entfernung die Senke von der Quelle in einem Flussnetz trennt. Der Max-Flow-Min-Cut-Satz besagt, dass seine Kapazität dem Maximalfluss entspricht, sodass die Berechnung des einen das andere löst.
Nach dem Ausführen eines beliebigen Maximalfluss-Algorithmus wird der minimale Schnitt gewonnen, indem man alle im Residualgraphen noch von der Quelle erreichbaren Knoten findet; jede volle Kante von dieser erreichbaren Menge in den Rest ist eine Schnittkante. Für globale minimale Schnitte ohne feste Quelle und Senke kontrahiert der Algorithmus von Stoer-Wagner Knoten in O(V hoch 3), und Kargers randomisierte Kontraktion bietet eine elegante probabilistische Alternative.
Minimale Schnitte erkennen Netzwerk-Engpässe und Schwachstellen, trennen Bilder in Vorder- und Hintergrund im maschinellen Sehen, partitionieren Schaltungen im VLSI-Entwurf und messen Gemeinschaftsgrenzen in sozialen Netzwerken. Die Dualität zum Maximalfluss zu verstehen, ist ein Kennzeichen starker Algorithmus-Kandidaten.
Der minimale Schnitt wird nicht direkt berechnet. Man berechnet einen maximalen Fluss und liest den Schnitt anschließend in einem einzigen Durchlauf aus dem Residualgraphen ab.
MinSchnitt(graph, s, t):
beliebigen Max-Fluss-Algorithmus bis zur Sättigung laufen lassen
// S = alles, was von s aus im RESIDUALGRAPHEN
// noch erreichbar ist
S = BFS/DFS von s, nur über Kanten mit
Restkapazität > 0
T = alle übrigen Knoten
schnitt = { (u,v) aus den Originalkanten :
u in S und v in T }
gib schnitt und die Summe der Originalkapazitäten zurückZwei Tatsachen lassen das funktionieren. Jede Kante, die von S nach T führt, muss gesättigt sein, denn sonst wäre ihre Restkapazität positiv und ihr Endpunkt wäre erreichbar gewesen und läge damit in S. Und jede Kante von T zurück nach S führt keinerlei Fluss. Der Fluss über den Schnitt entspricht damit exakt der Schnittkapazität, und da kein Fluss irgendeinen Schnitt übersteigen kann, müssen beide optimal sein.
Bestimme den minimalen Schnitt auf demselben Netzwerk wie beim Maximalfluss, indem du den Residualgraphen nach der Sättigung ausliest.
Beispielgraph: Gerichtete Kapazitäten S nach A (10), S nach B (10), A nach B (2), A nach T (4), B nach T (9).
Der minimale Schnitt ist das Kantenpaar A-T und B-T mit Gesamtkapazität 13 und stimmt damit mit dem Maximalfluss von 13 überein. Beachte, dass S-A und S-B zusammen eine Kapazität von 20 haben und ebenfalls einen Schnitt bilden, allerdings einen teureren. Der Engpass liegt auf der Senkenseite, und der Residualdurchlauf findet ihn, ohne mögliche Schnitte durchsuchen zu müssen.
Zeit: wie der verwendete Max-Fluss-Algorithmus · Speicher: O(V + E)
Das Auslesen des Schnitts selbst ist ein einzelner Graphdurchlauf mit O(V + E) und damit vernachlässigbar. Der gesamte Aufwand steckt in der vorausgehenden Maximalflussberechnung: O(V mal E hoch 2) mit Edmonds-Karp oder O(V hoch 2 mal E) mit Dinic. Das gehört klar gesagt, denn es erklärt, warum der minimale Schnitt nicht als eigenes Problem behandelt wird. Es ist kein Weg bekannt, den minimalen s-t-Schnitt asymptotisch schneller zu finden als über die Berechnung des Maximalflusses, denn nach dem Max-Flow-Min-Cut-Satz sind beide dieselbe Rechnung von entgegengesetzten Seiten betrachtet.
Das Wort Schnitt umfasst mehrere wirklich verschiedene Probleme. Das falsche zu wählen ist hier der häufigste Fehler.
| Alternative | Vorzuziehen, wenn | Kosten |
|---|---|---|
| Max-Fluss (Edmonds-Karp / Dinic) | Du willst den minimalen s-t-Schnitt für eine bestimmte Quelle und Senke. Der Standardweg. | O(V·E^2) oder O(V^2·E) |
| Stoer-Wagner | Du willst den globalen minimalen Schnitt eines ungerichteten Graphen, ohne festgelegte Quelle und Senke. | O(V·E + V^2·log V) |
| Kargers randomisierter Algorithmus | Globaler Minimalschnitt, bei dem eine mit hoher Wahrscheinlichkeit korrekte Antwort genügt und Einfachheit zählt. | O(V^2) je Versuch |
| Gomory-Hu-Baum | Du brauchst minimale Schnitte zwischen vielen verschiedenen Paaren. Er codiert sie alle in V - 1 Maximalflussläufen. | V - 1 Maximalflussberechnungen |
Den ganzen Artikel lesen: Network Flow: Max-Flow and Min-Cut
Verwandte Algorithmen: Maximaler Fluss, Brückenfindung