Very simple methods for all pairs network flow analysis Tobias Ludes 02.07.07 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 T ist, für welche dieses minimal ist. 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 1, einen minimalen Schnitt zwischen und in darstellen. Definition: Zwei Schnitte , und , und , nicht leer sind. , kreuzen sich, wenn alle vier Schnittmengen, , Algorithmus EQ: Input: ungerichteter Graph mit Kantenkapazitäten Output: flussäquivalenter 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 , in zwischen Blatt s und seinem (eindeutigen) Nachbarn t in T‘. Beschrifte die Kante , in T‘ mit der Kapazität von , . 4. Trenne jeden Knoten i > s in T‘, 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 ‘. 5. Wenn : 1 und gehe zu Schritt3, sonst gib flussäquivalenten Baum T‘ aus. Lemma 1: 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 , ein minimaler , Schnitt; falls ist , , dann ist , , ein minimaler , Schnitt. Korollar 1: Sei , , , und , wie in Lemma 1. Dann kreuzt der minimale nicht , und teilt X genauso wie , X teilt. , , Schnitt Theorem 1: Für einen gegebenen Graphen berechnet der Algorithmus EQ einen flussäquivalenten Baum T‘ korrekt. Definition: Für eine Teilmenge von Knoten von ist die Kontraktion von die Ersetzung der Knoten von durch einen einzigen Knoten ci und für jeden Knoten die Ersetzung der Kanten von v nach durch eine einzige Kante von v nach ci, wobei die Kapazität der Kante (v,ci) die Summe der Kapazitäten der entfernten Kanten ist. Gomory‐Hu Methode: Input: ungerichteter Graph G mit n Knoten Output: GH Schnittbaum T für , mit , 1. mit | | 2 und , 2. Wähle 3. | , 4. Erzeuge Graph durch Kontraktion aller Mengen in 5. Berechne maximalen Fluss f(u,v) und minimalen Schnitt C(u,v) zwischen u und v in G(S) 6. | , , | , 7. Ersetze S in T durch Su und Sv und verbinde Su und Sv durch eine Kante mit Gewicht f(u,v); ersetze alle Kanten (S,S‘) durch (Su,S‘) falls S‘ in kontrahiertem Knoten von G(S) auf der u‐ Seite des Schnitts, sonst durch (Sv,S‘). 8. Wenn | | | | gib T aus, sonst gehe zu Schritt 2 Definition: Ein Paar von Knoten , heißt Schnittpaar für eine Kante e eines Zwischenschnittbaums T wenn die Knoten von in den beiden Komponenten von T‐e einen minimalen , Schnitt in darstellen. Lemma 2: Sei T ein Zwischenschnittbaum in der Berechnung von einem GH Schnittbaum, und sei e eine Kante in T zwischen zwei Superknoten S und S‘. Dann gibt es ein Paar von Knoten , mit und so dass , ein Schnittpaar für ist. Theorem 2: Seien u und v zwei Knoten von im Superknoten S eines GH‐Zwischenbaums T. Wenn (U,V) ein beliebiger minimaler , Schnitt in (mit und ) ist, dann existiert ein und ) so dass minimaler , Schnitt (Cu,Cv) im kontrahierten Graph G(S) (mit und und die Kapazität der beiden Schnitte gleich ist. Lemma 3: Sei T ein Zwischenschnittbaum und S, S‘ zwei beliebige benachbarte Superknoten in T. Sei die Komponente von T‐S die S‘ enthält. Dann ist (G‐Ni,Ni) 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 T zwischen S und S‘. Theorem 3: Sei S und Nj für wie in Theorem 2 und für sei , so dass , minimaler , Schnitt in (nach Lemma 2 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 Theorem 2 erhält. , dann genau dann wenn . Dann gilt für ein festes j: Wenn Korollar 2: Für einen Superknoten S in einem von der modifizierten GH‐Methode erzeugten Zwischenbaum T 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 T mit Sr(S) oder mit Sv verbunden werden sollte: Wenn r(S‘) auf der r(S)‐Seite von (U,V) liegt, dann verbinde S‘ mit Sr(S), sonst mit Sv. Algorithmus MGH: Ersetze Schritt 4 in Algorithmus EQ durch: 4. Trenne jeden Knoten i ≠ s in T‘, 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).