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