Vorlesung 4 BETWEENNESS CENTRALITY 101 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Aufgabe ! Szenario: Sie arbeiten bei einem sozialen Online-Netzwerk. Aus der Netzwerk-Struktur Ihrer Benutzer sollen Sie wichtige Eigenschaften extrahieren. [http://www.fahrschule-vatterodt.de/ images/social_network.jpg] ! Aufgabe 2: Finden Sie wichtige Personen im Netzwerk! Wie modellieren Sie „wichtig“? 102 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Zentralität durch kürzeste Wege ! Grundlegende Idee: Ein Knoten ist wichtig, wenn er auf einem hohen Anteil kürzester Wege liegt. ! Sei ¾st die Zahl der kürzesten Wege zwischen s und t. ! Sei ¾st(v) die Zahl der kürzesten Wege zwischen s und t, auf denen der Knoten v (als Zwischenknoten) liegt. 2 ! Beispiel: Knoten 5 liegt auf allen kürzesten Wegen von 1 nach 8, insgesamt 6 6 1 3 5 8 7 4 103 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Betweenness Centrality ! Intermediationszentralität (Betweenness Centrality) BC: CB(v) = Σs ≠ v ≠ t 2 V ¾st(v) / ¾st ! Folglich: Ein hoher BC-Wert gibt an, dass ein Knoten auf einem hohen Anteil von kürzesten Pfaden liegt ! Beispiel: CB(7) = 2,5 ! ! ! ! ! ! ! 104 1-2: 0 1-3: 0 1-4: 0 1-5: 0 1-6: 0 1-8: 0,5 2-3: 0 2-4: 0 2-5: 0 2-6: 0 2-8: 0,5 3-4: 0 3-5: 0 3-6: 0 3-8: 0,5 4-5: 0 4-6: 0 4-8: 0,5 5-6: 0 5-8: 0,5 6-8: 0 Graphenalgorithmen und lineare Algebra Hand in Hand 2 6 1 3 5 8 7 4 Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Weitere Anwendungen ! Fehlertoleranz: Knoten mit hoher BC fällt aus => große Auswirkungen ! Informationsfluss: Knoten mit hoher BC sind wichtige Informationsvermittler ! Weitere? 105 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Paar-Abhängigkeit ! Lemma: Ein Knoten v liegt genau dann auf dem kürzesten Weg zwischen s und t, wenn d(s,v)+d(v,t)=d(s,t) gilt. ! Paar-Abhängigkeit: ±st(v) = ¾st(v) / ¾st ! CB ist Summe über die Paar-Abhängigkeiten von v: CB(v) = Σs ≠ v ≠ t 2 V ¾st(v) / ¾st= Σs ≠ v ≠ t 2 V ±st(v) 106 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Beispiel 2 6 1 3 5 8 CB(5) = 12 7 4 Paar-Abhängigkeiten für Knoten 5: 1-6, 1-7, 1-8, 2-6, 2-7, 2-8, 3-6, 3-7, 3-8, 4-6, 4-7, 4-8 107 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Berechnung und Komplexität ! Einfache Herangehensweise zur BC-Berechnung: ! Berechne Länge und Zahl der kürzesten Wege zwischen allen zulässigen Knotenpaaren ! Berechne Summe aller Paar-Abhängigkeiten ! Aber: Quadratisch viele Paar-Abhängigkeiten Ø Summierung hat kubischen Aufwand! 108 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Zwischenfazit ! Knoten-Zentralitäten sind ein Maß für die Wichtigkeit eines Knotens in einem Netzwerk ! Betweenness Centrality (BC) nutzt dafür den Anteil der kürzesten Wege, auf dem ein Knoten liegt ! Triviale Berechnung von BC hat kubischen Aufwand ! Schnelleres Verfahren bereits für recht kleine Graphen notwendig ! Frage (MG): Sehen Sie Ansätze für eine schnellere Berechnung? 109 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Ansatz zur Beschleunigung Kombinatorisches Zählen von Wegen ! Def. (Vorgänger): Ps(v) = {u 2 V: {u, v} 2 E, dG(s, v) = dG(s, u) + !(u, v)} In Worten: Die Vorgängermenge von v bzgl. einer Quelle s besteht aus den Nachbarn u von v, die auf einem kürzesten Weg von s nach v liegen. ! Beispiel: ! s=1 ! v=8 ! P1(8) = {6, 7} 2 6 1 3 5 8 7 4 110 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Vorgänger für schnelle Berechnung ! Lemma: Für s ≠ v 2 V gilt: ¾sv = Σu 2 Ps(v) ¾su BFS und Dijkstra (mit FibonacciHeap) ! Folgerung: Ist ein Startknoten s 2 V gegeben, lässt sich die Zahl und Länge der kürzesten Wege zu allen anderen Knoten in Zeit O(m + n log n) für gewichtete Graphen und O(m) für ungewichtete berechnen. ! Idee: Zwischenergebnisse mehrfach verwenden! 111 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Abhängigkeit eines Knotens ! Ziel: Nicht alle Paar-Abhängigkeiten summieren müssen ! Def. (Abhängigkeit eines Knotens s von v ≠ s): ±s±(v) = Σt 2 V ±st (v) = Σt 2 V ¾st(v) / ¾st ±st(v) = ¾st(v) / ¾st CB(v) = Σs ≠ v 2 V ±s±(v) ! Wichtig: Diese Summen haben eine rekursive Beziehung! ! Theorem: Für die Abhängigkeit ±s±(v) eines Startknotens s 2 V zu einem anderen Knoten v 2 V gilt: ±s±(v) = Σw: v 2 Ps(w) (¾sv / ¾sw)(1 + ±s±(w)) 112 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Abbildung zum Beweis [Brandes 2001] ±s±(v) = Σw: v 2 Ps(w) (¾sv / ¾sw)(1 + ±s±(w)) CB(v) = Σs ≠ v ≠ t 2 V ±st(v) 113 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Akkumulation der Abhängigkeiten (1) ! Beobachtung: Ähnlich wie bei Tiefensuche: Bei Berechnung der kürzesten Wege von einem Startknoten s 2 V in G entsteht ein Baum aus den Kanten der „ersten Entdeckung“. ! Folgerung: Sei der Baum der kürzesten Wege von einem Startknoten s 2 V in G gegeben. Dann lassen sich die Abhängigkeiten von s zu allen anderen Knoten ! in Zeit O(m) (ungewichtet) bzw. O(m + n log n) (gewichtet) ! und Platz (n+m) berechnen. 114 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Akkumulation der Abhängigkeiten (2) Beweis: ! Berechnung für jeden Startknoten s: ! Führe SSSP bzw. BFS von s durch ! Traversiere die Knoten in nicht-aufsteigender Reihenfolge hinsichtlich ihrer Distanz zu s und ! akkumuliere die Abhängigkeiten gemäß des Theorems ! Aufwand: ! Wir müssen pro Knoten eine Abhängigkeit und die Liste der Vorgänger speichern. ! Platzbedarf: ! Pro Kante gibt es höchstens ein Element in allen diesen Listen. 115 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Der Algorithmus von Brandes ! Berechne n Kürzeste-Wege-Bäume, einen pro s 2 V ! Währenddessen auch die Mengen Ps(v) berechnen ! Berechne für ! jedes jeweilige s 2 V und alle anderen v 2 V ! die Abhängigkeiten ±s±(v) mit Hilfe des Baumes, der Vorgängermengen und des Theorems. ! Vorgehensweise: ! Starte an den Blättern des Baumes, arbeite dich wie auf der vorigen Folie beschrieben schrittweise zur Wurzel voran ! Akkumuliere den Abhängigkeitswert des Startknotens s zu jedem einzelnen Knoten v im Zentralitätswert von v ±s±(v) = Σ{w: v 2 Ps(w)} (¾sv / ¾sw)(1 + ±s±(w)) 116 Graphenalgorithmen und lineare Algebra Hand in Hand CB(v) = Σs ≠ v ≠ t 2 V ±st(v) Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Beispiel ! Siehe Tafel 117 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Resultat ! BC kann in Zeit O(nm + n2 log n) und Platz O(n + m) auf gewichteten Graphen berechnet werden. ! Für ungewichtete Graphen reduziert sich die Laufzeit auf O(nm). Ø Für dünn besetzte Graphen mit einer linearen Anzahl von Kanten (linear in ) verbessert dies den naiven Algorithmus mit kubischer Laufzeit um den Faktor O(n / log n) bzw. O(n). 118 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Pseudocode ! Graphenbasiert: Siehe Kopie 119 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Algebraische Formulierung ! BFS mit Matrix-Vektor-Multiplikation ! Vollständige Aktualisierung der Eltern- und Pfadinformationen ! Vollständige BC-Aktualisierung ! Pseudocode: Siehe Tafel 120 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Parallelisierung ! Grobgranular: Jede einzelne BFS/SSSP-Operation ist unabhängig von den anderen, wenn die Zentralitätssummen atomar aktualisiert werden ! Feingranular: Die einzelnen Teile jeder BFS/SSSP-Operation können parallelisiert werden ! Im Detail: Feingranularer Ansatz ! Vorteil: Datenstrukturen müssen nicht repliziert werden 121 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Feingranulare Parallelisierung ! Beim Startknoten k starten ! Sukzessive die Grenze der besuchten Knoten expandieren ! Dabei die Zahl der kürzesten Wege zählen ! Multimenge P(w) für die Vorgänger jedes Knotens w ! Knoten in S(i) gleichzeitig bearbeiten ! Pseudocode: Siehe Kopie 122 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Zusammenfassung ! (Knoten-)Zentralitätsmaße: Wichtigkeit von Knoten im Netzwerk ! Betweenness Centrality: Summe der Anteile an kürzesten Wegen zwischen Knotenpaaren ! Naiver Algorithmus erfordert kubische Laufzeit ! Beschleunigung durch rekursive Akkumulation ! Algebraisch: Für ungewichtete Graphen recht einfach ! Parallel: Feingranular versus grobgranular 123 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Übung ! In der Übung eine Einheit zur Zusammenfassung und Wiederholung der bisherigen Ergebnisse ! ! ! ! 124 Was wurde behandelt? Gemeinsamkeiten Unterschiede Was fällt Ihnen auf, positiv oder negativ? Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik