Adversarial Mixing in Virtual Space

Werbung
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,wV}: 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:EIR+: 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) = vU 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 vV\{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,tc(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,tc(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 FD.
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: nn-Gitter hat Expansion 1/n, kann
aber eine konstante Fehlerwahrscheinlichkeit aushalten.
Die Spanne
•
•
•
•
Graph G=(V,E)
UV 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?
Herunterladen