Graphenalgorithmen und lineare Algebra Hand in...
Transcript of Graphenalgorithmen und lineare Algebra Hand in...
KIT – Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft
PARALLELES RECHNEN INSTITUT FÜR THEORETISCHE INFORMATIK, FAKULTÄT FÜR INFORMATIK
www.kit.edu
Graphenalgorithmen und lineare Algebra Hand in Hand Vorlesung für den Bereich Diplom/Master Informatik
Dozent: Juniorprof. Dr. Henning Meyerhenke
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
2
VORLESUNG 1 Einführung
17. April 2012
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
3
Motivation
! Graphen wichtige abstrakte Datenstrukturen ! Mächtiges Werkzeug zur Modellierung komplexer Probleme ! Allgegenwärtig in täglichen Anwendungen
! Routenplanung ! Suchmaschine ! Matching: Partnersuche ! Netzwerkauslastung und -analyse ! Energieversorgung
! Zunehmende Komplexität è Parallele Verarbeitung ! Herausforderung: Implementierung von Graphenalgorithmen
mit guter paralleler Performanz ! Analyse mit Methoden der Matrixalgebra häufig sehr nützlich
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
4
Lernziele
! Verständnis für Zusammenhang zwischen Graphen und Matrizen
! Auftretende Fragestellungen aus der Graphentheorie auf ihren algorithmischen Kern reduzieren
! Analyse und/oder Lösung mit Techniken der linearen Algebra
! Effiziente praktische Lösung der behandelten Probleme ist wichtiger Bestandteil der Übungen
! Geht auch auf Aspekte der Parallelverarbeitung ein
! Vorgestellte Methoden selbstständig auf verwandte Fragestellungen anwenden
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
5
Vorlesungsübersicht
! Dualität von Graphen und Matrizen ! Zusammenhangskomponenten, kürzeste Wege ! Zentralitäten, Clusteranalyse
! Tensoren ! Teilgrapherkennung ! Optimierung von Matrixstrukturen für Graphenalgorithmen
! Spektrale Graphentheorie ! Lastbalancierung mit Diffusion ! Visualisierung von Graphen
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
10
Organisatorisches
! Vorlesung und Übung kombiniert, dienstags ab 14:45 Uhr ! Sprechstunde: Nach Vereinbarung (E-Mail) ! Betreuung von Studien-/Bachelor- sowie Diplom- und
Masterarbeiten ! Webseite zur Vorlesung: http://parco.iti.kit.edu/henningm/lehre.shtml
! Literatur:
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
11
EINLEITUNG UND MOTIVATION Abschnitt 1:
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
12
Was ist ein Algorithmus? ! Definition: Ein Algorithmus ist eine eindeutige
Beschreibung eines Verfahrens zur Lösung einer bestimmten Klasse von Problemen.
Schlüsselworte: ! Eindeutige Beschreibung ! eines Verfahrens ! zur Lösung ! einer Klasse von Problemen
Graphenalgorithmen und lineare Algebra Hand in Hand
Genauer: Ein Algorithmus ist eine Menge von Regeln für ein Verfahren, um aus gewissen Eingabegrößen bestimme Ausgabegrößen herzuleiten. Dabei muss
1. Das Verfahren in einem endlichen Text beschreibbar sein. 2. Jeder Schritt des Verfahrens auch tatsächlich ausführbar sein. 3. Der Ablauf des Verfahrens zu jedem Zeitpunkt eindeutig
definiert sein.
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
13
Ø Algorithmen müssen korrekt sein.
→ Benötigen Korrektheitsbeweise.
Ø Algorithmen sollen zeit- und speichereffizient sein.
→ Benötigen Analysemethoden für Zeit- und Speicherbedarf.
Ø Analyse basiert in der klassischen Algorithmik nicht auf empirischen Untersuchungen, sondern auf mathematischen Analysen. Man nutzt hierfür Pseudocode und Basisoperationen.
Ø Algorithmentechnik: Zyklus von Entwurf, Analyse, Implementierung und Experiment
Kriterien für Algorithmen
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
14
Definition: Multimenge
! Eine Menge E mit einer Vielfachheit ihrer Elemente heißt Multimenge.
! Die Kardinalität von E ist
! Kurzschreibweise: ! für ! , falls und
Graphenalgorithmen und lineare Algebra Hand in Hand
| E |= #Ee∈E∑ (e).
#E : E→ 0
e∈k E e∈E# e #E (e)
# e = k
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
15
Definition: Graph, Multigraph
! Ein mglw. gerichteter Graph (bzw. Multigraph) ist ein Paar G = (V, E) aus einer endlichen Menge V von Knoten und einer Menge (bzw. Multimenge) E ⊆ V × V von Kanten.
! Kanten e ∈ {(v, v) | v ∈ V} nennen wir Schleifen. ! Kanten e ∈ E in einem Multigraphen mit k > 1
(Mehrfachauftreten) heißen Multikanten. ! Ein Graph ist schlicht (simple), wenn er weder Schleifen noch
Multikanten hat.
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
16
Beispiel
! 𝑉={1, 2, 3,4} ! 𝐸={(1,2), (1,4),(2,3),(3,3),(4,1)}mit #(2,3)=2 und #𝑒=1 für 𝑒∈𝐸 \ {(2,3)}
! (2,3) ist eine Multikante ! (3,3) ist eine Schleife
! 1 ist Vorgänger von 2 ! 2 ist Nachfolger von 1 ! 1 ist adjazent zu 2 ! (1, 2) ist inzident zu 1
(bzw. 2)
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
17
Jetzt sind Sie dran:
! Frage: Welche Matrizen kennen Sie, um einen Graphen zu repräsentieren?
! Adjazenzmatrix ! Laplacematrix ! (Knoten-Kanten-Inzidenzmatrix)
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
18
Historie
! Dualität zwischen einem schlichten Graphen (ohne weitere Information) und einer Adjazenzmatrix lange bekannt
! Matrixalgebra etabliertes Werkzeug in der Graphentheorie
! Allerdings: In algorithmischer Software wurden meist andere Repräsentationen gewählt
! Frage: Mögliche Gründe? ! Speichereffizienz ! Semantische Informationen ! Anschaulichkeit
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
19
Vorteile der Nutzung der Dualität
! Reduktion der syntaktischen Komplexität: ! Manche Graphenalgorithmen sind kompakter und einfacher
verständlich, wenn sie Array-basiert aufgeschrieben werden ! Personenkreise mit Kenntnissen in linearer Algebra haben
leichteren Zugang zur Graphentheorie (Ingenieure, Physiker, ...) ! Einfache Implementierung:
! Nutzung der existierenden Software-Infrastruktur für parallele Berechnungen auf dünn besetzten Matrizen
! Weniger Fehler durch Wiederverwendung ! Bessere Optimierung durch Spezialisten
! Geschwindigkeit: ! Array-basierte Algorithmen heben stärker das Muster des
Datenzugriffs hervor ! Dadurch bessere Optimierung möglich
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
20
Nachteile der Nutzung der Dualität
! Frage: Was fällt Ihnen ein?
! Mangelnde Anschaulichkeit bei manchen Problemen
! Bibliotheken ggf. nicht kostenlos erhältlich
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
21
Beispielalgorithmen und -anwendungen
! APSP: Vorverarbeitung bei der Routenplanung
! Partitionierung und Lastbalancierung: Effizientes paralleles Rechnen
! Netzwerkanalyse: Hauptakteure in einem (sozialen) Netzwerk
! Tensorzerlegungen: Dokumente klassifizieren
! Visualisierung von Graphen: Technische Zeichnungen, Geschäftsdatenanalyse
Graphenalgorithmen und lineare Algebra Hand in Hand
http://www.facebook.com/marketing
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
22
ZUSAMMENHANG
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
23
Zusammenhangskomponenten
! Anwendung: Aufteilung eines Web-Graphen in kleinere Teile
! Mögliche Aufteilung: Starke Zusammenhangskomponenten
! Mögliche Gründe: ! Analyse des Graphen mit
Algorithmus, der Zusammenhang erfordert
! Der gesamte Graph ist zu groß für die Analyse
! ...
Graphenalgorithmen und lineare Algebra Hand in Hand
[http://ars.sciencedirect.com/ content/image/1-s2.0-S0370157309002841-gr4.jpg]
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
24
Zusammenhang
Definition (Zusammenhang): ! Ein Multigraph 𝐺=(𝑉,𝐸) heißt stark zusammenhängend, falls
er für jedes Paar 𝑢,𝑣∈𝑉 sowohl einen (𝑢,𝑣)-Weg als auch einen (𝑣,𝑢)-Weg enthält.
! 𝐺 heißt (schwach) zusammenhängend, wenn der symmetrische Multigraph (Kanten doppelt gerichtet) zu 𝐺 stark zusammenhängend ist.
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
25
Mehrfacher Zusammenhang
! Ein ungerichteter Multigraph G heißt k-fach knotenzusammenhängend, falls jeder durch Entfernen von höchstens k-1 beliebigen Knoten (und aller inzidenten Kanten) entstehende Teilgraph von G zusammenhängend ist.
! G heißt k-fach kantenzusammenhängend, falls jeder durch Entfernen von höchstens k-1 beliebigen Kanten entstehende Teilgraph von G zusammenhängend ist.
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
26
Komponenten
Definition (Komponenten): Zu einem schlichten Multigraphen G heißt ein maximaler
! stark ! schwach ! k-fach knotenzushgd. ! k-fach kantenzushgd.
zusammenhängender Teilgraph ! starke ! schwache ! k-fache knotenzusammenhängende ! k-fach kantenzusammenhängende
Zusammenhangskomponente.
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
27
Beispiel Starke ZHK
Quelle: http://www.cs.berkeley.edu/~vazirani/s99cs170/notes/lec12.pdf
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
28
Algorithmus zum Finden der starken ZHK
! Wollen nun starke ZHK in einem gerichteten Graphen finden
! Beispiel: s. Tafel
! Frage: Gibt es Vorschläge?
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
29
Die wesentliche Idee
! Theorem: Ak(i, j) ist die Zahl der Wege der Länge k zwischen i und j
! Beweis: s. Tafel
! Definition ZHK: Es gibt einen Weg...
! Frage (MG): Wie könnte ein Ansatz aussehen?
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
30
Auf dem Weg zum Algorithmus
! C = I ∨ A ∨ A2 ∨ A3 ∨ A4 ∨ ... ! Nach Vorüberlegung: C(i,j) > 0 gdw. ein Weg zwischen i und j
existiert
! Beispiel: s. Tafel
! Jetzt sind wir noch nicht ganz am Ziel ! Frage: Was fehlt noch?
! Wie verhält sich das bei ungerichteten Graphen?
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
31
Schnelle Berechnung von C
! Statt der Oder-Operation verwenden wir die Addition: D = I + A + A2 + A3 + A4 + ...
! Beide Matrizen C und D haben dasselbe Muster von Nichtnulleinträgen
! Sei F := (I - A) D, dann gilt: F = D - AD = I + A + A2 + A3 + A4 + ...
- A - A2 - A3 - A4 - ... = I = (I – A) D
! Also: D = (I – A)-1
! Problem: Reihe konvergiert häufig nicht ! Frage (MG): Lösungsvorschläge?
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
32
Konvergenz
! Idee: Skalar 0 < α < 1 wird mit der Matrix A multipliziert: D‘ = I + αA + (αA)2 + (αA)3 + (αA)4 + ...
! Effekte: ! Das Muster der Nichtnulleinträge verändert sich nicht. ! Sei nun F‘ := (I - A) D‘. ! F‘ = I + αA + (αA)2 + (αA)3 + (αA)4 + ...
- αA - (αA)2 - (αA)3 - (αA)4 - ... = I = (I – αA) D‘
! Also: D‘ = (I – αA)-1 ! Wenn α klein genug gewählt wird, dann konvergiert unsere
unendliche Folge ! Übung: Codebeispiel in Matlab ! Übung: Welches Kriterium für unsere Zwecke?
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik
33
Zusammenfassung
! Starke ZHK ist maximaler stark zusammenhängender Teilgraph (jeder Knoten erreicht jeden anderen in der ZHK)
! Mit einer potenzierten Adjazenzmatrix lassen sich Wege zählen
! Reihe von potenzierten Matrizen liefert uns (fast) die Lösung
! Konvergenz wird durch zusätzliches Skalar erzwungen
! Unterschied zwischen gerichteten und ungerichteten Graphen
Graphenalgorithmen und lineare Algebra Hand in Hand