Vorlesung 3 MINIMALE SPANNBÄUME 72 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Aufgabe ! Szenario: Sie arbeiten für eine Firma, die ein Neubaugebiet ans Netz (Wasser, Strom oder Kabel oder...) anschließt ! Ziel: Alle Haushalte ans Netz bringen, dabei möglichst wenig Leitung verlegen ! Aufgabe: Wie modellieren und lösen Sie das Problem? (Der Anschlusspunkt ans Netz ist fix.) 73 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik (Minimaler) Spannbaum ! Definition: Spannbaum eines zusammenhängenden, ungerichteten Graphen G=(V, E): Zusammenhängender Baum T=(V, E‘) mit E‘ Teilmenge von E ! Sind die Kanten von G gewichtet, so ist das Gewicht von T die Summe der Kantengewichte in T ! Minimaler Spannbaum: Spannbaum mit niedrigstem Gewicht ! Engl.: Minimum (weight) spanning tree, MST 74 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Beispiel 75 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Prims Algorithmus ! Graphenbasiert: ! ! ! ! In jeder Iteration wird ein Knoten zum Baum hinzugefügt Dabei wird der Knoten v gewählt, der am dichtesten am Baum liegt Dazu wird die leichteste Kante bestimmt, die keinen Zyklus erzeugt Nach n-1 Iterationen hat man den MST ! Pseudocode: s. Tafel ! Laufzeit: ! Mit binärem Heap als PQ: O(|E| log |V|) ! Mit Fibonacci-Heap als PQ: O(|E| + |V| log |V|) 76 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Algebraische Variante ! Adjazenzmatrix A speichert Kantengewichte ! Vektor s zeigt Zugehörigkeit zur Menge S an ! Vektor d speichert die Gewichte der Kanten, die S verlassen ! d(v) = 0, falls v in S ! Falls v nicht in S: d(v) gibt leichteste Kante an, die v mit S verbindet ! Pseudocode: s. Tafel ! Komplexität: O(n2) ! Bei dünn besetzten Graphen deutlich schlechter, bei sehr dichten vergleichbar 77 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Zusammenfassung ! Prims Algorithmus ist ähnlich zu Dijkstras SSSP-Algorithmus ! Algebraische Variante etwas kürzer in der Notation ! Langsames argmin sorgt für höhere Laufzeit für dünn besetzte Graphen ! Übung: Zusätzlich den MST berechnen, nicht nur sein Gewicht 78 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik CLUSTERANALYSE UND ZENTRALITÄT 79 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 1: Entwickeln Sie Ideen, wie Sie Communitys, d. h. dicht zusammenhängende Teilgraphen identifizieren können! ! Wie formalisieren Sie das Problem? ! Aufgabe 2: später 80 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Clusteranalyse in Graphen ! Hier: Clusteranalyse = Clustering = Community Detection ! Bestimmung „natürlicher“ Gruppen im Graphen ! „Strukturierung des Chaos“ [http://espin086.files.wordpress.com/ 2011/02/2-variable-clustering.png?w=640] [http://www.colenbrander.com/images/ Afbeeldingen/Chaos-Structure2.jpg] 81 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Anwendungsgebiete ! ! ! ! ! ! ! Marketing, Werbung (besonders online) Strukturvorhersage Expertensysteme Maschinelles Lernen, Data Mining, Mustererkennung, ... Bildsegmentierung Bioinformatik ... [http://spie.org/Images/Graphics/Newsroom/Imported/ 0016/16_fig1.jpg] 82 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Algorithmenklassen ! Zahlreiche Algorithmen(klassen) ! ! ! ! ! ! 83 Spektral Random Walks Greedy kombinatorisch Semidefinite Programmierung Peer Pressure ... Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Clusterung, Cluster ! Definition: Sei G = (V, E) ein ungerichteter, einfacher (= schlichter) Graph. Eine Clusterung C = (C1, ..., Ck) ist eine Partition der Knotenmenge in nicht-leere disjunkte Teilmengen. Eine solche Teilmenge Ci heißt Cluster. ! Lemma: Jede Clusterung C kann eindeutig durch die Äquivalenzrelation u ~C v: , 9 Ci 2 C: u, v 2 Ci beschrieben werden. Die Cluster Ci entsprechen genau den Äquivalenzklassen. 84 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Peer Pressure Clustering Die wesentliche Idee [KG, S. 61] ! Idee: Clusternummer eines Knotens stimmt mit Mehrzahl seiner Nachbarn überein (eine akzeptable Startlösung vorausgesetzt) 85 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Peer Pressure Clustering (PPC) Die Umsetzung ! Gegeben: Graph G = (V, E), N := |V|, M := |E|, initiale Clusterung C ! Gesucht: besseres Clusterung C‘ ! Iteratives Vorgehen: ! Stimmabgabe: Jeder Knoten stimmt dafür, dass seine Nachbarn zum eigenen Cluster gehören ! Zuweisung: Für jeden Knoten: Nach der Berechnung aller Stimmabgaben Zuordnung zum Cluster mit den meisten Stimmen ! Pseudocode: s. Tafel 86 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Beispiel [KG, S. 61] ! Diskussion (Übung): Was halten Sie von diesem Algorithmus? 87 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Startlösung ! Option 1: Eine Runde Lubys MIS, Zuordnung der restlichen Knoten an nächstgelegenes MIS-Mitglied ! Option 2: Multilevel-Verfahren ! Rekursive Vergröberung des Graphen ! Startlösung auf dem groben Graphen berechnen ! Stufenweise Verbesserung während der Rückkehr aus der Rekursion ! Erfahrung zeigt: Hat ein Graph eine gute Cluster-Struktur, ist der Algorithmus robust gegenüber der Startlösung ! Option 3: Starten mit Ein-Knoten-Clustern 88 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Problem unterschiedlicher Knotengrade ! Viele Netzwerke der realen Welt haben stark unterschiedliche Knotengrade ! Beispiele: ! ... ! ... ! Frage: Welche Auswirkung hat das auf den Algorithmus? ! Antwort: Manche Knoten haben extrem starken Einfluss (viele Stimmen) ! Lösung: Normalisierung der Abstimmung ! Pseudocode: s. Tafel 89 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Kleine Cluster und Rauschen ! Was tun mit Knoten, die Grad 1 haben? ! Eigener Cluster? ! Zum Cluster des Nachbarn? ! Rauschen? ! Was passiert bei kleinen Clustern? ! Wenn mehrere Kanten zu einem größeren Cluster existieren, wird der kleine vermutlich „aufgesogen“. ! Will man das verhindern? Kommt auf die Anwendung an! ! Wiederum: Normalisierung der Abstimmung ! Diesmal: Normalisierung mit Clustergröße ! Einfluss (= Stimmen) wird mit einem Stärkeexponenten skaliert ! Pseudocode: s. Tafel 90 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Konfliktlösung ! Konflikt: Einfluss (= Stimmen) verschiedener Cluster gleich hoch ! Wähle den Cluster mit der kleinsten Nummer 91 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Beispielrechnung (1) ! Initial: Jeder Knoten ist eigener Cluster ! Implizite Annahme: Jeder Knoten hat eine Schleife ! Grund: Einfluss auf sich selbst 92 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Beispielrechnung (2) 93 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Beispielrechnung (3) 94 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Komplexität ! Raumkomplexität: ! Jede Kante kann höchstens einmal Einfluss nehmen. ! Wenn Stimmen als Liste gespeichert werden: Insgesamt höchstens M Listeneinträge ! Zeitkomplexität: Schleife zur Stimmabgabe: O(M) Zuweisung: O(M) Also: Pro Durchlauf O(M) Anzahl Durchläufe: Typischerweise O(1), wenn der Graph Clusterstruktur hat ! In dem Fall: Gesamtlaufzeit auch O(M) ! ! ! ! 95 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Pseudocode (algebraisch) ! Graph als gewichtete Adjazenzmatrix A ! C sei die Clusterung mit cij = 1 gdw. Knoten j in Cluster i ist ! T ist die Stimmauszählungs-Matrix (engl.: tally matrix) ! Stimmabgabe: T = CA ! tij = k gdw. es k Stimmen für Knoten j im Cluster i gibt ! Zuweisung: 96 m = T max. C = m .== T Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Die übrigen Operationen ! Startclusterung: C = I ! Normalisierung 1 (Entschärfung versch. Knotengrade): w = A +. A = 1/w .x A ! Normalisierung 2 (kleine Cluster und Einzelknoten erhalten): w = C +. A = (1/w .^p) .x A ! Konflikte: Finde in jeder Spalte von T das erste Maximum ! Übung: Zeit- und Raumkomplexität 97 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Markov Clustering Ein alternativer Ansatz ! Basiert auf Random Walks ! Idee: Random Walks verbleiben wahrscheinlich lange in dichten Gebieten ! Pseudocode: s. Tafel [http://espin086.files.wordpress.com/ 2011/02/2-variable-clustering.png?w=640] 98 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Vergleich ! Lösungsqualität: ! MCL kann bei Tuning der Parameter Cluster verschiedener Granularität (bewirkt unterschiedliche Größen) erkennen ! PPC erkennt nur Cluster feiner Granularität (lt. [KG, S. 68]) ! Raumkomplexität: ! MCL: Matrix füllt sich nach wenigen Operationen è O(N2) ! PPC: O(M) ! Laufzeit: ! MCL: Matrix-Matrix-Multiplikation pro Iteration ! PPC: O(M) pro Iteration ! Konvergenz: ! MCL: Konvergiert (aber eher langsam) ! PPC: Muss nicht konvergieren, tut dies aber meist schnell 99 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Zusammenfassung ! Graphclustering: Identifizierung von dicht zusammenhängenden Teilgraphen mit wenigen externen Kanten ! Zahlreiche Anwendungen in verschiedenen Gebieten ! Peer-pressure-Clustering: ! Geht von initialer „Cluster-Approximation“ aus ! Idee: Die Mehrzahl meiner Nachbarn sind in demselben Cluster ! Konvergenz nicht garantiert, aber bei gutartigen Graphen in Experimenten gegeben ! Bei schneller Konvergenz (O(1) Runden) insgesamt schnell (O(M)) ! Operationen leicht darstellbar in Matrix-Vektor-Notation ! Qualität??? 100 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik