8. Übung – Algorithmen I - Timo Bingmann, Christian Schulz

Werbung
8. Übung – Algorithmen I
Timo Bingmann, Christian Schulz
I NSTITUT
FÜR
T HEORETISCHE I NFORMATIK , P ROF. S ANDERS
C. Schulz
1 KITT.–Bingmann,
Universität des Landes
Baden-Württemberg und
nationales
Forschungszentrum
in der Helmholtz-Gemeinschaft
8. Übung
– Algorithmen
I
Fakultät für Informatik
www.kit.edu
Institut für Theoretische
Informatik
Graphen
Rn×n 3 Ax = b ∈ Rn
2 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Warmup
Wiederholung Graph Datenstrukturen
3 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Terminologie
Graphen
adjazent
Zwei Knoten sind adjazent, wenn sie durch eine gemeinsame Kante
verbunden sind.
inzident
Einen Knoten und eine Kante sind inzident, wenn der Knoten ein
Endpunkt der Kante ist.
1
2
3
4 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Adjazenzfelder
2
3
1
4
5
V
E
5 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Adjazenzfelder
2
3
1
5
4
V
1
2
4
7
7
9
E
2
3
5
2
4
5
5 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
3
4
Fakultät für Informatik
Institut für Theoretische Informatik
Adjazenzfelder
Abstraktion in der Praxis
6 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Adjazenzfelder
Abstraktion in der Praxis
6 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Adjazenzfelder
Abstraktion in der Praxis
6 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Graphen als Matrizen
Symmetrie
Ungerichteter Graph → symmetrische Adjazenzmatrix A = AT
3
1
2
0
1
0
1
1
0
1
0
0
1
0
0
1
0
0
0
4
7 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Graphen als Matrizen
DAG
DAGs lassen sich als obere Dreiecksmatrix repräsentieren
4
5
3
1
8 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
2
0
0
1
0
1
0
0
1
0
1
0
0
0
1
0
0
0
0
0
0
0
0
0
1
0
Fakultät für Informatik
Institut für Theoretische Informatik
Graphen als Matrizen
DAG
DAGs lassen sich als obere Dreiecksmatrix repräsentieren
1
3
2
4
8 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
5
0
0
0
0
0
1
0
0
0
0
1
0
0
0
0
0
1
1
0
0
0
1
1
0
0
Fakultät für Informatik
Institut für Theoretische Informatik
Graphen als Matrizen
Zusammenhangskomponenten
Pro Zusammenhangskomponente ein Block in der Matrix
4
5
1
3
2
6
9 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
0
0
0
0
0
1
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
1
0
0
0
0
1
0
0
0
0
0
Fakultät für Informatik
Institut für Theoretische Informatik
Graphen als Matrizen
Zusammenhangskomponenten
Pro Zusammenhangskomponente ein Block in der Matrix
4
3
6
1
2
5
9 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
0
0
0
1
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
1
0
Fakultät für Informatik
Institut für Theoretische Informatik
Graphen als Matrizen
Potenzierung
Was resultiert aus Potenzierung der Adjazenzmatrix?
wie sind überhaupt · und + definiert auf {0, 1}?
z. B. · wie üblich (also Logisches Und), + als max
was bedeutet aij = 1? Weg von i nach j (in einem Schritt).
⇒ M = A2 , mij = max` (mi ` · m`j ): ∃ Weg von i nach j über `?
mittels Induktion: (Ak )ij = 1 ⇐⇒ ∃ Weg von i nach j in k Schritten
3
1
2
0
1
0
1
1
0
1
0
0
1
0
0
1
0
0
0
4
10 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Analyse von Graphen
11 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Teilgraphen
Graph G = (V , E ). G0 = (V 0 , E 0 ) Teilgraph von G :⇔
V 0 ⊆ V und E 0 ⊆ E.
4
5
3
5
3
6
2
6
2
1
1
ist Teilgraph von
12 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Teilgraphen
Graph G = (V , E ). G0 = (V 0 , E 0 ) Teilgraph von G :⇔
V 0 ⊆ V und E 0 ⊆ E.
4
5
3
5
3
6
2
6
2
1
1
ist kein Teilgraph von
12 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Knoteninduziertere Teilgraphen
Graph G = (V , E ). G0 = (V 0 , E 0 ) knoteninduzierter Teilgraph von G :⇔
V 0 ⊆ V und E 0 = {(v , w ) ∈ E | v , w ∈ V 0 }.
4
5
3
5
3
6
2
6
2
1
1
ist knoteninduzierter Teilgraph von
13 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Knoteninduziertere Teilgraphen
Graph G = (V , E ). G0 = (V 0 , E 0 ) knoteninduzierter Teilgraph von G :⇔
V 0 ⊆ V und E 0 = {(v , w ) ∈ E | v , w ∈ V 0 }.
4
5
3
5
3
6
2
6
2
1
1
ist kein knoteninduzierter Teilgraph von
13 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
K -core
Der größte knoteninduzierte Teilgraph G0 = (V 0 , E 0 ) von G mit
∀v ∈ V 0 : Grad(v ) ≥ K ist der K -core von G.
4
4
5
3
5
3
6
2
6
2
1
1
ist 2-core von
14 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
K -core
Der größte knoteninduzierte Teilgraph G0 = (V 0 , E 0 ) von G mit
∀v ∈ V 0 : Grad(v ) ≥ K ist der K -core von G.
4
5
3
5
3
6
2
6
2
1
ist 3-core von
14 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
K -core
Der größte knoteninduzierte Teilgraph G0 = (V 0 , E 0 ) von G mit
∀v ∈ V 0 : Grad(v ) ≥ K ist der K -core von G.
4
5
3
6
2
1
ist 4-core von
14 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
K -core
Core Decomposition
15 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Berechnung des K -cores
Procedure core(G = (V , E ), K : N)
G0 = (V 0 , E 0 ) := G
while (∃v ∈ V 0 with GradG0 (v ) < K )
Remove v from V 0 and all its incident edges from E 0
return G0
Frage: Laufzeit für diesen Algorithmus?
a) O(n + m)
b) O(n log n + m)
c) O n2 + m
16 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Berechnung des K -cores
Procedure core(G = (V [1..n + 1], E [1..m]), K : N) // Adjazenzfeld
Q : FIFO
d : Array[1..n] of N
for (v := 1; v ≤ n; + + v )
d [v ] := V [v + 1] − V [v ]
if (d [v ] < K ) Q.pushBack(v )
while (!Q.empty())
v := Q.popFront()
for (e := V [v ]; e < V [v + 1]; + + e)
w := E [e]
d [w ] − −
if (d [w ] = K − 1) Q.pushBack(w)
return subgraph induced by the nodes v with d [v ] ≥ K
17 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Berechnung des K -cores
Procedure core(G = (V [1..n + 1], E [1..m]), K : N) // Adjazenzfeld
Q : FIFO
d : Array[1..n] of N
for (v := 1; v ≤ n; + + v )
d [v ] := V [v + 1] − V [v ]
if (d [v ] < K ) Q.pushBack(v )
while (!Q.empty())
v := Q.popFront()
for (e := V [v ]; e < V [v + 1]; + + e)
w := E [e]
d [w ] − −
if (d [w ] = K − 1) Q.pushBack(w)
return subgraph induced by the nodes v with d [v ] ≥ K
Laufzeit: O(n + m)
17 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Durchmesser ungerichteter Graphen
18 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Durchmesser ungerichteter Graphen
Intuitiv: Größter Abstand zweier Knoten im Graph.
Frage: Was ist der Abstand zweier Knoten im Graph?
Antwort: Länge des kürzesten Pfades zwischen zwei Knoten.
Frage: Was ist die Länge eines Pfades?
Antwort: Die Anzahl Kanten des Pfades.
H
G
B
F
A
D
E
C
I
19 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Durchmesser ungerichteter Graphen
Intuitiv: Größter Abstand zweier Knoten im Graph.
Frage: Was ist der Abstand zweier Knoten im Graph?
Antwort: Länge des kürzesten Pfades zwischen zwei Knoten.
Frage: Was ist die Länge eines Pfades?
Antwort: Die Anzahl Kanten des Pfades.
H
G
B
F
A
D
E
C
Ein Pfad von C nach G, Länge = 4
19 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
I
Fakultät für Informatik
Institut für Theoretische Informatik
Durchmesser ungerichteter Graphen
Intuitiv: Größter Abstand zweier Knoten im Graph.
Frage: Was ist der Abstand zweier Knoten im Graph?
Antwort: Länge des kürzesten Pfades zwischen zwei Knoten.
Frage: Was ist die Länge eines Pfades?
Antwort: Die Anzahl Kanten des Pfades.
H
G
B
F
A
D
E
C
Kürzester Pfad von C nach G, Länge = 3
19 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
I
Fakultät für Informatik
Institut für Theoretische Informatik
Durchmesser ungerichteter Graphen
Intuitiv: Größter Abstand zweier Knoten im Graph.
Frage: Was ist der Abstand zweier Knoten im Graph?
Antwort: Länge des kürzesten Pfades zwischen zwei Knoten.
Frage: Was ist die Länge eines Pfades?
Antwort: Die Anzahl Kanten des Pfades.
H
G
B
F
A
D
E
C
Abstand von C und G, Länge = 3
19 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
I
Fakultät für Informatik
Institut für Theoretische Informatik
Durchmesser ungerichteter Graphen
Intuitiv: Größter Abstand zweier Knoten im Graph.
Frage: Was ist der Abstand zweier Knoten im Graph?
Antwort: Länge des kürzesten Pfades zwischen zwei Knoten.
Frage: Was ist die Länge eines Pfades?
Antwort: Die Anzahl Kanten des Pfades.
H
G
B
F
A
D
E
C
Kürzester Pfad von I nach H, Länge = 4
19 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
I
Fakultät für Informatik
Institut für Theoretische Informatik
Durchmesser ungerichteter Graphen
Intuitiv: Größter Abstand zweier Knoten im Graph.
Frage: Was ist der Abstand zweier Knoten im Graph?
Antwort: Länge des kürzesten Pfades zwischen zwei Knoten.
Frage: Was ist die Länge eines Pfades?
Antwort: Die Anzahl Kanten des Pfades.
H
G
B
F
A
D
E
C
Kürzester Pfad von I nach H, Länge = 4
⇒ Abstand von I und H = 4
19 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
I
Fakultät für Informatik
Institut für Theoretische Informatik
Durchmesser ungerichteter Graphen
Intuitiv: Größter Abstand zweier Knoten im Graph.
Frage: Was ist der Abstand zweier Knoten im Graph?
Antwort: Länge des kürzesten Pfades zwischen zwei Knoten.
Frage: Was ist die Länge eines Pfades?
Antwort: Die Anzahl Kanten des Pfades.
H
G
B
F
A
D
E
C
Kürzester Weg von I nach H, Länge = 4
⇒ Abstand von I und H = 4
Größter Abstand ⇒ Durchmesser = 4
19 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
I
Fakultät für Informatik
Institut für Theoretische Informatik
Durchmesser ungerichteter Graphen
Algorithmus
Idee:
1: D = 0 : N≥0
2: for each u ∈ V do
3:
Berechne kürzeste Pfade von u zu allen v ∈ V \{u }
4:
D := max{D , größte gefundene Pfadlänge}
5: return D
Laufzeit: O(n · Laufzeit Zeile 3)
Erinnerung:
Anzahl Knoten: n
Anzahl Kanten: m
20 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Durchmesser ungerichteter Graphen
Mathematische Definition
Durchmesser := max
u ,v ∈V
min |P |
P ∈P(u ,v )
mit
P(u , v ) ist Menge aller Pfade zwischen u und v
|P | ist Anzahl der Kanten eines Pfades P
21 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Wiederholung Breitensuche
Beispiel
FIFO 1
22 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Wiederholung Breitensuche
Beispiel
FIFO 2
22 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Wiederholung Breitensuche
Beispiel
FIFO 2
22 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
3
Fakultät für Informatik
Institut für Theoretische Informatik
Wiederholung Breitensuche
Beispiel
FIFO 2
22 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
3
4
Fakultät für Informatik
Institut für Theoretische Informatik
Wiederholung Breitensuche
Beispiel
FIFO 2
22 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
3
4
5
Fakultät für Informatik
Institut für Theoretische Informatik
Wiederholung Breitensuche
Beispiel
FIFO 2
22 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
3
4
5
6
Fakultät für Informatik
Institut für Theoretische Informatik
Wiederholung Breitensuche
Beispiel
FIFO 3
22 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
4
5
6
7
Fakultät für Informatik
Institut für Theoretische Informatik
Wiederholung Breitensuche
Beispiel
FIFO 4
22 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
5
6
7
8
Fakultät für Informatik
Institut für Theoretische Informatik
Wiederholung Breitensuche
Beispiel
FIFO 5
22 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
6
7
8
9
Fakultät für Informatik
Institut für Theoretische Informatik
Wiederholung Breitensuche
Beispiel
FIFO 6
22 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
7
8
9
Fakultät für Informatik
Institut für Theoretische Informatik
Wiederholung Breitensuche
Beispiel
FIFO 7
22 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
8
9
Fakultät für Informatik
Institut für Theoretische Informatik
Wiederholung Breitensuche
Beispiel
FIFO 10
22 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
11
12
13
14
Fakultät für Informatik
Institut für Theoretische Informatik
Wiederholung Breitensuche
Beispiel
FIFO 18
22 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
19
23
16
17
15
Fakultät für Informatik
Institut für Theoretische Informatik
Wiederholung Breitensuche
Beispiel
FIFO 20
22 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
21
22
25
24
33
26
Fakultät für Informatik
Institut für Theoretische Informatik
Wiederholung Breitensuche
Beispiel
FIFO 30
22 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
31
27
29
Fakultät für Informatik
Institut für Theoretische Informatik
Wiederholung Breitensuche
Beispiel
FIFO 32
22 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
28
Fakultät für Informatik
Institut für Theoretische Informatik
Wiederholung Breitensuche
Beispiel
FIFO ∅
22 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Durchmesser ungerichteter Graphen
Teilalgorithmus: Alle kürzesten Pfade von u nach v ∈ V \{u }
Breitensuche plus Nachbearbeitung:
1:
2:
3:
4:
function maxAbstand(u: NodeID): Abstand
(⊥, d ) := bfs(u )
result := maxv ∈V \{u } d [v ]
return result
23 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Durchmesser ungerichteter Graphen
Teilalgorithmus: Alle kürzesten Pfade von u nach v ∈ V \{u }
Breitensuche plus Nachbearbeitung:
1:
2:
3:
4:
function maxAbstand(u: NodeID): Abstand
(⊥, d ) := bfs(u )
result := maxv ∈V \{u } d [v ]
return result
Laufzeit: Was glauben Sie?
24 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Durchmesser ungerichteter Graphen
Teilalgorithmus: Alle kürzesten Pfade von u nach v ∈ V \{u }
Breitensuche plus Nachbearbeitung:
1:
2:
3:
4:
function maxAbstand(u: NodeID): Abstand
(⊥, d ) := bfs(u )
result := maxv ∈V \{u } d [v ]
return result
Laufzeit:
BFS braucht O(m)
Maximum berechenen braucht O(n)
⇒ Gesamt O(n + m), falls zusammenhängend = O(m), da n ≤ m
24 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Durchmesser ungerichteter Graphen
Algorithmus
Fertiger Algorithmus:
1: D = 0 : N≥0
2: for each u ∈ V do
3:
D := max{D , maxAbstand (u )}
4: return D
Laufzeit: O(n · Laufzeit Zeile 3) = O(nm), für zusammenh. Graphen
25 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Durchmesser ungerichteter Graphen
Algorithmus
Fertiger Algorithmus:
1: D = 0 : N≥0
2: for each u ∈ V do
3:
D := max{D , maxAbstand (u )}
4: return D
Laufzeit: O(n · Laufzeit Zeile 3) = O(nm), für zusammenh. Graphen
Durchmesser von Facebook 41
25 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Breitensuchen
zur Graphpartitionierung
26 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Graphpartitionierung
Was ist Graphpartitionierung?
Geben G und k > 1, teile V in k Blöcke V1 , V2 , ...Vk so dass:
1
2
3
alle Mengen disjunkt, und die Vereinigung gerade V ist
alle Mengen ungefähr gleich groß
Anzahl der Kanten wird minimiert
27 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Notation
ungerichter Graph G = (V , E , c , ω), n = |V |, m = |E |
Knotengewichte c : V → R>0 , Kantengewichte ω : E → R≥0
Erweiterung auf Mengen
1
2
P
c (V 0 ) := v ∈V 0 c (v )
P
ω(E 0 ) := e∈E 0 ω(e)
Schnittkanten Eij := {{u , v } ∈ E : u ∈ Vi , v ∈ Vj }
28 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Notation
ungerichter Graph G = (V , E , c , ω), n = |V |, m = |E |
Knotengewichte c : V → R>0 , Kantengewichte ω : E → R≥0
Erweiterung auf Mengen
1
2
P
c (V 0 ) := v ∈V 0 c (v )
P
ω(E 0 ) := e∈E 0 ω(e)
Schnittkanten Eij := {{u , v } ∈ E : u ∈ Vi , v ∈ Vj }
28 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Notation
ungerichter Graph G = (V , E , c , ω), n = |V |, m = |E |
Knotengewichte c : V → R>0 , Kantengewichte ω : E → R≥0
Erweiterung auf Mengen
1
2
P
c (V 0 ) := v ∈V 0 c (v ), c (Grün) = 11
P
ω(E 0 ) := e∈E 0 ω(e)
Schnittkanten Eij := {{u , v } ∈ E : u ∈ Vi , v ∈ Vj }
28 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Notation
ungerichter Graph G = (V , E , c , ω), n = |V |, m = |E |
Knotengewichte c : V → R>0 , Kantengewichte ω : E → R≥0
Erweiterung auf Mengen
1
2
P
c (V 0 ) := v ∈V 0 c (v )
P
ω(E 0 ) := e∈E 0 ω(e)
Schnittkanten Eij := {{u , v } ∈ E : u ∈ Vi , v ∈ Vj }
28 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Notation
ungerichter Graph G = (V , E , c , ω), n = |V |, m = |E |
Knotengewichte c : V → R>0 , Kantengewichte ω : E → R≥0
Erweiterung auf Mengen
1
2
P
c (V 0 ) := v ∈V 0 c (v )
P
ω(E 0 ) := e∈E 0 ω(e), ω(Eij ) = 5
Schnittkanten Eij := {{u , v } ∈ E : u ∈ Vi , v ∈ Vj }
28 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Graphpartitionierung
Formaler
Geg.:
Ges.:
Graph G = (V , E , c , ω)
c : V → R>0
ω : E → R≥0
k ∈ N, ∈ R>0 .
S
Blöcke V1 , ..., Vk ⊆ V , V = i Vi und Vi ∩ Vj = ∅ (i 6= j )
c (V )
Balancebedingung:
P c (Vi ) ≤ (1 + ) k + maxv c (v ) ∀i
Kantenschnitt = i <j ω(Eij ) minimal
29 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Notation
ungerichter Graph G = (V , E , c , ω), n = |V |, m = |E |
Knotengewichte c : V → R>0 , Kantengewichte ω : E → R≥0
c :≡ 1, ω :≡ 1, Kantenschnitt = 17
Balancebedingung?
30 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Notation
ungerichter Graph G = (V , E , c , ω), n = |V |, m = |E |
Knotengewichte c : V → R>0 , Kantengewichte ω : E → R≥0
c :≡ 1, ω :≡ 1, Kantenschnitt = 17
Balancebedingung? = 0.25: 7, 8, 10, 8 ≤ (1+)
k c (V ) = 10.31
30 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Notation
ungerichter Graph G = (V , E , c , ω), n = |V |, m = |E |
Knotengewichte c : V → R>0 , Kantengewichte ω : E → R≥0
c :≡ 1, ω :≡ 1, Kantenschnitt = 17
Optimal?
30 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Beispiel
Finite Element Methode
31 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Beispiel
Finite Element Methode
32 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Multilevelframework
input
graph
output
partition
...
local improvement
...
match
contract
initial
uncontract
part.
33 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Multilevelframework
input
graph
output
partition
...
local improvement
...
match
contract
uncontract
initial
partitioning
Breitensuchen!
33 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Abstraktion
Breitensuchen
34 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Initial Partitioning
Rekursive Bipartitionierung, z.B. mit BFS
finde Knoten die weit entfernt sind
1
2
wähle zufälligen Startknoten, iteriere Breitensuchen
bis Konvergenz
wechselseitige Breitensuchen mit Zuweisung zu Blöcken
35 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Bubbling
Besser
1: procedure bubbling(Graph G, k ∈ N)
2: centers[1..k] : Array of Vertices
3: centers = initializeCenters(G, k)
4:
do
5:
growRegions(G, centers)
6:
findNewCenters(G)
7:
while( !stop-condition )
8: return
36 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Bubbling
initializeCenters
37 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Bubbling
growRegions
38 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Bubbling
findNewCenters
39 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Bubbling
Beispiel / Init Centers
40 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Bubbling
Beispiel / Grow Regions
41 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Bubbling
Beispiel / Grow Regions
41 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Bubbling
Beispiel / Grow Regions
41 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Bubbling
Beispiel / Grow Regions
41 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Bubbling
Beispiel / Grow Regions
41 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Bubbling
Beispiel / Grow Regions
41 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Bubbling
Beispiel / Grow Regions
41 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Bubbling
Beispiel / Grow Regions
41 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Bubbling
Beispiel / Grow Regions
41 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Multilevelframework
input
graph
output
partition
...
local improvement
...
match
contract
initial
uncontract
partitioning
später
42 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Anwendung
Parallelisierung Gesamtschrittverfahren
A positiv definit, symmetrisch, dünn besetzt
Gesucht x ∈ Rn mit:
Rn×n 3 Ax = b ∈ Rn
n groß! ⇒ Parallelverarbeitung, z.B. iterative Löser
43 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Anwendung
Parallelisierung Gesamtschrittverfahren
D − L − R := A
Ax = b ⇒ Dx = (L + R )x + b
44 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Anwendung
Parallelisierung Gesamtschrittverfahren
D − L − R := A
Ax = b ⇒ Dx = (L + R )x + b
definiere iterativen Prozess: x k +1 = D −1 (L + R )x k + b
44 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Anwendung
Parallelisierung Gesamtschrittverfahren
D − L − R := A
Ax = b ⇒ Dx = (L + R )x + b
definiere iterativen Prozess: x k +1 = D −1 (L + R )x k + b
xik +1
44 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
=
1
aii
P
i 6=j
aij xjk + bi
Fakultät für Informatik
Institut für Theoretische Informatik
Anwendung
Parallelisierung Gesamtschrittverfahren
D − L − R := A
Ax = b ⇒ Dx = (L + R )x + b
definiere iterativen Prozess: x k +1 = D −1 (L + R )x k + b
xik +1
=
1
aii
P
i 6=j
aij xjk + bi
Graphpartitionierung?
44 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Anwendung
Parallelisierung Gesamtschrittverfahren
xik +1 =
1
aii
P
i 6=j
aij xjk + bi
G = (V = {1, · · · , n}, E ) ungerichteter Graph
e = {i , j } ∈ E ⇔ ai ,j 6= 0
jede Komponente xik , xik +1 , Ai ,∗ gehört zu Knoten i ∈ V
G ungerichtet, da A symmetrisch
45 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Anwendung
Parallelisierung Gesamtschrittverfahren
xik +1 =
1
aii
P
i 6=j
aij xjk + bi
G = (V = {1, · · · , n}, E ) ungerichteter Graph
e = {i , j } ∈ E ⇔ ai ,j 6= 0
3
1
2
0
3
0
2
3
0
1
0
0
1
0
0
2
0
0
0
4
46 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Anwendung
Parallelisierung Gesamtschrittverfahren
xik +1 =
1
aii
P
i 6=j
aij xjk + bi
k -Partition von G:
Prozessor l korrespondiert zu Vl (Aufteilung)
speichert xik , xik +1 , Ai ,∗ und berechnet xik +1 für alle i ∈ Vl
gute Partitionierung ⇒ ausgeglichene Arbeit, wenig Kommunikation
3
1
2
0
3
0
2
3
0
1
0
0
1
0
0
2
0
0
0
4
47 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
Fakultät für Informatik
Institut für Theoretische Informatik
Spezialfall
vom Anfang der Übung
Graph G mit zwei Zusammenhangskomponenten:
1...k
k+1...n
48 T. Bingmann, C. Schulz
8. Übung – Algorithmen I
A1
0
0
A2
x1
x2
=
c1
c2
Fakultät für Informatik
Institut für Theoretische Informatik
Herunterladen