10. Übung – algorithmen i - kit – iti algorithmik...
TRANSCRIPT
1 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS
10. Übung – Algorithmen IJulian Arz, Timo Bingmann, Sebastian Schlag
KIT – Universität des Landes Baden-Württemberg undnationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu
Übersicht
2 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Wiederholung Vorlesung
Vorlesung: Beschleunigungstechniken für Routenplanung
Graphentheorie
Eulersche und Hamiltonsche Kreise
Bäume
Graphpartitionierung
3 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Wiederholung der Vorlesung
Sanders: Algorithmen IJuly 8, 2013 295
8 Graphrepräsentation
� 1736 fragt L. Euler die folgende
“touristische” Frage:
� Straßen- oder Computernetzwerke
� Zugverbindungen (Raum und Zeit)
� Soziale Netzwerke (Freundschafts-, Zitier-, Empfehlungs-,. . . )
� Aufgabenabhängigkeiten scheduling Probleme
� Werte und arithmetische Operationen Compilerbau
� . . .
Sanders: Algorithmen IJuly 8, 2013 316
9 Graphtraversierung
Ausgangspunkt oder Baustein fast jedes nichtrivialen Graphenalgorithmus
Sanders: Algorithmen IJuly 8, 2013 339
BFS←→ DFS
pro BFS:
� nichtrekursiv
� keine Vorwärtskanten
� kürzeste Wege, „Umgebung“ forward
backward
cross
stree
pro DFS
� keine explizite TODO-Datenstruktur (Rekursionsstapel)
� Grundlage vieler Algorithmen
Sanders: Algorithmen IJuly 8, 2013 340
10 Kürzeste Wege
Eingabe:Graph G= (V,E)
Kostenfunktion/Kantengewicht c : E→ RAnfangsknoten s.
Ausgabe:für alle v∈V
Länge µ(v) des kürzesten Pfades von snach v,
µ(v) := min{c(p) : p ist Pfad von snach v}mit c(〈e1, . . . ,ek〉) := ∑k
i=1c(ei).
Oft wollen wir auch „geeignete“ Repräsentation der kürzesten Pfade.
3.0 km
Sanders: Algorithmen IJuly 8, 2013 347
Edsger Wybe Dijkstra 1930–2002
1972 ACM Turingpreis
THE: das erste Mulitasking-OS
Semaphor
Selbst-stabilisierende Systeme
GOTO Statement Considered Harmful
Sanders: Algorithmen IJuly 8, 2013 348
Allgemeine Definitionen
Wie bei BFS benutzen wir zwei Knotenarrays:
� d[v] = aktuelle (vorläufige) Distanz von snach v
Invariante: d[v]≥ µ(v)
� parent[v] = Vorgänger von v
auf dem (vorläufigen) kürzesten Pfad von snach v
Invariante: dieser Pfad bezeugt d[v]
Initialisierung:d[s] = 0, parent[s] = s
d[v] = ∞, parent[v] =⊥
Kante
Kante
Kante
v
s
d[v]pare
ntpa
rent
pare
nt
Sanders: Algorithmen IJuly 8, 2013 349
Kante (u,v) relaxieren
falls d[u]+c(u,v)< d[v]
vielleicht d[v] = ∞setze d[v] := d[u]+c(u,v) und parent[v] := u
Invarianten bleiben erhalten!
Beobachtung:d[v] Kann sich mehrmals ändern!
u
u′
v
s
d[u′]d[u]
d[u]+c(u,v)
d[u′]+c(u′,v)
parent
Sanders: Algorithmen IJuly 8, 2013 350
Dijkstra’s Algorithmus: Pseudocode
initialize d, parent
all nodes are non-scanned
while ∃ non-scanned node u with d[u]< ∞u := non-scanned node v with minimal d[v]
relax all edges (u,v) out of u
u is scanned now
Behauptung:Am Ende definiert d die optimalen Entfernungen
und parent die zugehörigen Wege
Sanders: Algorithmen IJuly 8, 2013 351
Beispielcb
d e f
s
cb
d e f
s
2
19
3 2
8
70
50
102
4
a5
10
c
d e f
s
b
f
s
b
ed
c
c
fed
c
d f
b
e
2
19
3 2
8
70
50
102
4
a5
6 6
7
2
19
3 2
8
70
50
102
4
a5
6 6
7
s
b
2
19
3 2
8
70
50
102
4
a5
6 6
7
s1
9
3 2
8
70
50
102
4
a
10
2
2
19
3 2
8
70
50
102
4
a5
10 6
7
Sanders: Algorithmen IJuly 8, 2013 352
Korrektheit Annahme: alle Kosten nicht negativ!
Wir zeigen: ∀v∈V :
� v erreichbar =⇒ v wird irgendwann gescannt
� v gescannt =⇒ µ(v) = d[v]
Sanders: Algorithmen IJuly 8, 2013 356
Implementierung?
initialize d, parent
all nodes are non-scanned
while ∃ non-scanned node u with d[u]< ∞u := non-scanned node v with minimal d[v]
relax all edges (u,v) out of u
u is scanned now
Wichtigste Operation: finde u
Sanders: Algorithmen IJuly 8, 2013 357
Prioritätsliste
Wir speichern ungescannte erreichte Knoten in
addressierbarer Prioritätsliste Q.
Schlüssel ist d[v].
Knoten speichern handles. oder gleich items
Sanders: Algorithmen IJuly 8, 2013 363
Function Dijkstra(s : NodeId) : NodeArray×NodeArray
d = {∞, . . . ,∞}; parent[s]:= s; d[s] := 0; Q.insert(s) // O(n)
while Q 6= /0 dou := Q.deleteMin // ≤ n×foreach edge e= (u,v) ∈ E do // ≤m×
if d[u]+c(e)< d[v] then // ≤m×d[v]:= d[u]+c(e) // ≤m×parent[v] := u // ≤m×if v∈Q then Q.decreaseKey(v) // ≤m×elseQ.insert(v) // ≤ n×
return (d,parent)
Insgesamt
TDijkstra = O(m·TdecreaseKey(n)+n· (TdeleteMin(n)+Tinsert(n)))
Sanders: Algorithmen IJuly 8, 2013 365
Laufzeit
Bessere Implementierung mit Binary-Heapprioritätslisten:
� insert O(logn)
� decreaseKey O(logn)
� deleteMin O(logn)
TDijkstra = O(m·TdecreaseKey(n)+n· (TdeleteMin(n)+Tinsert(n)))
TDijkstraBHeap = O(m· logn+n· (logn+1))
= O((m+n) logn)
Sanders: Algorithmen IJuly 8, 2013 366
Laufzeit
(Noch) besser mit Fibonacci-Heapprioritätslisten:
� insert O(1)
� decreaseKey O(1) (amortisiert)
� deleteMin O(logn) (amortisiert)
TDijkstra = O(m·TdecreaseKey(n)+n· (TdeleteMin(n)+Tinsert(n)))
TDijkstraFib = O(m·1+n· (logn+1))
= O(m+nlogn)
Aber: konstante Faktoren in O(·) sind hier größer!
4 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Vorlesung: Beschleunigungstechniken fürRoutenplanung
Sanders: Algorithmen IJuly 8, 2013 380
Mehr zu kürzesten Wege
Viele Arbeiten zu besseren Prioritätslisten O(m+nlog logn)
[Thorup 2004]
Verallgemeinerungen
� Mehrere Zielfunktionen abwägen
� Mehrere Ziele in beliebiger Reihenfolge anfahren siehe auch
Optimierungskapitel
� Mehrere disjunkte Wege
Fast alles schwierig (NP-hart)
Sanders: Algorithmen IJuly 8, 2013 383
Straßennetzwerke
Wir konzentrieren uns auf Straßennetzwerke.
� mehrere nützliche Eigenschaften die sich ausnutzen lassen
� viele reale Anwendungen
� einige Techniken: anwendbar für öffentliche Verkehrsmittel
� die meisten Techniken: unklar wie nützlich sie für weitere Graphtypen sind
Sanders: Algorithmen IJuly 8, 2013 384
Straßennetzwerke
Eigenschaften
� groß, z.B. n=18 000 000 Knoten für Westeuropa
� dünn besetzt, z.B., m= Θ(n) Kanten
� beinahe planar, d.h., wenige Kanten kreuzen sich (Brücken)
� inhärente Hierarchie, schnellste Pfade benutzen wichtige Straßen
Sanders: Algorithmen IJuly 8, 2013 381
10.8 Distanz zu einem Zielknotent
Was machen wir, wenn wir nur die Distanz von szu einem bestimmten
Knoten t wissen wollen?
Trick 0:
ts
Dijkstra hört auf, wenn t aus Q entfernt wird
Spart “im Durchschnitt” Hälfte der Scans
Frage: Wieviel spart es (meist) beim Europa-Navi?
Sanders: Algorithmen IJuly 8, 2013 382
Ideen für Routenplanung
mehr in Algorithmen II, Algorithm Engineering
� Vorwärts + Rückwärtssuche
ts
� Zielgerichtete Suche
ts
� Hierarchien ausnutzen
s t
� Teilabschnitte tabellieren
s z
Meist zentrale Idee: Vorberechnungamortisiert über viele Anfragen
Sanders: Algorithmen IJuly 8, 2013 386
1. Approach
Transit-Node Routing
[with H. Bast and S. Funke]
s t
Sanders: Algorithmen IJuly 8, 2013 403
Erste Beobachtung
Für langeStrecken:benutzen
nur wenige ‘wichtige’ Zugänge zum Fernverkehrsnetzwerk,
access points
( wir können alle Zugangspunkte vorberechnen
[in Europa: etwa 10 Zugangspunkte pro Knoten im Mittel]
Sanders: Algorithmen IJuly 8, 2013 407
Zweite Beobachtung
Jeder Zugangspunkt ist für mehrere Knoten relevant.
Gesamtmenge aller Zugangspunkte ist klein,
Transitknotenmenge
( wir können alle Abstände zwischen allen Transitknoten speichern)
[in Europa:≈ 10 000 Transitknoten]
Sanders: Algorithmen IJuly 8, 2013 408
Transit-Node Routing
Preprocessing:
� Identifiziere Transitknoten T ⊆V
� Berechne |T |× |T | Abstandstabelle
� Für jeden Knoten: identifiziere Zugangsknoten (Abbildung
A : V→ 2T ),
Speichere Abstände
Query (geg. Start sund Ziel t): berechne
dtop(s, t) := min{d(s,u)+d(u,v)+d(v, t) : u∈ A(s),v∈ A(t)}
Sanders: Algorithmen IJuly 8, 2013 409
Transit-Node Routing
Lokalitätsfilter :
lokale Fälle ausfiltern ( Spezialbehandlung)
L : V×V→{true, false}
¬L(s, t) impliziert d(s, t) = dtop(s, t)
Sanders: Algorithmen IJuly 8, 2013 411
Experimente� sehr schnelle queries
(4 µs, > 1 000 000 mal schneller als DIJKSTRA)
� Gewinner der 9. DIMACS Implementation Challenge
� erträgliche Vorberechnungszeiten (1:15 h) und
Speicherbedarf (247 bytes/Knoten)
s t
Sanders: Algorithmen IJuly 8, 2013 412
Offene Fragen
� Wie bestimmt man die Transitknoten?
� Wie bestimmt man die Zugangsknoten effizient?
� Wie bestimmt man die Lokalitätsfilter?
� Wie handhabt man lokale Anfragen?
Sanders: Algorithmen IJuly 8, 2013 413
Open Questions
� Wie bestimmt man die transit nodes?
� Wie bestimmt man die access points efficiently?
� Wie bestimmt man die locality filter?
� Wie handhabt man lokale Anfragen?
Antwort:
� Andere Routenplanungstechniken benutzen!
5 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Graphentheorie
Adjazenz- und Inzidenzmatrix
6 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
v4 v5
v2 v3
v1
e1 e2
e3
e4 e5e6
e7
A =
0 1 1 0 01 0 1 1 11 1 0 0 10 1 0 0 10 1 1 1 0
H =
1 1 0 0 0 0 01 0 1 1 1 0 00 1 1 0 0 1 00 0 0 1 0 0 10 0 0 0 1 1 1
Adjazenzfelder
7 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
1
2
3
4 5
V
E
Adjazenzfelder
7 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
1
2
3
4 5
V 1 2 4 7 7 9
E 2 3 5 2 4 5 3 4
Graphen als MatrizenSymmetrie
8 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Ungerichteter Graph→ symmetrische Adjazenzmatrix A = AT
1 2
3
4
0 1 0 11 0 1 00 1 0 01 0 0 0
Graphen als MatrizenDAG
9 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
DAGs lassen sich als obere Dreiecksmatrix repräsentieren
3 5
4
1 2
0 0 0 0 00 0 0 0 01 1 0 0 00 0 1 0 11 1 0 0 0
Graphen als MatrizenDAG
9 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
DAGs lassen sich als obere Dreiecksmatrix repräsentieren
2 3
1
4 5
0 1 1 0 00 0 0 1 10 0 0 1 10 0 0 0 00 0 0 0 0
Graphen als MatrizenZusammenhangskomponenten
10 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Pro Zusammenhangskomponente ein Block in der Matrix
3 2
54
6
1 0 0 0 0 0 10 0 0 0 1 00 1 0 0 0 00 0 1 0 0 00 0 0 1 0 01 0 0 0 0 0
Graphen als MatrizenZusammenhangskomponenten
10 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Pro Zusammenhangskomponente ein Block in der Matrix
1 2
34
5
6 0 1 0 0 0 00 0 1 0 0 00 0 0 1 0 01 0 0 0 0 00 0 0 0 0 10 0 0 0 1 0
Unter- oder Teilgraphen
11 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Definition: Ein Graph G′ = (V ′,E ′) ist ein Untergraph oder Teilgraphvon G = (V ,E), geschrieben G′ ⊆ G, wenn V ′ ⊆ V , E ′ ⊆ E und für alle{v1, v2} ∈ E ′ sowohl v1 ∈ V ′ als auch v2 ∈ V ′.
Definition: Ist G = (V ,E) ein Graph und V ′ ⊆ V eine Knotenmenge,dann heißt der Graph G[V ′] := (V ′,E ′) mitE ′ = {{v1, v2} ∈ E | v1, v2 ∈ V ′} der durch V ′ knoten-induzierteTeilgraph von G.
Definition: Ist G = (V ,E) ein Graph und E ′ ⊆ E eine Kantenmenge,dann heißt der Graph G[E ′] := (V ′,E ′) mit V ′ =
⋃{v1,v2}∈E ′
{v1, v2} derdurch E ′ kanten-induzierte Teilgraph von G.
Wege, Kreise und Zusammenhang
12 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Ist G = (V ,E) ein ungerichteter Graph, dannheißt eine Folge (v0,e1, v1,e2, . . . , vn−1,en, vn) mit vi ∈ V und ei ∈ Eeine Kantenfolge, ein Kantenweg oder nur Weg (path), wenn
ei = {vi−1, vi} für i = 1, . . . ,n .
Alternativ, kann man in Graphen ohne Mehrfachkanten eineKantenfolge auch durch die Knotenspur (v0, . . . , vn) beschreiben.heißt eine Kantenfolge ein Kantenpfad oder nur Pfad (simple path),wenn alle besuchten Knoten verschieden sind.heißen zwei Knoten x , y ∈ V verbindbar (connected), wenn eseinen Weg mit x = v0 und y = vn gibt.heißt der Graph G zusammenhängend (connected), wenn jedesPaar (x , y) ∈ V × V verbindbar ist.
Wege, Kreise und Zusammenhang
13 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Ist G = (V ,E) ein ungerichteter Graph, dannheißt ein Kantenfolge (v0,e1, v1,e2, . . . , vn−1,en, vn) ein Kantenkreisoder Kantenzyklus (cycle), wenn v0 = vn,ein Kantenkreis einfach (simple), wenn alle besuchten Knotenaußer v0 und vn verschieden sind, undder Graph G kreisfrei, kreislos oder zykelfrei (cycle free), wenn Gkeinen Kantenkreis enthält.
Eulersche und Hamiltonsche Kreise
14 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Ein Kantenkreis heißt Eulersch,wenn er alle Kanten desGraphen genau einmal enthält.
Ein Kantenkreis heißtHamiltonsch, wenn eralle Knoten des Graphengenau einmal enthält (Beginnund Ende einmal gezählt).
Ein Graph heißt Eulersch/Hamiltonsch, wenn er einenEulerschen/Hamiltonschen Kreis enthält.
Eulersche und Hamiltonsche Kreise
14 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Ein Kantenkreis heißt Eulersch,wenn er alle Kanten desGraphen genau einmal enthält.
Ein Kantenkreis heißtHamiltonsch, wenn eralle Knoten des Graphengenau einmal enthält (Beginnund Ende einmal gezählt).
Ein Graph heißt Eulersch/Hamiltonsch, wenn er einenEulerschen/Hamiltonschen Kreis enthält.
Satz von Euler (Graphen)
15 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Satz: Ein Graph G = (V ,E) mit E 6= ∅ ist genau dann Eulersch, wennG zusammenhängend ist und alle Knoten geraden Knotengrad haben.
Satz von Euler (Graphen)
15 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Satz: Ein Graph G = (V ,E) mit E 6= ∅ ist genau dann Eulersch, wennG zusammenhängend ist und alle Knoten geraden Knotengrad haben.
Beweis: „=⇒“Klar, denn G muss zusammenhängend sein und beim Passieren einesKnoten wird dieser durch eine Kante betreten und durch eine andereverlassen.Da jede Kante genau einmal verwendet wird, muss der Knotengrad allerKnoten gerade sein.
Satz von Euler (Graphen)
15 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Satz: Ein Graph G = (V ,E) mit E 6= ∅ ist genau dann Eulersch, wennG zusammenhängend ist und alle Knoten geraden Knotengrad haben.
Beweis: „⇐=“Angenommen der Graph hat diese Eigenschaften, so betrachtet maneine Kantenpfad P = (v0,e1, v1,e2, . . . , vr−1,er , vr ) maximaler Länge, indem also keine Kante zweimal vorkommt.
Behauptung 1: v0 = vr .
Satz von Euler (Graphen)
15 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Satz: Ein Graph G = (V ,E) mit E 6= ∅ ist genau dann Eulersch, wennG zusammenhängend ist und alle Knoten geraden Knotengrad haben.
Beweis: „⇐=“Angenommen der Graph hat diese Eigenschaften, so betrachtet maneine Kantenpfad P = (v0,e1, v1,e2, . . . , vr−1,er , vr ) maximaler Länge, indem also keine Kante zweimal vorkommt.
Behauptung 1: v0 = vr .
Wäre v0 6= vr , dann ist v0 zu einer ungeraden Anzahl Kanten in Pinzident.Da v0 aber geraden Knotengrad hat, gibt es eine inzidente Kantee /∈ P.Der Pfad P kann mit e verlängert werden, ist also nicht maximal!Widerspruch =⇒ v0 = vr , also ist P ein Kreis.
Satz von Euler (Graphen)
15 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Satz: Ein Graph G = (V ,E) mit E 6= ∅ ist genau dann Eulersch, wennG zusammenhängend ist und alle Knoten geraden Knotengrad haben.
Beweis: „⇐=“Angenommen der Graph hat diese Eigenschaften, so betrachtet maneine Kantenkreis C = (v0,e1, v1,e2, . . . , vr−1,er , v0) maximaler Länge,in dem also keine Kante zweimal vorkommt.
Behauptung 2: E(C) := {ei | i = 1, . . . , r} = E .
Satz von Euler (Graphen)
15 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Satz: Ein Graph G = (V ,E) mit E 6= ∅ ist genau dann Eulersch, wennG zusammenhängend ist und alle Knoten geraden Knotengrad haben.
Beweis: „⇐=“Angenommen der Graph hat diese Eigenschaften, so betrachtet maneine Kantenkreis C = (v0,e1, v1,e2, . . . , vr−1,er , v0) maximaler Länge,in dem also keine Kante zweimal vorkommt.
Behauptung 2: E(C) := {ei | i = 1, . . . , r} = E .
Angenommen E(C) 6= E , so betrachten wir G′ := (V ,E \ E(C)).Da G zusammenhängt, muss G′ und C einen gemeinsamen Knotenw mit degG′(w) > 0 haben.
Satz von Euler (Graphen)
15 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Satz: Ein Graph G = (V ,E) mit E 6= ∅ ist genau dann Eulersch, wennG zusammenhängend ist und alle Knoten geraden Knotengrad haben.
Beweis: „⇐=“Angenommen der Graph hat diese Eigenschaften, so betrachtet maneine Kantenkreis C = (v0,e1, v1,e2, . . . , vr−1,er , v0) maximaler Länge,in dem also keine Kante zweimal vorkommt.
Behauptung 2: E(C) := {ei | i = 1, . . . , r} = E .
Angenommen E(C) 6= E , so betrachten wir G′ := (V ,E \ E(C)).Da G zusammenhängt, muss G′ und C einen gemeinsamen Knotenw mit degG′(w) > 0 haben.Alle Knoten in G′ haben geraden Knotengrad, also kann man in G′einen Kreis C′ finden, der durch w geht.
Satz von Euler (Graphen)
15 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Satz: Ein Graph G = (V ,E) mit E 6= ∅ ist genau dann Eulersch, wennG zusammenhängend ist und alle Knoten geraden Knotengrad haben.
Beweis: „⇐=“Angenommen der Graph hat diese Eigenschaften, so betrachtet maneine Kantenkreis C = (v0,e1, v1,e2, . . . , vr−1,er , v0) maximaler Länge,in dem also keine Kante zweimal vorkommt.
Behauptung 2: E(C) := {ei | i = 1, . . . , r} = E .
Angenommen E(C) 6= E , so betrachten wir G′ := (V ,E \ E(C)).Da G zusammenhängt, muss G′ und C einen gemeinsamen Knotenw mit degG′(w) > 0 haben.Alle Knoten in G′ haben geraden Knotengrad, also kann man in G′einen Kreis C′ finden, der durch w geht.C kann an Knoten w mit C′ verlängert werden. Widerspruch zurMaximalität =⇒ E(C) = E .
Algorithmus: Eulersche Kreise
16 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Idee: Erweitere einen Kantenpfad solange, bis er Eulersch wird.Überprüfe, ob jeder Knoten geraden Grad hat.Wähle v0 ∈ V beliebig, setze P := (v0).Sei P = (v0,e1, v1, . . . ,ei , vi) der bisher konstruierte Pfad undG′ = (V ,E \ E(P)) der Restgraph.
Ist E = E(P) so ist P ein gesuchter Eulerscher Kreis. Fertig.Sonst wähle eine zum Knoten vi inzident Kante ei+1 ∈ E \ E(P),wobei Kanten bevorzugt werden, die keine Brücken sind.Eine Kante ist keine Brücke, wenn G′ und(V ,E \ {e1, . . . ,ei ,ei+1}) gleich viele Komponenten haben.Verlängere P mit der Kante ei+1 und wiederhole diesen Schnitt.
17 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Bäume
Warum Bäume?
18 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
C C C C C C C C
H H H H H H H H
H
HHHHHHHH
H
Oktan
C
C
C C
C
C
C
C
HH H
H H H
H
HH
H H HHHH
H
H
H
ein Isooktan
C
C
C
C
CC C C
H
H H
H
H H H
H
H
H
H
H
HH H
H H H
ein anderes Isooktan
Charakterisierung von Bäumen
19 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Definition: Ein ungerichteter Graph heißt Baum, wenn es von jedemKnoten zu jedem anderen Knoten genau einen Kantenpfad gibt.
Satz: Für einen ungerichteten Graphen G = (V ,E) sind äquivalent:1 G ist ein Baum.2 G ist zusammenhängend und |E | = |V | − 1.3 G ist zusammenhängend und kreislos.4 G ist kreislos und |E | = |V | − 1.5 G ist maximal kreislos: G ist kreislos und jede zusätzliche Kante
zwischen nicht-adjazenten Knoten ergibt einen Kreis.6 G ist minimal zusammenhängend: G ist zusammenhängend und
bei Entfernen einer beliebige Kante zerfällt G.
Sätze zu Bäumen
20 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Lemma: Jeder Baum mit mindestens zwei Konten hat mindestens zweiRandknoten, die man auf Blätter nennt.
Lemma: Löscht man von einem Baum mit n ≥ 2 Knoten ein Blatt, soentsteht ein Baum mit n − 1 Knoten.
Aufspannende Bäumen
21 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Definition: Ist G ein Graph und T ⊆ G ein Untergraph, der alle Knotenvon G enthält und selbst ein Baum ist, dann heißt T ein den Graph Gaufspannender Baum.
Satz: Sei G ein zusammenhängender Graph. Sind T1 und T2 zwei Gaufspannende Bäume und ist e ∈ T1 \ T2, dann gibt es eine Kantef ∈ T2 \ T1, so dass sowohl T1 − e + f als auch T2 − f + e zwei Gaufspannende Bäume sind.
Satz von Cayley
22 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Ist G = (V ,E) ein zusammenhängender ungerichteter Graph, dannheißt ein Untergraph (V ,E ′) mit E ′ ⊆ E ein G aufspannender Baum,wenn dieser ein Baum ist.
Satz von CayleyIm vollständigen Graph Kn gibt es genau nn−2 verschiedene Knaufspannende Bäume.
Beispiel: K4 hat folgende 16 aufspannende Bäume:
23 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
GraphpartitionierungEin kleiner Einblick
GraphpartitionierungWas ist Graphpartitionierung?
24 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Geben G und k > 1, teile V in k Blöcke V1,V2, ...Vk so dass:1 alle Mengen disjunkt, und die Vereinigung gerade V ist2 alle Mengen ungefähr gleich groß3 Anzahl der Kanten wird minimiert
Anwendungen
25 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Rn×n 3 Ax = b ∈ Rn
Notation
26 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
ungerichter Graph G = (V ,E , c, ω), n = |V |,m = |E |Knotengewichte c : V → R>0, Kantengewichte ω : E → R≥0
Erweiterung auf Mengen1 c(V ′) :=
∑v∈V ′ c(v)
2 ω(E ′) :=∑
e∈E′ ω(e)
Schnittkanten Eij := {{u, v} ∈ E : u ∈ Vi , v ∈ Vj}
Notation
26 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
ungerichter Graph G = (V ,E , c, ω), n = |V |,m = |E |Knotengewichte c : V → R>0, Kantengewichte ω : E → R≥0
Erweiterung auf Mengen1 c(V ′) :=
∑v∈V ′ c(v)
2 ω(E ′) :=∑
e∈E′ ω(e)
Schnittkanten Eij := {{u, v} ∈ E : u ∈ Vi , v ∈ Vj}
Notation
26 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
ungerichter Graph G = (V ,E , c, ω), n = |V |,m = |E |Knotengewichte c : V → R>0, Kantengewichte ω : E → R≥0
Erweiterung auf Mengen1 c(V ′) :=
∑v∈V ′ c(v), c(Grün) = 11
2 ω(E ′) :=∑
e∈E′ ω(e)
Schnittkanten Eij := {{u, v} ∈ E : u ∈ Vi , v ∈ Vj}
Notation
26 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
ungerichter Graph G = (V ,E , c, ω), n = |V |,m = |E |Knotengewichte c : V → R>0, Kantengewichte ω : E → R≥0
Erweiterung auf Mengen1 c(V ′) :=
∑v∈V ′ c(v)
2 ω(E ′) :=∑
e∈E′ ω(e)
Schnittkanten Eij := {{u, v} ∈ E : u ∈ Vi , v ∈ Vj}
Notation
26 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
ungerichter Graph G = (V ,E , c, ω), n = |V |,m = |E |Knotengewichte c : V → R>0, Kantengewichte ω : E → R≥0
Erweiterung auf Mengen1 c(V ′) :=
∑v∈V ′ c(v)
2 ω(E ′) :=∑
e∈E′ ω(e), ω(Eij) = 5
Schnittkanten Eij := {{u, v} ∈ E : u ∈ Vi , v ∈ Vj}
GraphpartitionierungFormaler
27 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Geg.: Graph G = (V ,E , c, ω)c : V → R>0ω : E → R≥0k ∈ N, ε ∈ R>0.
Ges.: Blöcke V1, ...,Vk ⊆ V , V =⋃
i Vi und Vi ∩ Vj = ∅ (i 6= j)Balancebedingung: c(Vi) ≤ (1 + ε) c(V )
k + maxv c(v) ∀iKantenschnitt =
∑i<j ω(Eij) minimal
Notation
28 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
ungerichter Graph G = (V ,E , c, ω), n = |V |,m = |E |Knotengewichte c : V → R>0, Kantengewichte ω : E → R≥0
c :≡ 1, ω :≡ 1, Kantenschnitt = 17Balancebedingung?
Notation
28 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
ungerichter Graph G = (V ,E , c, ω), n = |V |,m = |E |Knotengewichte c : V → R>0, Kantengewichte ω : E → R≥0
c :≡ 1, ω :≡ 1, Kantenschnitt = 17Balancebedingung? ε = 0.25: 7, 8, 10, 8 ≤ (1+ε)
k c(V ) = 10.31
BeispielFinite Element Methode
29 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Multilevelframework
30 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
input graph
match
... ...local improvement
uncontractcontract
outputpartition
part.
initial
Multilevelframework
30 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
match
... ...local improvement
uncontractcontract
outputpartition
input graph
partitioning
initial
Breitensuchen!
AbstraktionBreitensuchen
31 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Initial Partitioning
32 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Rekursive Bipartitionierung, z.B. mit BFSfinde Knoten die weit entfernt sind
1 wähle zufälligen Startknoten, iteriere Breitensuchen2 bis Konvergenz
wechselseitige Breitensuchen mit Zuweisung zu Blöcken
BubblingBesser
33 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
1: procedure bubbling(Graph G, k ∈ N)2: centers[1..k] : Array of Vertices3: centers = initializeCenters(G, k)4: do5: growRegions(G, centers)6: findNewCenters(G)7: while( !stop-condition )8: return
BubblingBeispiel / Init Centers
34 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
BubblingBeispiel / Grow Regions
35 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
BubblingBeispiel / Grow Regions
35 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
BubblingBeispiel / Grow Regions
35 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
BubblingBeispiel / Grow Regions
35 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
BubblingBeispiel / Grow Regions
35 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
BubblingBeispiel / Grow Regions
35 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
BubblingBeispiel / Grow Regions
35 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
BubblingBeispiel / Grow Regions
35 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
BubblingBeispiel / Grow Regions
35 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Multilevelframework
36 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
input graph
...
initial
...
outputpartition
local improvement
partitioning
match
contract uncontract
später
Lokale OptimierungFiducia and Mattheyses - Anwendung von Heaps
37 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Berechne Verbessung füralle v ∈ V
Verbesserungg(v) = dext(v)− dint(v)speichere Verbesserungenin zwei Heaps
Lokale OptimierungFiducia and Mattheyses - Anwendung von Heaps
37 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Berechne Verbessung füralle v ∈ VVerbesserungg(v) = dext(v)− dint(v)
speichere Verbesserungenin zwei Heaps
Lokale OptimierungFiducia and Mattheyses - Anwendung von Heaps
37 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
Berechne Verbessung füralle v ∈ VVerbesserungg(v) = dext(v)− dint(v)speichere Verbesserungenin zwei Heaps
Lokale OptimierungFiducia and Mattheyses - Anwendung von Heaps
37 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
bewege immer die Knotendie größte Verbesserungliefernjeder Knoten darf nur einmal bewegt werdenVerbessungswerte derNachbarn müssenaktualisiert werden
Schritt: 0Kantenschnitt: 5
Lokale OptimierungFiducia and Mattheyses - Anwendung von Heaps
37 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
bewege immer die Knotendie größte Verbesserungliefernjeder Knoten darf nur einmal bewegt werdenVerbessungswerte derNachbarn müssenaktualisiert werden
Schritt: 0 1Kantenschnitt: 5 4
Lokale OptimierungFiducia and Mattheyses - Anwendung von Heaps
37 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
bewege immer die Knotendie größte Verbesserungliefernjeder Knoten darf nur einmal bewegt werdenVerbessungswerte derNachbarn müssenaktualisiert werden
Schritt: 0 1 2Kantenschnitt: 5 4 6
Lokale OptimierungFiducia and Mattheyses - Anwendung von Heaps
37 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
bewege immer die Knotendie größte Verbesserungliefernjeder Knoten darf nur einmal bewegt werdenVerbessungswerte derNachbarn müssenaktualisiert werden
Schritt: 0 1 2 3Kantenschnitt: 5 4 6 8
Lokale OptimierungFiducia and Mattheyses - Anwendung von Heaps
37 Julian Arz, Timo Bingmann, Sebastian Schlag10. Übung – Algorithmen I
Fakultät für InformatikInstitut für Theoretische Informatik
stop nachdem bestimmteAnzahl Knoten besuchtwurdenimm besten Kantenschnitt,der Balancebedingung
Schritt: 0 1 2 3Kantenschnitt: 5 4 6 8