8. Übung – Algorithmen I - KIT – ITI Algorithmik...

100
1 T. Bingmann, C. Schulz 8. Übung – Algorithmen I Fakultät für Informatik Institut für Theoretische Informatik I NSTITUT FÜR THEORETISCHE I NFORMATIK,PROF .SANDERS 8. Übung – Algorithmen I Timo Bingmann, Christian Schulz KIT – Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Transcript of 8. Übung – Algorithmen I - KIT – ITI Algorithmik...

1 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

8. Übung – Algorithmen ITimo Bingmann, Christian Schulz

KIT – Universität des Landes Baden-Württemberg undnationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Graphen

2 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Rn×n 3 Ax = b ∈ Rn

3 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

WarmupWiederholung Graph Datenstrukturen

TerminologieGraphen

4 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

adjazentZwei Knoten sind adjazent, wenn sie durch eine gemeinsame Kanteverbunden sind.

inzidentEinen Knoten und eine Kante sind inzident, wenn der Knoten einEndpunkt der Kante ist.

1 2

3

Adjazenzfelder

5 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

1

2

3

4 5

V

E

Adjazenzfelder

5 T. Bingmann, C. Schulz8. Ü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

AdjazenzfelderAbstraktion in der Praxis

6 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

AdjazenzfelderAbstraktion in der Praxis

6 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

AdjazenzfelderAbstraktion in der Praxis

6 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Graphen als MatrizenSymmetrie

7 T. Bingmann, C. Schulz8. Ü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

8 T. Bingmann, C. Schulz8. Ü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

8 T. Bingmann, C. Schulz8. Ü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

9 T. Bingmann, C. Schulz8. Ü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

9 T. Bingmann, C. Schulz8. Ü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

Graphen als MatrizenPotenzierung

10 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

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

1 2

3

4

0 1 0 11 0 1 00 1 0 01 0 0 0

11 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Analyse von Graphen

Teilgraphen

12 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Graph G = (V ,E). G′ = (V ′,E ′) Teilgraph von G :⇔V ′ ⊆ V und E ′ ⊆ E .

1

2

35

6

1

2

3

4

5

6

ist Teilgraph von

Teilgraphen

12 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Graph G = (V ,E). G′ = (V ′,E ′) Teilgraph von G :⇔V ′ ⊆ V und E ′ ⊆ E .

1

2

35

6

1

2

3

4

5

6

ist kein Teilgraph von

Knoteninduziertere Teilgraphen

13 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Graph G = (V ,E). G′ = (V ′,E ′) knoteninduzierter Teilgraph von G :⇔V ′ ⊆ V und E ′ = {(v ,w) ∈ E | v ,w ∈ V ′}.

1

2

35

6

1

2

3

4

5

6

ist knoteninduzierter Teilgraph von

Knoteninduziertere Teilgraphen

13 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Graph G = (V ,E). G′ = (V ′,E ′) knoteninduzierter Teilgraph von G :⇔V ′ ⊆ V und E ′ = {(v ,w) ∈ E | v ,w ∈ V ′}.

1

2

35

6

1

2

3

4

5

6

ist kein knoteninduzierter Teilgraph von

K -core

14 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Der größte knoteninduzierte Teilgraph G′ = (V ′,E ′) von G mit∀v ∈ V ′ : Grad(v) ≥ K ist der K -core von G.

1

2

3

4

5

6

1

2

3

4

5

6

ist 2-core von

K -core

14 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Der größte knoteninduzierte Teilgraph G′ = (V ′,E ′) von G mit∀v ∈ V ′ : Grad(v) ≥ K ist der K -core von G.

2

35

6

1

2

3

4

5

6

ist 3-core von

K -core

14 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Der größte knoteninduzierte Teilgraph G′ = (V ′,E ′) von G mit∀v ∈ V ′ : Grad(v) ≥ K ist der K -core von G.

1

2

3

4

5

6

ist 4-core von

K -coreCore Decomposition

15 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Berechnung des K -cores

16 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Procedure core(G = (V ,E), K : N)G′ = (V ′,E ′) := Gwhile (∃v ∈ V ′ with GradG′(v) < K )

Remove v from V ′ and all its incident edges from E ′return G′

Frage: Laufzeit für diesen Algorithmus?

a) O(n + m)

b) O(n log n + m)

c) O(n2 + m

)

Berechnung des K -cores

17 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Procedure core(G = (V [1..n + 1],E [1..m]), K : N) // AdjazenzfeldQ : FIFOd : Array[1..n] of Nfor (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

Berechnung des K -cores

17 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Procedure core(G = (V [1..n + 1],E [1..m]), K : N) // AdjazenzfeldQ : FIFOd : Array[1..n] of Nfor (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)

18 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Durchmesser ungerichteter Graphen

Durchmesser ungerichteter Graphen

19 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

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.

A

C

D

E

F

G

B

H

I

Durchmesser ungerichteter Graphen

19 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

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.

Ein Pfad von C nach G, Länge = 4

A

C

D

E

F

G

B

H

I

Durchmesser ungerichteter Graphen

19 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

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.

Kürzester Pfad von C nach G, Länge = 3

A

C

D

E

F

G

B

H

I

Durchmesser ungerichteter Graphen

19 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

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.

Abstand von C und G, Länge = 3

A

C

D

E

F

G

B

H

I

Durchmesser ungerichteter Graphen

19 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

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.

Kürzester Pfad von I nach H, Länge = 4

A

C

D

E

F

G

B

H

I

Durchmesser ungerichteter Graphen

19 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

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.

Kürzester Pfad von I nach H, Länge = 4⇒ Abstand von I und H = 4

A

C

D

E

F

G

B

H

I

Durchmesser ungerichteter Graphen

19 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

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.

Kürzester Weg von I nach H, Länge = 4⇒ Abstand von I und H = 4Größter Abstand⇒ Durchmesser = 4

A

C

D

E

F

G

B

H

I

Durchmesser ungerichteter GraphenAlgorithmus

20 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Idee:1: D = 0 : N≥02: for each u ∈ V do3: 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: nAnzahl Kanten: m

Durchmesser ungerichteter GraphenMathematische Definition

21 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Durchmesser := maxu,v∈V

(min

P∈P(u,v)|P|)

mit

P(u, v) ist Menge aller Pfade zwischen u und v|P| ist Anzahl der Kanten eines Pfades P

Wiederholung BreitensucheBeispiel

22 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

FIFO 1

Wiederholung BreitensucheBeispiel

22 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

FIFO 2

Wiederholung BreitensucheBeispiel

22 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

FIFO 2 3

Wiederholung BreitensucheBeispiel

22 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

FIFO 2 3 4

Wiederholung BreitensucheBeispiel

22 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

FIFO 2 3 4 5

Wiederholung BreitensucheBeispiel

22 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

FIFO 2 3 4 5 6

Wiederholung BreitensucheBeispiel

22 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

FIFO 3 4 5 6 7

Wiederholung BreitensucheBeispiel

22 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

FIFO 4 5 6 7 8

Wiederholung BreitensucheBeispiel

22 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

FIFO 5 6 7 8 9

Wiederholung BreitensucheBeispiel

22 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

FIFO 6 7 8 9

Wiederholung BreitensucheBeispiel

22 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

FIFO 7 8 9

Wiederholung BreitensucheBeispiel

22 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

FIFO 10 11 12 13 14

Wiederholung BreitensucheBeispiel

22 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

FIFO 18 19 23 16 17 15

Wiederholung BreitensucheBeispiel

22 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

FIFO 20 21 22 25 24 33 26

Wiederholung BreitensucheBeispiel

22 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

FIFO 30 31 27 29

Wiederholung BreitensucheBeispiel

22 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

FIFO 32 28

Wiederholung BreitensucheBeispiel

22 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

FIFO ∅

Durchmesser ungerichteter GraphenTeilalgorithmus: Alle kürzesten Pfade von u nach v ∈ V\{u}

23 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Breitensuche plus Nachbearbeitung:

1: function maxAbstand(u: NodeID): Abstand2: (⊥,d) := bfs(u)3: result := maxv∈V\{u} d [v ]4: return result

Laufzeit:BFS braucht O(m)

Maximum berechenen braucht O(n)⇒ Gesamt O(n + m), für zusammenhängende Graphen = O(m), dan ≤ m

Durchmesser ungerichteter GraphenTeilalgorithmus: Alle kürzesten Pfade von u nach v ∈ V\{u}

24 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Breitensuche plus Nachbearbeitung:

1: function maxAbstand(u: NodeID): Abstand2: (⊥,d) := bfs(u)3: result := maxv∈V\{u} d [v ]4: return result

Laufzeit: Was glauben Sie?

BFS braucht O(m)

Maximum berechenen braucht O(n)⇒ Gesamt O(n + m), falls zusammenhängend = O(m), da n ≤ m

Durchmesser ungerichteter GraphenTeilalgorithmus: Alle kürzesten Pfade von u nach v ∈ V\{u}

24 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Breitensuche plus Nachbearbeitung:

1: function maxAbstand(u: NodeID): Abstand2: (⊥,d) := bfs(u)3: result := maxv∈V\{u} d [v ]4: return result

Laufzeit:

Was glauben Sie?

BFS braucht O(m)

Maximum berechenen braucht O(n)⇒ Gesamt O(n + m), falls zusammenhängend = O(m), da n ≤ m

Durchmesser ungerichteter GraphenAlgorithmus

25 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Fertiger Algorithmus:1: D = 0 : N≥02: for each u ∈ V do3: D := max{D,maxAbstand(u)}4: return D

Laufzeit: O(n · Laufzeit Zeile 3) = O(nm), für zusammenh. Graphen

Durchmesser von Facebook 41

Durchmesser ungerichteter GraphenAlgorithmus

25 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Fertiger Algorithmus:1: D = 0 : N≥02: for each u ∈ V do3: D := max{D,maxAbstand(u)}4: return D

Laufzeit: O(n · Laufzeit Zeile 3) = O(nm), für zusammenh. Graphen

Durchmesser von Facebook 41

26 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Breitensuchenzur Graphpartitionierung

GraphpartitionierungWas ist Graphpartitionierung?

27 T. Bingmann, C. Schulz8. Ü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

Notation

28 T. Bingmann, C. Schulz8. Ü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

28 T. Bingmann, C. Schulz8. Ü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

28 T. Bingmann, C. Schulz8. Ü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

28 T. Bingmann, C. Schulz8. Ü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

28 T. Bingmann, C. Schulz8. Ü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

29 T. Bingmann, C. Schulz8. Ü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

30 T. Bingmann, C. Schulz8. Ü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

30 T. Bingmann, C. Schulz8. Ü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

Notation

30 T. Bingmann, C. Schulz8. Ü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 = 17Optimal?

BeispielFinite Element Methode

31 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

BeispielFinite Element Methode

32 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Multilevelframework

33 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

input graph

match

... ...local improvement

uncontractcontract

outputpartition

part.

initial

Multilevelframework

33 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

match

... ...local improvement

uncontractcontract

outputpartition

input graph

partitioning

initial

Breitensuchen!

AbstraktionBreitensuchen

34 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Initial Partitioning

35 T. Bingmann, C. Schulz8. Ü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

36 T. Bingmann, C. Schulz8. Ü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

BubblinginitializeCenters

37 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

BubblinggrowRegions

38 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

BubblingfindNewCenters

39 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

BubblingBeispiel / Init Centers

40 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

BubblingBeispiel / Grow Regions

41 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

BubblingBeispiel / Grow Regions

41 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

BubblingBeispiel / Grow Regions

41 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

BubblingBeispiel / Grow Regions

41 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

BubblingBeispiel / Grow Regions

41 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

BubblingBeispiel / Grow Regions

41 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

BubblingBeispiel / Grow Regions

41 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

BubblingBeispiel / Grow Regions

41 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

BubblingBeispiel / Grow Regions

41 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Multilevelframework

42 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

input graph

...

initial

...

outputpartition

local improvement

partitioning

match

contract uncontract

später

AnwendungParallelisierung Gesamtschrittverfahren

43 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

A positiv definit, symmetrisch, dünn besetztGesucht x ∈ Rn mit:

Rn×n 3 Ax = b ∈ Rn

n groß! ⇒ Parallelverarbeitung, z.B. iterative Löser

AnwendungParallelisierung Gesamtschrittverfahren

44 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

D − L−R := AAx = b ⇒ Dx = (L + R)x + b

AnwendungParallelisierung Gesamtschrittverfahren

44 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

D − L−R := AAx = b ⇒ Dx = (L + R)x + bdefiniere iterativen Prozess: xk+1 = D−1(L + R)xk + b

AnwendungParallelisierung Gesamtschrittverfahren

44 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

D − L−R := AAx = b ⇒ Dx = (L + R)x + bdefiniere iterativen Prozess: xk+1 = D−1(L + R)xk + b

xk+1i = 1

aii

∑i 6=j aijxk

j + bi

AnwendungParallelisierung Gesamtschrittverfahren

44 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

D − L−R := AAx = b ⇒ Dx = (L + R)x + bdefiniere iterativen Prozess: xk+1 = D−1(L + R)xk + b

xk+1i = 1

aii

∑i 6=j aijxk

j + bi

Graphpartitionierung?

AnwendungParallelisierung Gesamtschrittverfahren

45 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

xk+1i = 1

aii

∑i 6=j aijxk

j + bi

G = (V = {1, · · · ,n},E) ungerichteter Graphe = {i , j} ∈ E ⇔ ai,j 6= 0

jede Komponente xki , x

k+1i ,Ai,∗ gehört zu Knoten i ∈ V

G ungerichtet, da A symmetrisch

AnwendungParallelisierung Gesamtschrittverfahren

46 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

xk+1i = 1

aii

∑i 6=j aijxk

j + bi

G = (V = {1, · · · ,n},E) ungerichteter Graphe = {i , j} ∈ E ⇔ ai,j 6= 0

0 3 0 23 0 1 00 1 0 02 0 0 0

1 2

3

4

AnwendungParallelisierung Gesamtschrittverfahren

47 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

xk+1i = 1

aii

∑i 6=j aijxk

j + bi

k -Partition von G:Prozessor l korrespondiert zu Vl (Aufteilung)speichert xk

i , xk+1i ,Ai,∗ und berechnet xk+1

i für alle i ∈ Vl

gute Partitionierung⇒ ausgeglichene Arbeit, wenig Kommunikation

0 3 0 23 0 1 00 1 0 02 0 0 0

1

4

2

3

Spezialfallvom Anfang der Übung

48 T. Bingmann, C. Schulz8. Übung – Algorithmen I

Fakultät für InformatikInstitut für Theoretische Informatik

Graph G mit zwei Zusammenhangskomponenten:

1...k

k+1...n

(A1 00 A2

)(x1x2

)=

(c1c2

)