- Fluss (Graphentheorie)
-
Ein Netzwerk N=(V, E, s, t, c) ist in der Graphentheorie ein gerichteter Graph ohne Mehrfachkanten mit zwei ausgezeichneten Knoten, einer Quelle s und einer Senke t aus V sowie einer Kapazitätsfunktion c, die jeder Kante (x,y) aus E eine nicht-negative, reellwertige Kapazität c(x,y) zuweist.
Ein s-t-Fluss ist eine Funktion f, die jeder Kante (x,y) im Netzwerk einen nicht-negativen reellen Flusswert f(x,y) zuweist. Dabei müssen folgende Bedingungen erfüllt sein:
- Kapazitätsbeschränkung:
- Der Fluss einer Kante ist höchstens so groß wie die Kapazität auf der Kante, d.h. es gilt
- .
- Flusserhaltung:
- Abgesehen von der Quelle s und der Senke t muss in jeden Knoten genau so viel hineinfließen wie herausfließen, d.h.
- Dabei sind x + und x − die Mengen der Knoten die mit x durch eine (von x aus gesehen) ausgehende bzw. eingehende Kante verbunden sind.
Der Wert val(f) eines s-t-Flusses f ist die Summe der Flusswerte der eingehenden Kanten abzüglich der Flusswerte der ausgehenden Kanten der Senke t, . Dass der Wert der Flusses genauso gut an der Quelle s als Summe der ausgehenden abzüglich der eingehenden Flusswerte an s berechnet werden kann, folgt aus Flusserhaltungsbedingung. Es gilt .
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. Laut dem Max-Flow-Min-Cut-Theorem kann der Wert eines maximalen Flusses im Netzwerk nicht größer als die Kapazität eines beliebigen und somit auch eines minimalen Schnittes sein.
Das Restnetzwerk (auch: Residualgraph) bezüglich eines zulässigen Flusses ist ein Graph, der alle Kanten des ursprünglichen Netzwerkes enthält, mit um den jeweiligen Flusswert verminderten Kantenkapazitäten.
Inhaltsverzeichnis
Beispiel
Nebenstehendes Beispiel zeigt ein einfaches Netzwerk und einen möglichen Schnitt darin. Die Kapazität des Schnittes ist c(s,b) + c(a,b) + c(a,t) = 1 + 2 + 1 = 4.
Im zweiten Bild ist ein möglicher Fluss angegeben. Die Belegung steht zusammen mit der Kapazität an den einzelnen Kanten. Der Wert des Flusses ist 2.
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.
Mit dem Algorithmus von Dinic, der alle kürzesten s-t-Pfade in einem Schritt findet, ist eine Laufzeit von O(|V|2|E|) 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|).
Die folgende Tabelle gibt eine Übersicht der entwickelten Fluss-Algorithmen und ihrer Laufzeiten:
Jahr Autor Laufzeit (n = Anzahl Knoten, m = Anzahl Kanten, U = Kante mit größter Kapazität im Graph)
1956 Ford-Fulkerson 1969 Edmonds-Karp 1970 Dinic 1973 Dinic-Gabow 1974 Karzanov 1977 Cherkassky 1980 Galil-Naamad 1983 Sleator-Tarjan 1986 Goldberg-Tarjan 1987 Ahuja-Orlin 1987 Ahuja-Orlin-Tarjan 1990 Cheriyan-Hagerup-Mehlhorn 1990 Alon 1992 King-Rao-Tarjan 1993 Philipps-Westbrook 1994 King-Rao-Tarjan 1997 Goldberg-Rao Anwendung
Flussalgorithmen lassen sich beispielsweise zur Berechnung der Knotenzusammenhangszahl und Kantenzusammenhangszahl verwenden.
Ferner kann durch Flussalgorithmen eine maximale Paarung in einem bipartiten Graphen gefunden werden. In einem solchen Graph kann die Menge der Knoten V in die disjunkten Teilmengen A und B eingeteilt werden. Erzeugt man nun ein Netzwerk N, indem man eine Quelle s hinzufügt und diese mit jedem Knoten aus A verbindet und entsprechend alle Knoten aus B mit einer Senke t und ordnet man all diesen Kanten die Kapazität 1 sowie allen anderen Kanten aus dem originalen Graphen G eine beliebige Kapazität zu, dann entspricht ein maximaler Fluss in N einer maximalen Paarung in G und umgekehrt.
Siehe auch
Literatur
- L. R. Ford, D. R. Fulkerson: Flows in Networks. 1962, ISBN 0691079625, ISBN 978-0691079622.
- Kapazitätsbeschränkung:
Wikimedia Foundation.