Very simple methods for all pairs network flow analysis obias Ludes 0.0.0. Einführung Um den maximalen Flusswert zwischen allen Knoten eines ungerichteten Graphen zu berechnen sind nach Gomory und Hu nur Netzwerkberechnungen auf notwendig, wodurch man einen Faktor von gegenüber der Berechnung für jedes einzelne Knotenpaar spart. Diese Flusswerte können dann in einem gewichteten Baum, dem flussäquivalenten Baum bzw. Schnittbaum dargestellt werden. Definition: Ein flussäquivalenter Baum für einen ungerichteten Graphen ist ein gewichteter Baum mit Knoten, wobei für jedes Knotenpaar, der maximale Fluss von nach in genau das Gewicht einer Kante e auf dem Pfad von nach in ist, für welche dieses minimal ist. 0 Abbildung a: Graph G Abbildung b: flussäquivalenter Baum Definition: Ein Gomory Hu Schnittbaum (GH Schnittbaum) ist ein flussäquivalenter Baum, in dem für jedes Knotenpaar, die beiden Komponenten von, wie in Definition von flussäqu. Baum, einen minimalen Schnitt zwischen und in darstellen. 0 Abbildung c: GH Schnittbaum Das Besondere an einem Schnittbaum ist, dass man für zwei Knoten nicht nur den maximalen Fluss zwischen diesen ablesen kann, sondern auch direkt eine Knotenpartition für einen minimalen Schnitt bekommt. Anwenden kann man Schnittbäume bei der Internetvernetzung um zu sehen welche Datenmenge maximal von einem Ort zu einem anderen, beispielsweise von Hamburg nach München, übertragen werden kann.
In der Elektrotechnik können Schnittbäume etwa beim Network on Chip (NoC) Design hilfreich sein. Auf einem Chip werden dabei mehrere Einheiten, die unterschiedliche Funktionen haben, implementiert und durch ein Netzwerk verbunden. Anschaulich kann man sich den Chip als Handy vorstellen, mit dem man beispielsweise ein Video versenden will. Dann stellen die Einheiten auf dem Chip etwa die Kameraeinheit, den Encoder und die Sendeeinheit dar. Mit dem Abbildung : NoC Schnittbaum kann man nun überprüfen, ob die Kapazität des Netzwerks ausreichend ist, in unserem Beispiel also, ob man das Video mit der vorgegebenen Netzwerkkapazität versenden kann. Im Folgenden wird nun zunächst ein sehr einfacher Algorithmus zur Bestimmung eines flussäquivalenten Baums vorgestellt. Anschließend sehen wir mit dem Gomory Hu Algorithmus wie man einen Schnittbaum erzeugen kann und werden dann abschließend sehen wie man diesen modifizieren kann um eine leichter zu implementierende Methode zu erhalten.. Algorithmen für flussäquivalente Bäume und Schnittbäume Definition: Zwei Schnitte, und, kreuzen sich, wenn alle vier Schnittmengen,,, und, nicht leer sind. Algorithmus EQ: Input: ungerichteter Graph mit Kantenkapazitäten Output: flussäquivalenter Baum. Erzeuge einen (Stern )Baum mit n Knoten, wobei Knoten in der Mitte liegt und die Knoten bis n Blätter sind.. s:=. Berechne einen minimalen Schnitt, in zwischen Blatt s und seinem (eindeutigen) Nachbarn t in. Beschrifte die Kante, in mit der Kapazität von,.. renne jeden Knoten i > s in, der ein Nachbar von t ist und auf der s Seite von, liegt, von t und verbinde i mit s. Jeder Knoten bleibt also ein Blatt in.. Wenn : und gehe zu Schritt, sonst gib flussäquivalenten Baum aus. Bemerkung: In jeder Iteration bleibt s und alle Knoten größer als s Blätter in, so dass jedes gewählte s einen eindeutigen Nachbarn hat, wie im Algorithmus gefordert.
Beispiel: (,) Schnitt (,) Schnitt 8 (,) Schnitt (,) Schnitt Abbildung a: Graph G Abbildung b: Sternbaum aus. Abbildung c: ' nach. It. Abbildung d: ' nach. It. Abbildung e: ' nach. It. Abbildung f: flussäquiv. Baum ' In diesem Beispiel kreuzen sich die Schnitte (,) und (,), was bei dem im nächsten Kapitel folgenden Gomory Hu Algorithmus nicht zulässig ist. Der endgültige flussäquivalente Baum muss kein Schnittbaum sein. Der Graph wird bei diesem Algorithmus nur zur Berechnung eines minimalen Schnitts gebraucht. Deswegen kann man sich den Algorithmus als Anfragen an ein Orakel, welches als alleine die Struktur von kennt, vorstellen. Man kann also einen flussäquivalenten Baum für einen unbekannten Graphen durch Schnittabfragen ableiten. Wir werden sehen, dass dies auch für Schnittbäume gilt. Lemma : Sei, ein minimaler Schnitt in zwischen den Knoten und, u und v zwei Knoten auf der X Seite des Schnitts und, ein beliebiger minimaler, Schnitt in. Wenn, dann ist,, ein minimaler, Schnitt; falls ist,, ein minimaler, Schnitt.
U V x u X Y U V U V x u X Y y U V v y v Abbildung : Die beiden Möglichkeiten von Lemma Die Bedeutung von Lemma besteht darin, dass gezeigt wird, dass ein minimaler, Schnitt, so dass Y komplett auf die u Seite oder komplett auf die v Seite fällt, immer existiert und deswegen,, nicht kreuzt. Korollar : Sei,,, und, wie in Lemma. Dann kreuzt der minimale, Schnitt, nicht, und teilt X genauso wie, X teilt. heorem : Für einen gegebenen Graphen berechnet der Algorithmus EQ einen flussäquivalenten Baum korrekt. Definition: Für eine eilmenge von Knoten von ist die Kontraktion von die Ersetzung der Knoten von durch einen einzigen Knoten c i und für jeden Knoten die Ersetzung der Kanten von v nach durch eine einzige Kante von v nach c i, wobei die Kapazität der Kante (v,c i ) die Summe der Kapazitäten der entfernten Kanten ist. Gomory Hu Methode: Input: ungerichteter Graph G mit n Knoten Output: GH Schnittbaum für., mit,. Wähle mit und,.,. Erzeuge Graph durch Kontraktion aller Mengen in. Berechne maximalen Fluss f(u,v) und minimalen Schnitt C(u,v) zwischen u und v in G(S) 6.,,,. Ersetze S in durch S u und S v und verbinde S u und S v durch eine Kante mit Gewicht f(u,v); ersetze alle Kanten (S,S ) durch (S u,s ) falls S in kontrahiertem Knoten von G(S) auf der u Seite des Schnitts, sonst durch (S v,s ). 8. Wenn gib aus, sonst gehe zu Schritt Die Existenz nicht kreuzender Schnitte, wie in Lemma gesehen, rechtfertigt die Knotenkontraktion in der GH Methode. Das heißt, um einen minimalen, Schnitt in zu finden, ist es zulässig Y zu kontrahieren, denn ein minimaler, Schnitt im Graphen mit kontrahiertem Y definiert einen minimalen, Schnitt in, und natürlich haben beide Schnitte die selbe Kapazität. Durch iterative Anwendung des Lemmas von den Blättern von nach S kann gezeigt werden, dass ein minimaler, Schnitt in dem kontrahierten Graph G(S) die selbe Kapazität hat wie ein minimaler, Schnitt in. Ein derartiger Schnitt wird natürlich keinen vorher gefundenen Schnitt kreuzen. In der
GH Methode ist ein solcher Schnitt erwünscht, weil man dann leicht sehen kann, wie S geteilt wird und wie die Nachbarn von S neuverbunden werden mit S u und S v. Beispiel: 8 G Iteration : S=, u=, v= = {,,,,} 8 G(S) S u ={,,}, S v ={,} Iteration : S=, u=, v= N ={,} = {,,} = {,} 6 N G(S) S u ={,}, S v ={}
Iteration : S=, u=, v= N ={}, N ={,} N = {,} = {} = {,} 6 N G(S) S u ={}, S v ={} = {} = {} = {} = {,} Iteration : S=, u=, v= N ={,,} N 6 8 G(S) S u ={}, S v ={}
. Modifikation des Gomory Hu Algorithmus Die GH Methode benötigt zur Berechnung eines Schnittbaums paarweise nicht kreuzende Schnitte, was im Algorithmus durch die Knotenkontraktion erreicht wird. Da dies jedoch relativ schwierig zu implementieren ist, sehen wir nun wie wir die GH Methode modifizieren können um Knotenkontraktion zu vermeiden und stattdessen die minimalen Schnitte auf dem Ausgangsgraphen berechnen zu können.. eilung der Superknoten In der Gomory Hu Methode wird im kontrahierten Graph G(S) ein minimaler Schnitt berechnet. Dabei wird entschieden wie S geteilt wird und wie die Nachbarn von S mit S u und S v neu verbunden werden. In diesem Abschnitt wird nun gezeigt wie die GH Methode für die erste Entscheidung kreuzende Schnitte benutzen kann. Definition: Ein Paar von Knoten, heißt Schnittpaar für eine Kante e eines Zwischenschnittbaums wenn die Knoten von in den beiden Komponenten von e einen minimalen, Schnitt in darstellen. Lemma : Sei ein Zwischenschnittbaum in der Berechnung von einem GH Schnittbaum, und sei e eine Kante in zwischen zwei Superknoten S und S. Dann gibt es ein Paar von Knoten, mit und so dass, ein Schnittpaar für ist. heorem : Seien u und v zwei Knoten von im Superknoten S eines GH Zwischenbaums. Wenn (U,V) ein beliebiger minimaler, Schnitt in (mit und ) ist, dann existiert ein minimaler, Schnitt (C u,c v ) im kontrahierten Graph G(S) (mit und ) so dass und und die Kapazität der beiden Schnitte gleich ist. Nach heorem ist es also nicht notwendig im kontrahierten Graph G(S) zu bestimmen wie S geteilt wird. Man kann dies durch einen minimalen Schnitt im ursprünglichen Graph bestimmen. Dieser Schnitt könnte jedoch eine der Mengen teilen, und damit einen der vorherigen Schnitte kreuzen. Da der GH Algorithmus für solche Schnitte keinerlei Regeln hat, werden wir nun sehen wie wir kreuzende Schnitte verwenden um die Nachbarn von S mit S u und S v neu zu verbinden.
. Neuverbinden bei Kreuzschnitten Wir modifizieren nun die GH Methode so dass in jedem Zwischenbaum jeder Superknoten S genau einen Knoten enthält den wir Repräsentant nennen, bezeichnet mit r(s). Zuerst erklären wir einen beliebigen Knoten zum Repräsentanten des ersten Superknotens der GH Methode (der Menge aller Knoten von ) und führen dann folgende Regel ein: Wenn ein beliebiger Superknoten S geteilt werden soll, muss der berechnete Fluss zwischen r(s) und einem beliebigen anderen Knoten v von S sein. Nachdem S in zwei Superknoten S r(s) und S v geteilt wurde, ist r(s) der Repräsentant von S r(s) und v wird der Repräsentant von S v. Man kann leicht sehen, dass jeder Superknoten mit dieser Modifikation genau einen Repräsentanten hat. Lemma : Sei ein Zwischenschnittbaum und S, S zwei beliebige benachbarte Superknoten in. Sei die Komponente von S die S enthält. Dann ist (G N i,n i ) ein minimaler Schnitt in, der r(s) und r(s ) trennt. Das heißt, (r(s),r(s )) ist ein Schnittpaar für die Kante in zwischen S und S. heorem : Sei S und N j für wie in heorem und für sei, so dass, minimaler, Schnitt in (nach Lemma existiert, ). Weiter sei (U,V) ein beliebiger, Schnitt in für u und v in S, und, der minimale, Schnitt den man von (U,V) aus dem Beweis von heorem erhält. Dann gilt für ein festes j: Wenn, dann genau dann wenn. Korollar : Für einen Superknoten S in einem von der modifizierten GH Methode erzeugten Zwischenbaum und für, sei (U,V) ein beliebiger minimaler (r(s),v) Schnitt in. Die folgende Regel entscheidet korrekt ob ein Nachbar S von S in mit S r(s) oder mit S v verbunden werden sollte: Wenn r(s ) auf der r(s) Seite von (U,V) liegt, dann verbinde S mit S r(s), sonst mit S v. Mit heorem und Korollar können wir nun einen vereinfachten GH Algorithmus bilden: MGH Algorithmus Input: ungerichteter Graph mit n Knoten Output: GH Schnittbaum für., mit,,. Wähle mit und. Berechne maximalen Fluss f(r(s),v) und minimalen Schnitt C(r(S),v) zwischen r(s) und v in.,,. Erzeuge neuen Superknoten S v in mit r(s v )=v und verbinde S und S v durch eine Kante mit Gewicht f(r(s),v); ersetze alle Kanten (S,S ) für die r(s ) auf der v Seite des Schnitts liegt durch (S v,s ) 6. Wenn gib aus, sonst gehe zu Schritt Wie schon weiter vorne bei dem Algorithmus EQ gesehen, wird auch hier der Graph nur zur Berechnung eines minimalen Schnitts gebraucht und man kann den Baum wieder aus Anfragen an ein Orakel, welches den minimalen Schnitt und den Wert ausgibt, ableiten. Man kann nun die modifizierte GH Methode auch in der Form von Algorithmus EQ darstellen. Dazu muss man Schritt leicht modifizieren:
. renne jeden Knoten i s in, der ein Nachbar von t ist und auf der s Seite von, liegt, von t und verbinde i mit s. Beschrifte die neue Kante (i,s) mit dem Wert der alten Kante (i,t). Beispiel: (,) Schnitt (,) Schnitt Start Algorithmus EQ Algorithmus MGH. Iteration 0. Iteration 0. Zusammenfassung Der modifizierte Algorithmus berechnet Schnittbäume ohne nicht kreuzende Schnitte zu suchen oder beachten zu müssen, und damit ohne Knotenkontraktion und die damit verbundene Arbeit. Er ist daher viel leichter zu implementieren, da man bereits existierende maximale Flussprogramme ohne Anpassung für die Knotenkontraktion verwenden kann. Dennoch ist der ursprüngliche GH Algorithmus möglicherweise in der Praxis schneller (obwohl die asymptotische Worst Case Zeit die gleiche ist), weil die kontrahierten Graphen kleiner sind als der ursprüngliche Graph.