Flüsse und Schnitte in NetzwerkenFlüsse und Schnitte in Netzwerken sind Strukturen der Graphentheorie, die vielfältige Anwendungen finden.
Definitionen, wichtige Begriffe und EigenschaftenNetzwerkEin Netzwerk N = (G,u,s,t) besteht aus einem gerichteten Graphen G = (V,A) mit zwei ausgezeichneten Knoten, einer Quelle s und einer Senke t aus V, sowie einer Kapazitätsfunktion FlussEin Fluss ist eine Funktion
Der Flusswert auf einer Kante ist höchstens so groß wie die Kapazität der Kante, d.h. es gilt
Ist zusätzlich die folgende Bedingung erfüllt, heißt der Fluss s-t-Fluss:
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 Exzess und WertDer Exzess
Der Wert eines s-t-Flusses f ist der Überschuss im Knoten t oder der Betrag des Überschusses im Knoten s. Für alle s-t-Flüsse ist der Überschuss bis auf s,t für alle Knoten Null. Für alle Zirkulationen ist er auch in s,t Null. Für fortgeschrittene Algorithmen kann diese Forderung weiter abgeschwächt werden. Das führt zu dem Konzept der sogenannten s-t-Präflüsse. (siehe unten) SchnittEine echte Teilmenge der Knoten S in einem Netzwerk, die s, aber nicht t enthält, nennt man einen s-t-Schnitt. Oft wird unter einem Schnitt auch die Menge aller Kanten verstanden, die zwischen den Partitionen S und ResidualnetzwerkDas Residualnetzwerk Nf, oder auch Restnetzwerk, zum Fluss f mit Residualgraphen Gf und Residualkapazitäten uf zeigt die restlichen Kapazitäten des Netzwerks an. Der Residualgraph Gf hat dieselbe Knotenmenge wie G und besteht aus den von f nicht ausgelasteten Kanten ergänzt um Rückkanten: Für jede Kante
Algorithmische Konstruktion eines ResidualnetzwerksInitialisiere SchichtnetzwerkDer Level eines Knotens Schicht- und Residualnetzwerk können in linearer Laufzeit berechnet werden. Algorithmische Konstruktion eines SchichtnetzwerksInitialisiere: Besondere Wege und FlüsseEin x-y-Weg oder Pfad W(x,y) ist eine Folge von Kanten, wobei der Ausgangsknoten jeder Kante der Endknoten ihres Vorgängers ist. Die Länge eines Weges δW(x,y), auch distW(x,y) ist die Anzahl der Kanten im Weg. Die Distanz zwischen x und y ist die Länge eines kürzesten Weges, falls einer existiert, und „unendlich“, falls nicht. Ein Weg im Residualnetzwerk heißt augmentierender Weg; die Bezeichnungen verbessernder Weg oder erhöhender Weg sind auch gebräuchlich. Jeder s-t-Fluss lässt sich in s-t-Wege zerlegen. Genau dann, wenn in einem Netzwerk zu einem s-t-Fluss kein augmentierender Weg existiert, hat der Fluss maximalen Wert. Diesen Sachverhalt nutzen der Algorithmus von Ford und Fulkerson und der Algorithmus von Edmonds und Karp aus. Ein Fluss
Präflüsses-t-Präflüsse, oder auch Vorflüsse, (engl. preflow) sind eine Verallgemeinerung von s-t-Flüssen. Dieser Begriff ist nur bei komplexeren (und wesentlich effizienteren) Flussalgorithmen von Bedeutung. Ein s-t-Präfluss ist eine Funktion
Das bedeutet, nur den Knoten s darf mehr Fluss verlassen, als ihn erreicht. Ein s-t-Präfluss hat Überschuss in einem Knoten, oder auch Overflow, falls sein Überschuss (wie oben) echt größer als Null ist. Das Residualnetzwerk wird analog zu oben gebildet. Die Höhenfunktion oder Distanzmarkierung in einem Netzwerk mit s-t-Präfluss f ist eine Abbildung Ferner erklärt man die Operationen Push und Lift algorithmisch, so wie rechts beschrieben. Mit diesen Mitteln kann man Preflow-Push-Algorithmen entwerfen und untersuchen, etwa den Goldberg-Tarjan-Algorithmus. (nach Andrew Goldberg und Robert Tarjan) Bei diesen Algorithmen kann man die Datenstrukturen während der Algorithmus läuft nicht als s-t-Fluss interpretieren. Die Methode von Goldberg und Tarjan initialisiert einen Präfluss und terminiert, falls gewisse Manipulationen der Struktur einen Fluss liefern. Das ist dort stets nach endlich vielen Schritten der Fall und dieser Fluss ist dann stets maximal. AlgorithmenDer Algorithmus von Ford und Fulkerson sucht nach und nach augmentierende Wege, also Wege im Residualnetzwerk, und erhöht dort entlang. Dieses Verfahren klappt genau dann, wenn dieser Algorithmus terminiert, also in die Situation kommt, dass es tatsächlich keine augmentierenden Wege mehr gibt. Dann kann man nämlich die maximale von s aus im Residualnetz erreichbare Knotenmenge betrachten. Diese definiert einen s-t-Schnitt, dessen Kapazität vom Flusswert angenommen wird. Um das Terminierung aber zu sichern, kann man ein Argument über die algebraische Struktur der Kapazitätswerte heranziehen. Sind es nichtnegative ganze Zahlen, ist der Wert eines maximalen s-t-Flusses eine ganze Zahl. Zudem gibt es wenisgtens einen maximalen s-t-Fluss, der kantenweise lediglich ganzzahlige Werte annimmt. Für jeden maximalen s-t-Fluss muss das nicht der Fall sein. Weil jedes Augmentieren längst eines s-t-Weges den Wert des s-t-Flusses um einen ganzzahligen Schritt, also um mindestens 1 erhöht, ist die Terminierung nach endlich vielen Schritten in dem Fall gesichert. Eine obere Schranke der Laufzeit des Algorithmus kann dann von den Werten der Kapazitäten abhängen. Die Laufzeit kann dann in Bezug auf Anzahl der Knoten und Kanten beliebig groß sein, jenachdem welche Kapazitäten auf den Kanten gegeben sind. Sind die Kapazitäten nichtnegative rationale Zahlen, terminiert der Ford-Fulkerson-Algorithmus ebenfalls, weil das Netzwerk dann algorithmisch äquivalent zu einem Netzwerk ist, bei dem die Kapazitäten mit dem Hauptnenner multipliziert sind, also nur ganzzahlige Kapazitäten auftreten. Bei reellen, irrationalen Kapazitäten muss der Algorithmus jedoch nicht terminieren und noch nicht einmal gegen einen maximalen s-t-Fluss konvergieren. Der Edmonds-Karp-Algorithmus stellt eine Weiterentwicklung der Methode von Ford und Fulkerson dar: Er funktioniert ganz analog, sucht aber augmentierende Wege, die bezüglich Kantenanzahl minimal sind. Das geht mit einer Breitensuche jeweils in linearer Laufzeit. Der Edmonds-Karp-Algorithmus terminiert auch bei beliebigen reellen Kantenkapazitäten. Darüber hinaus ist seine Laufzeit Der Dinic-Algorithmus basiert auf einer weiteren Beobachtung. Sucht man im Residualnetzwerk nach einem augmentierenden Weg, kann es passieren, dass man in Sackgassen gerät, also zu einem Knoten, von dem aus t gar nicht erreichbar ist. Die Idee ist, das Netzwerk zu schichten, also in Gruppen zusammenzufassen, die dieselbe Entfernung zu s haben, also solche Sackgassen eliminiert sind. In diesem Schichtnetzwerken nutzt man dann ferner aus, dass eine Suche nicht nur einen Weg liefert, sondern immer auch ohne zusätzlichen Aufwand einen Wegbaum. Entlang dieses Baumes kann man dann Fluss schicken und das Netzwerk blockieren. Das geht alles elemantar in Die folgende Tabelle gibt eine Übersicht der entwickelten Fluss-Algorithmen und ihrer Laufzeiten: Max-Flow Algorithmen nach Veröffentlichung
VerallgemeinerungenZu dem Problem gibt es einige wesentliche Verallgemeinerungen. Als erstes kann man anstelle von Flüssen zwischen einer Quelle beziehungsweise Senke solche zwischen Gebieten betrachten. Dazu gibt man sich eine gewisse Menge von Versorgern S und eine Menge von Empfängern T vor, sowie einen Graphen und Kapazitäten. Das Problem ist nicht schwerer als Max-Flow und kann entweder durch Vor- und Nachschalten von Zusatzknoten oder durch Übergang zum Quotientengraphen Andererseits kann man die Gültigkeit der den Kanten zugewiesenen Kapazitäten auf eine gewisse Umgebung der Kante ausweiten, wobei für ein festgehaltenes Für den Fall AnwendungPraktische AnwendungenDiese letzte Verallgemeinerung ist motiviert durch Probleme bei der Verkabelung von VLSI-Chips, wo es aufwändig ist, in eine gewisse Nähe von gelegten Kabeln weitere zu setzen. Die Flusstheorie hat sich historisch ausgehend von Problemen aus der Anwendung entwickelt. Allgemein ist man von der Situation ausgegangen, ein Fluid, also ein beliebig in Untergegenstände zerlegbaren Gegenstand, auf verschiedenen Wegen durch eine Welt räumlich zu verlagern – etwa elektrische Energie über ein Stromnetzwerk von einer Quelle an einen Bedarfsort, oder Daten durch ein Datennetzwerk von einem Sender zu einem Empfänger. Auch abstrakte Gegenstände wie „einander kennen“ kann man modellieren. Durch maximale Flüsse in einem sozialen Netzerk kann man dann ein Maß dafür erhalten, wie stark zwei (Mengen von) Personen miteinander vernetzt sind. Theoretische AnwendungenEine naheliegende und natürliche Anwendung hat die Flusstheorie bei der Transversalentheorie, die sich auf sehr natürliche Art und Weise in die Theorie der Flüsse einbetten lässt. Einen umfassenden Ansatz, das zu tun, hat Ford 1962 in einem Standardwerk formuliert. Auch viele kombinatorische Probleme auf Graphen, wie bipartite Matchings, lassen sich leicht in ein geeignetes Flussproblem überführen (siehe Bild) und dort schnell lösen. Eine weitere Anwendung ist das effiziente Ermitteln der Knotenzusammenhangszahl und Kantenzusammenhangszahl. Durch das Lemma von Tutte (nach William Thomas Tutte) werden zudem Anwendungen erweiterter Flusstheorie (sogenannten gruppenwertigen Flüssen) und Färbbarkeitsaussagen deutlich. Einige Vermutungen von ihm zur Existenz von k-Flüssen in planaren Graphen hätten starke theoretische Implikationen. Literatur
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||