Verteilte Algorithmen und Datenstrukturen Kapitel 2: Routing und Scheduling Christian Scheideler Institut für Informatik Universität Paderborn Graphentheorie Graph G=(V,E): • V: Menge von Knoten • E { {v,w} | v,wV}: Menge von Kanten D C A B Graphentheorie • (v,w): Distanz (Länge des kürzesten Weges) zwischen v und w in G • D=maxv,w (v,w): Durchmesser von G D A Graphentheorie • (U): Nachbarmenge von Knotenmenge U • (U) = |(U)| / |U| • (G) = minU,|U||V|/2 (U): Expansion von G U (U) D A C Graphentheorie Netzwerk G=(V,E,c): • V: Knotenmenge, E: Kantenmenge • c:EIR+: Kantenkapazitäten (beide Richt.) 2 1 2 3 4 1 1 Graphentheorie • c(v) = w c(v,w): Kapazität von Knoten v • c(U) = vU c(v), c(U,U): Kapazität U U • (G) = minU [ c(U,U) / min{c(U),c(U)} ] Leitfähigkeit von G U 2 U 1 2 3 1 4 1 Netzwerktopologien Idealerweise vollständiges Netzwerk: Problem: skaliert nicht gut! (~n2 Kanten) Linie • Grad 2 (optimal), ABER • Durchmesser schlecht (n-1 für n Knoten) • Expansion schlecht ( (Linie) = 2/n ) Wie erhält man kleinen Durchmesser? Binärer Baum • n=2k+1-1 Knoten, Grad 3 • Durchmesser ist k = log2 n, ABER • Expansion schlecht ( (Baum)=2/n ) 2-dimensionales Gitter • • • • n = k2 Knoten, maximaler Grad 4 Durchmesser ist 2(k-1) < 2 n Expansion ist ~2/ n Nicht schlecht, aber geht es besser? Hypercube • Knoten: (x1,…,xd) {0,1}d • Kanten: i: (x1,…,xd) (x1,..,1-xi,..,xd) d=1 d=2 d=3 Grad d, Durchmesser d, Expansion 1/ d Butterfly • Knoten: (k,(xd,…,x1)) {0,..,d} {0,1}d • Kanten: (k-1,(xd,…,x1)) (k,(xd,..,xk,..,x1)), (k,(xd,..,1-xk,..,x1)) 00 0 1 01 10 11 0 0 1 1 2 Grad 4, Durchmesser 2d, Expansion ~1/d Cube-Connected-Cycles • Knoten: (k,(x1,…,xd)) {0,..,d-1} {0,1}d • Kanten: (k,(x1,…,xd)) (k-1,(x1,...,xd)), (k+1,(x1,..,xd)), (k,(x1,..,1-xk+1,..,xd) De Bruijn Graph • Knoten: (x1,…,xd) {0,1}d • Kanten: (x1,…,xd) (x2,…,xd,0) (x2,…,xd,1) 01 001 011 010 00 11 10 101 000 111 100 110 Durchmesser Theorem 1.11: Jeder Graph mit maximalem Grad d>2 und Größe n muss einen Durchmesser von mindestens (log n)/(log(d-1))-1 haben. Theorem 1.12: Für jedes gerade d>2 gibt es eine Familie von Graphen mit maximalem Grad d und Größe n mit Durchmesser (log n) / (log d -1). Expansion Theorem: Für jeden Graph G ist die Expansion (G) höchstens 1. Beweis: siehe Definition von (G). Theorem: Es gibt Familien von Graphen mit konstantem Grad mit konstanter Expansion. Beispiel: Gabber-Galil Graph • Knotenmenge: (x,y) {0,…,n-1}2 • (x,y) (x,x+y),(x,x+y+1), (x+y,y), (x+y+1,y) Leitfähigkeit Theorem 1.13: Für jedes Netzwerk G=(V,E,c) ist die Leitfähigkeit (G) höchstens 1. Beweis: • Betrachte ein beliebiges U⊆V. • Sei EU = { {v,w}∈E | v∈U}, wobei {v,w} zweimal in EU vorkommt, falls v,w∈U. • Es gilt (U,U)⊆E und c(U) = c(E), also ist c(U,U)≤c(U). • Analog ist c(U,U)≤c(U). • Aus Definition von folgt dann das Theorem. Theorem: Es gibt Familien von Graphen mit konstantem Grad und konstanter Leitfähigkeit. Flusszahl (Flow Number) (s,t)-Fluss f:Eℝ+ im Netzwerk G=(V,E,c): • Flusserhaltung: für alle vV\{s,t}: u f(u,v) = w f(v,w) • Kapazitätseinhaltung: Hier nicht gefordert. für alle (v,w)E: f(v,w) c(v,w) Flusswert: |f| = v f(s,v)-u f(u,s) 2 von 3 s 1 von 1 1 von 2 1 von 1 t 2 von 2 Flusszahl Mehrfachflussproblem: • Netzwerk G=(V,E,c) (bigerichtete Kanten) • Paare (s1,t1),…,(sk,tk) • Anforderungen d1,…,dk ℝ+ • Eine gültige Lösung S zum Mehrfachflussproblem ist eine Menge von Flüssen f1,…fk für die Paare (s1,t1),…,(sk,tk) mit |fi|=di für alle i. • Congestion von S: C(S) = maxe∈E f(e)/c(e), wobei f(e)= ∑i fi(e) der Gesamtfluss über e ist. Standardproblem: finde gültige Lösung S, so dass C(S) minimal ist. Flusszahl Spezielles Mehrfachflussproblem: • Paare: alle (v,w) V2 • Anforderungen: dv,w = c(v)c(w)/c(V) • S: Lösung für spezielles Problem • Dilation D(S) = Länge des längsten Flussweges • Congestion C(S) = maxe∈E f(e)/c(e) (C(S) ist invariant zu Kantenskalierungen) Flusszahl: F = minS max{C(S),D(S)} Flusszahl Balanciertes Mehrfachflussproblem (BMFP): • Für jedes v ist die Summe der Anforderungen aus v und nach v gleich c(v). Beispiel: dv,w = c(v)c(w)/c(V) für alle v∈V. Theorem 1.14: Für jedes Netzwerk mit Flusszahl F und jede BMFP Instanz I gibt es eine Lösung S für I mit max{C(S),D(S)} 2F. Theorem 1.15: Im Schnitt gilt über alle BMFP Instanzen I, dass max{C(S),D(S)}=(F) für die beste Lösung S von I. Flusszahl Beweis von Theorem 1.14: • Sei G=(V,E,c) das gegebene Netzwerk. • S: optimale Lösung zum speziellen BMFP für G, das der Flusszahl F zugrunde liegt, d.h. F=max{C(S),D(S)} • fv,w: Fluss in S von v nach w • Pv,w: Menge an Pfaden in fv,w • Betrachte beliebiges BMFP mit Anforderungen di für Paare (si,ti). • Betrachte daraus festes Paar (s,t) mit Anforderung ds,t. • Konstruiere daraus Tripel (s,v,t) mit Anforderungen ds,v,t = ds,tc(v)/c(V) für alle v, d.h. ∑v ds,v,t = ds,t. • Verwende Ps,v∘Pv,t, um jedes Tripel (s,v,t) zu routen. (∘: Konkatenation) Flusszahl Beweis von Theorem 1.14: • Betrachte erste Hälfte des Routings: s v t • Flusswert über Ps,v: ∑t ds,tc(v)/c(V) = c(v)/c(V)∑t ds,t = c(s)c(v)/c(V). • Das ist der gleiche wie für das spezielle BMFP! • Also ist Congestion und Dilation für die erste Hälfte des Routings höchstens F. • Dasselbe gilt für die zweite Hälfte des Routings. • Damit erhalten wir eine Lösung für das BMFP mit Congestion und Dilation höchstens 2F. Flusszahl Theorem 1.16 (Shortening Lemma): Angenommen, wir haben ein Netzwerk mit Flusszahl F. Für jedes [0,1] und jeden gültigen Mehrfachfluss f mit Congestion C(f) gibt es einen gültigen Mehrfachfluss f´ mit Congestion maximal (1+)C(f), der Wege der Länge höchstens 2F(1+1/) verwendet. Fazit: immer gute Lösung mit kurzen Wegen! Flusszahl Beweisskizze von Theorem 1.16: Beziehung zwischen Parametern Fact 1.17: Für jedes Netzwerk mit Durchmesser D und Flusszahl F gilt, dass FD. Theorem 1.18: Für (fast) jedes Netzwerk der Größe n mit Leitfähigkeit und Flusszahl F gilt: -1 F c -1 log n Theorem 1.20: Der d-dimensionale Hypercube, das Butterfly und der de Bruijn Graph haben die Flusszahl F=(d). Die Spanne Expansion: bestimmt die Robustheit eines Graphen gegenüber worst-case Ausfällen. Problem: wie misst man die Robustheit eines Graphen gegen zufällige Fehler? Beispiel: nn-Gitter hat Expansion 1/n, kann aber eine konstante Fehlerwahrscheinlichkeit aushalten. Die Spanne • • • • Graph G=(V,E) UV kompakt: U und V\U verbunden (U): Nachbarmenge von U P(U)V: Knotenmenge mit kleinstem Spannbaum von (U) Spanne = maxkompakte U |P(U)|/|(U)| Die Spanne Theorem 1.22: Betrachte einen beliebigen Graphen mit maximalem Grad d und Spanne . Dann G eine Fehlerwahrscheinlichkeit bis zu 1/(16e d8 ) aushalten. Konstantdimensionale Gitter: konstantes Fragen?