Very simple methods for all pairs network flow analysis Tobias Ludes 02.07.07
Inhalt Einführung Algorithmen Modifikation der Gomory-Hu Methode
Einführung Nach Gomory-Hu nur n-1 Netzwerk-Fluss- Berechnungen nötig zur Berechnung des maximalen Flusswerts zwischen allen Knoten Darstellung durch flussäquivalenten Baum bzw. Schnittbaum
Einführung Definition: Ein flussäquivalenter Baum für einen ungerichteten Graphen G ist ein gewichteter Baum T mit n Knoten, wobei für jedes Knotenpaar (x,y) der maximale Fluss von x nach y in G genau das Gewicht einer Kante e auf dem Pfad von x nach y in T ist, für welche dieses minimal ist. Definition: i i Ein Gomory-Hu Schnittbaum (GH Schnittbaum) ist ein flussäquivalenter Baum, in dem für jedes Knotenpaar (x,y) die beiden Komponenten von T e, e wie in Definition i i von flussäqu. Baum, einen minimalen Schnitt zwischen x und y in G darstellen.
Einführung Anwendung bei Internetvernetzung In der Elektrotechnik t beim Network on Chip - Design zum Überprüfen ob Netzwerkkapazität ausreichend ist
Algorithmen Definition: Zwei Schnitte (X,Y) und (U,V) kreuzen sich, ihwenn alle vier Schnittmengen, X U, X V, Y U und Y V, nicht leer sind.
Algorithmus EQ: Algorithmen Input: ungerichteter Graph G mit Kantenkapazitäten Output: flussäquivalenter l Baum T 1. Erzeuge einen (Stern-)Baum T mit n Knoten, wobei Knoten 1 in der Mitte liegt und die Knoten 2 bis n Blätter sind. 2. s:=2 3. Berechne einen minimalen Schnitt (X,Y) in G zwischen Blatt s und seinem (eindeutigen) Nachbarn t in T. Beschrifte die Kante (s,t) in T mit der Kapazität von (X,Y). 4. Trenne jeden Knoten i > s in T, der ein Nachbar von t ist und auf der s- Seite von (X,Y) liegt, von t und verbinde i mit s. 5. Wenn s < n: s s+1 und gehe zu Schritt3, sonst gib flussäquivalenten Baum T aus.
Beispiel: Algorithmen
Beispiel: Algorithmen
Algorithmen Anmerkungen zu EQ: G wird nur zur minimalen Schnittberechnung gebraucht EQ kann man sich als n-1 Anfragen an ein Orakel vorstellen flussäquivalenter Baum kann aus n-1 Schnittabfragen abgeleitet werden
Algorithmen Lemma 1: Sei (X,Y) ein minimaler Schnitt in G zwischen den Knoten x X und y Y, u und v zwei Knoten auf der X-Seite des Schnitts und (U,V) ein beliebiger minimaler (u,v) Schnitt in G. Wenn y U, dann ist (U',V' )=(U Y,V X) ein minimaler (u,v) Schnitt; falls y V ist (U',V )=(U X,V Y) ein minimaler (u,v) Schnitt. Korollar 1: Sei (X,Y), (U,V) und (U',V' ) wie in Lemma 1. Dann kreuzt der minimale (u,v) Schnitt (U',V' ) nicht (X,Y) und teilt X genauso wie (U,V) X teilt.
Algorithmen Theorem 1: Für einen gegebenen Graphen G berechnet der Algorithmus EQ einen flussäquivalenten Baum T korrekt.
Algorithmen Definition: Für eine Teilmenge N i von Knoten von G ist die Kontraktion von N i die Ersetzung der Knoten von N i durch einen einzigen Knoten c i und für jeden Knoten v G-N i die Ersetzung der Kanten von v nach N i 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.
Algorithmen Gomory-Hu Methode: Input: ungerichteter Graph G mit n Knoten Output: GH Schnittbaum T für G 1. T (V T,E T ) mit V T ={V}, E T = 2. Wähle S V T mit S 2 und u,v S 3. N i ={x V x Q,Q ist in der i-ten Komponente von T-S} 4. Erzeuge Graph G(S) durch Kontraktion aller Mengen N i in G 5. Berechne maximalen Fluss f(u,v) und minimalen i Schnitt C(u,v) zwischen u und v in G(S) 6. S u ={x G x S und x liegt auf der u-seite des Schnitts C(u,v)}, S v ={x G x S und x liegt auf der v-seite des Schnitts C(u,v)} 7. Ersetze S in T 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 V T = V gib T aus, sonst gehe zu Schritt 2
Beispiel: Algorithmen 1 = {1,2,3,4,5} Iteration 1: S=T, u=1, v=5 S u ={1,2,3}, S v ={4,5} 1 = {1,2,3} {,, } 5 = {4,5}
Beispiel: Algorithmen 1 = {1,2,3} 5 = {4,5} Iteration 2: S=1, u=1, v=2 S u ={1,3}, S v ={2} N 1 ={4,5} 1 = {1,3} {, } 2 = {2} 5 = {4,5}
Beispiel: Algorithmen 1 = {1,3} 2 = {2} 5 = {4,5} Iteration 3: S=1, u=1, v=3 S u ={1}, S v ={3} N 1 ={2}, N 2 ={4,5} 1 = {1} 2 = {2} 3 = {3} 5 = {4,5}
Beispiel: Algorithmen 1 = {1} 2 = {2} 3 = {3} 5 = {4,5} Iteration 4: S=5, u=4, v=5 S u ={4}, S v ={5} N 1 ={1,2,3}
Modifikation des Gomory-Hu Algorithmus GH-Methode benötigt paarweise nicht- kreuzende Schnitte Knotenkontraktion t kti Knotenkontraktion schwierig zu implementieren Modifizierte i t GH-Methode um Knotenkontraktion zu vermeiden
Modifikation des Gomory-Hu Algorithmus Zu zeigen: Teilung von Superknoten und Neuverbinden der Nachbarn bei Kreuzschnitten Definition: Ein Paar von Knoten (x,y) heißt Schnittpaar für eine Kante e eines Zwischenschnittbaums T wenn die Knoten von G in den beiden Komponenten von T-e einen minimalen (x,y) Schnitt in G darstellen.
Modifikation des Gomory-Hu Algorithmus Lemma 2: Sei T ein Zwischenschnittbaum in der Berechnung eines GH Schnittbaums, und sei e eine Kante in T zwischen zwei Superknoten S und S. Dann gibt es ein Paar von Knoten (x,y) mit x Sund y S' so dass (x,y) ein Schnittpaar für e ist.
Modifikation des Gomory-Hu Algorithmus Theorem 2: Seien u und v zwei Knoten von G im Superknoten S eines GH-Zwischenbaums T. Wenn (U,V) ein beliebiger minimaler (u,v) Schnitt in G (mit u U und v V) ist, dann existiert ein minimaler (u,v) Schnitt (C u,c v ) im kontrahierten Graph G(S) (mit u C u und v C v ) so dass S U=S C u und S V=S C v und die Kapazität der beiden Schnitte gleich ist.
Modifikation des Gomory-Hu Algorithmus Nach Theorem 2 kann man durch minimalen Schnitt im ursprünglichen Graphen S teilen Möglicherweise teilt ein solcher Schnitt eine der Mengen N i neue Regeln zum Neuverbinden der Knoten
Modifikation des Gomory-Hu Algorithmus Modifikation der GH Methode damit jeder Knoten so genannten Repräsentanten r(s) enthält: 1. Beliebiger Knoten wird Repräsentant des ersten Superknotens 2. Bei Teilung gilt folgende Regel: Der berechnete Fluss muss zwischen r(s) und einem beliebigen anderen Knoten v von S sein. 3. Nach Teilung: r(s) Repräsentant von S r(s) und v Repräsentant von S v
Modifikation des Gomory-Hu Algorithmus Lemma 3: Sei T ein Zwischenschnittbaum und S, S zwei beliebige bi benachbarte Superknoten in T. Sei N i die Komponente von T-S die S enthält. Dann ist (G-N i,n i ) ein minimaler Schnitt in G, der r(s) und r(s ) trennt. Das heißt, (r(s),r(s ))( ( ist ein Schnittpaar für die Kante in T zwischen S und S.
Modifikation des Gomory-Hu Algorithmus Theorem 3: Sei S und N j für j k wie in Theorem 2 und für j ksei y j N j, x j (G-N j ) so dass (G-N j, N j ) minimaler i (x j, y j ) Schnitt in G (nach Lemma 2 existiert (x j, y j )). Weiter sei (U,V) ein beliebiger (u,v) Schnitt in G für u und v in S, und (U k,v k ) der minimale (u,v) Schnitt den man von (U,V) aus dem Beweis von Theorem 2 erhält. Dann gilt für ein festes j: Wenn x j =u, dann N j U k genau dann wenn y j U.
Modifikation des Gomory-Hu Algorithmus Korollar 2: Für einen Superknoten S in einem von der modifizierten GH-Methode erzeugten Zwischenbaum T und für v r(s), sei (U,V) ein beliebiger minimaler (r(s),v) Schnitt in G. Die folgende Regel entscheidet korrekt ob ein Nachbar S von S in T 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.
Modifikation des Gomory-Hu Algorithmus Beweis: Nach Lemma 3 erfüllt r(s) die Bedingungen von x j (r(s) G-N j, (N j,g-n j ) minimaler (r(s),r(s j )) Schnitt mit S j Superknoten-Nachbar von S in N j ) in modifizierter GH Methode gilt: u=x j =r(s) für alle j nach h Theorem 3 existiert i minimaler i (u,v) Schnitt (U k,v k ) in G(S) so dass N j U k genau dann wenn r(s j ) U
Modifikation des Gomory-Hu Algorithmus MGH-Algorithmus Input: ungerichteter Graph mit n Knoten Output: GH Schnittbaum T für G 1. T (V T T,,E T) mit V T ={V}, E T =, r(v)=1 2. Wähle S V T mit S 2 und v S 3. Berechne maximalen Fluss f(r(s),v) und minimalen Schnitt C(r(S),v) zwischen r(s) und v in G 4. S v ={x G x S und x liegt auf der v-seite des Schnitts C(r(S),v)}, S=S-S v 5. Erzeuge neuen Superknoten S v in T 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 S ) für die r(s ) auf der v-seite des Schnitts liegt durch (S v,s ) 6. Wenn V T = V V gib T aus, sonst gehe zu Schritt 2
Modifikation des Gomory-Hu Algorithmus Anmerkungen zu MGH: Wie bei EQ wird G nur zur Berechnung eines minimalen Schnitts gebraucht. Schnittbaum lässt sich aus n-1 Anfragen an ein Schnittbaum lässt sich aus n 1 Anfragen an ein Orakel ableiten
Modifikation des Gomory-Hu Algorithmus Man kann MGH auch in der Form von EQ darstellen: 1. Erzeuge einen (Stern-)Baum T mit n Knoten, wobei Knoten 1 in der Mitte liegt und die Knoten 2 bis n Blätter sind. 2. s:=2 3. Berechne einen minimalen Schnitt (X,Y) in G zwischen Blatt s und seinem (eindeutigen) Nachbarn t in T. Beschrifte die Kante (s,t) in T mit der Kapazität von (X,Y). 4. Trenne jeden Knoten i s in T, der ein Nachbar von t ist und auf der s- Seite von (X,Y) liegt, von t und verbinde i mit s. Beschrifte die neue Kante (i,s) mit dem Wert der alten Kante (i,t). 5. Wenn s < n: s s+1 und gehe zu Schritt3, sonst gib flussäquivalenten Baum T aus.
Modifikation des Gomory-Hu Algorithmus Vergleich von EQ und MGH EQ MGH
Zusammenfassung Modifizierter Algorithmus berechnet Schnittbaum ohne nicht-kreuzende Schnitte zu suchen oder beachten zu müssen ohne Knotenkontraktion leichter zu implementieren Ursprünglicher GH-Algorithmus dennoch in Praxis möglicherweise schneller
Vielen Dank für die Aufmerksamkeit!