Flüsse und Schnitte in Netzwerken
Bei der Betrachtung von Flüssen in der Graphentheorie ist ein Netzwerk N=(V, E, s, t, c) ein gerichteter Graph (V,E) (ohne Mehrfachkanten) mit zwei ausgezeichneten Knoten s (Quelle) und t (Senke) aus V und einer Kapazitätsfunktion die jeder Kante {x,y} aus E eine Kapazität c(x,y) aus dem Bereich nicht negativen reelen Zahlen zuweist.
Ein s-t-Fluss ist eine Belegung f der einzelnen Kanten {x,y} im Netzwerk mit nicht negativen reelen Zahlen. Dabei müssen folgende Bedingungen erfüllt sein:
- Keine Kante darf mit einem höheren Wert belegt sein, als ihre Kapazität (Zulässigkeit des Flusses)
- Abgesehen von Quelle und Senke muss in jeden Knoten genau so viel hineinfließen wie herausfließen, d.h. die Summe der Belegungen der eingehenden Kanten entspricht der Summe der Belegungen der ausgehenden Kanten (Flusserhaltung)
Der Wert eines s-t-Flusses ist die Summe der eingehenden abzüglich der ausgehenden Belegungen der Senke s bzw. die ausgehenden Belegungen abzüglich der eingehenden Belegungen der Quelle t.
Eine Teilmenge der Knoten in einem Netzwerk, die s aber nicht t enthält, nennt man einen Schnitt. Die Kapazität eines Schnittes ist die Summe der Kapazitäten der aus dem Schnitt herausführenden Kanten. Der Wert eines maximalen Flusses im Netzwerk kann nicht größer als die Kapazität eines beliebigen und somit auch eines minimalen Schnittes sein (Max-Flow-Min-Cut Theorem).
Es fehlt an dieser Stelle eine Erklärung zu Restnetzwerk und augmentierender Pfad
Beispiel
Aus dem gegebenen Fluss ergibt sich das in Grau dargestellte Restnetzwerk. Auf dem Pfad s, a, b, t lässt sich der Fluss um den Wert 2 erhöhen. |
![]() |
Algorithmen
Der Algorithmus von Ford und Fulkerson findet in einem Netzwerk einen maximalen Fluss, indem sukzessiv augmentierende Pfade gesucht und hinzugefügt werden. Der Algorithmus hat jedoch eine sehr schlechte Laufzeit (abhängig von den Kapazitäten) und terminiert für irrationale Kapazitäten mitunter nicht sowie konvergiert dabei nicht unbedingt gegen den richtigen Wert.
Wenn in jedem Augmentierungsschritt der jeweils kürzeste s-t-Pfad gewählt wird, verkürzt sich die Laufzeit auf O(|V||E|2).
Mit dem Algorithmus von Dinic, der alle kürzesten s-t-Pfade in einem Schritt findet, ist eine Laufzeit von O(|V|3) möglich; wenn alle Kanten nur 0 oder 1 als Kapazitäten haben dürfen, verbessert sich die Laufzeit auf O(|V|2/3|E|).
Flussalgorithmen lassen sich beispielsweise zur Berechnung der Knotenzusammenhangszahl und Kantenzusammenhangszahl verwenden.