Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Silke Otto Geändert vor über 7 Jahren
1
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 1 Ein Algorithmus für die Visualisierung gerichteter Graphen in der Ebene (2D) Seminar “Graph Drawing” SS 2004 bei Prof. Bischof (Lehrstuhl für Hochleistungsrechnen)
2
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 2 Gliederung ● Einleitung ● Motivation ● Prinzip ● Schritt 1: Zuordnung der Knoten zu Schichten ● Schritt 2: Sortierung der Knoten einer Schicht ● Schritt 3: Positionierung der Knoten (X/Y) ● Schritt 4: Bögen und Beschriftungen ● Schlussbemerkungen
3
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 3 Einleitung Vorgestellt wird von dot verwendeter Algorithmus zum Graphen zeichnen zweidimensionale graphische Darstellung gerichteter Graphen in der Ebene
4
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 4 Motivation
5
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 5 Motivation Wofür ein Algorithmus zur Visualisierung gerichteter Graphen? ● besseres Verständnis alltäglich auftretender Datenstrukturen ● abstrakte Datenstrukturen schwer verständlich ● viele Datenstrukturen gut als Graphen darstellbar
6
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 6 Beispiele ● Funktionsaufrufgraphen ● Vererbungshierachien ● Benutzungsstrukturen in Programmen ● Verknüpfungsstrukturen von Hypertext ● signaturbeziehungen kryptographischer Schlüssel ● Stammbäume ●...
7
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 7 für Menschen „überschau-barer“ Graph muss strenge Kriterien erfüllen an ● Überschneidungen ● Kantenlänge ● „erkennbare“ Zusammenhänge Probleme Aber: überschneidungsfreie Graphen in Ebene nicht immer möglich! (erst ab 3D) Forderungen widersprechen sich teilweise. ? ? ?
8
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 8 Kriterien für „gute“ Graphen Algorithmus für Zeichnen gerichteter Graphen Forderungen: ● Hervorhebung vorhandener Flussrichtung der Bögen im Graphen ● Darstellung von Zusammenhängen, Vermeidung langer Kanten ● Hervorhebung / Zusammenfassung von Substrukturen ● gleichmäßiges und symmetrisches Layout
9
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 9 Prinzip
10
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 10 Herausforderungen „Optimales Layout“ zu schwierig: viele Teilprobleme wie globale Bogenlängenminimierung mit exponentieller Komplexität! Abhilfe: ● Konzentration / Spezialisierung auf bestimmte Graphenklassen ● Verwendung geeigneter Heuristiken, keine optimale aber gute Lösung, wenig Rechenaufwand
11
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 11 Ansatz Optimierung des Algorithmus für ● annähernd hierarchische ● gerichtete Graphen ● mit einer „Hauptflussrichtung“ der Bögen. viele Graphen erfüllen Kriterien! (z.B. alle genannten Beispiele bis auf Signaturbeziehungen)
12
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 12
13
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 13 Eingabe - 1 ● alle Knoten mit Bezeichnungen („1“, „2“,...) ● Bögen zwischen Knoten („1“„2“, „3“„1“) ● Benutzer kann Mengen von Knoten vorgeben, die auf eine Schicht sollen („S“-Mengen) digraph "callgraph" { F83bc040 [label="htReceive\n 675 484"]; F83bea40 [label="copyRequestLine\n 188 723"]; F83bf0a8 [label="htRecvLine\n 484 486"]; F83bfe18 [label="htAddData\n 138 755"]; (...) F83bc040 -> F83bea40 [weight=2,label=" 188 723"]; F83bc040 -> F83bf0a8 [weight=2,label=" 484 486"]; F83bf0a8 -> F83bfe18 [weight=2,label=" 138 755"]; F83bf0a8 -> F83c2558 [weight=2,label=" 104 091"]; (...) } Knoten Bögen (keine „S x “-Mengen abgebildet)
14
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 14 Eingabe - 2 digraph "callgraph" { F83bc040 [label="htReceive\n 675 484"]; F83bea40 [label="copyRequestLine\n 188 723"]; F83bf0a8 [label="htRecvLine\n 484 486"]; F83bfe18 [label="htAddData\n 138 755"]; (...) F83bc040 -> F83bea40 [weight=2,label=" 188 723"]; F83bc040 -> F83bf0a8 [weight=2,label=" 484 486"]; F83bf0a8 -> F83bfe18 [weight=2,label=" 138 755"]; F83bf0a8 -> F83c2558 [weight=2,label=" 104 091"]; (...) }
15
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 15 - Schritt 1 - Zuordnung der Knoten zu Schichten
16
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 16 Schichtung der Knoten Zielkriterien erfüllen, z.B. Vermeidung langer Kanten – Wie? 1 87 6 5 4 3 2 1 8 7 65 432 ≙ Ausgangs-Annahme: annähernd hierarchischer Graph Knoten auf verschiedenen Stufen (untergeordnet / übergeordnet) gute Zuordnung optimiert Kantenlängen!
17
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 17 Vorgehensweise - Schema 1 7 8 2 4 3 9 6 5 S1S1 S2S2 S3S3 S1S1 S2S2 S3S3 ) Schichtung der Knoten zur globalen Kantenlängenminimierung rechnerisch zu aufwändig! erste Vereinfachungen: ● alle Zyklen entfernen ● S x -Menge ⇒ Pseudoknoten S x ● parallele Bögen verschmelzen ● „Schleifchen“ an Knoten ignorieren
18
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 18 Vorgehensweise - NSA Zyklusentfernung durch Umdrehen von Bögen: Funktioniert bei angenommener hierarchischer Grundstruktur nicht viele Zyklen, nicht viel umzudrehen dazu Netzwerk-Simplex-Algorithmus: ● erstelle Gerüst des Graphen ● ersetze so lange die „schlechtesten“ Kanten durch die „besten Alternativen“, bis Gerüst gewisses Gütekriterium erfüllt Welches?
19
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 19 Netzwerk Simplex Algorithmus Gütekriterium für eine Kante: Stutzwert ● Bogen mit schlechtesten Stutzwert suchen ● durch Bogen mit möglichst großem Stutzwert ersetzen ● wiederholen, solange möglich 1 8 76 543 2 3 3 3 3 0 0 ! ) 1 8 7 65 432 2 2 2 2 0 1 1
20
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 20 - Schritt 2 - Sortierung der Knoten einer Schicht
21
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 21 Sortierung der Knoten ● nach Schichtung der Knoten Bogenlängen festgelegt ● kreuzende Kanten von Reihenfolge der Knoten in den Schichten bestimmt Suche nach sinnvoller Sortierung 1 8 7 65 432 1 8 7 65 432 ≙
22
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 22 Sortierung Prinzip Suche einer optimalen Sortierung NP-vollständig Graphen vereinfachen zusätzliche Heuristiken verwenden Vorgehensweise: ● Graph vereinfachen (Schleifen ignorieren,...) ● Anfangssortierung bestimmen ● Sortierung schrittweise verbessern
23
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 23 Sortierung verbessern Knotenreihenfolge abhängig von der Position der Elternknoten in der vorherigen Schicht: ● Elternknoten-abhängige Gewichtung für jeden Knoten berechnen ● Knoten abhängig von der Gewichtung sortieren ● Knoten mit Nachbarn vertauschen, falls besser
24
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 24 Gewichtung der Knoten 1 Mögliche Gewichtungen für Knoten: ● Barycenter-Methode Durchschnittswert der Positionen der Eltern ● Median-Methode Median der Positionen der Eltern Median-Methode in Praxis besser auch theoretischer Vorteil: Median-Methode max. dreimal schlechter als Optimallösung, bei Barycenter unbekannt
25
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 25 Gewichtung der Knoten 2
26
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 26 - Schritt 3 - Positionierung der Knoten (X/Y)
27
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 27 X/Y-Positionierung ● in älteren Algorithmen in den vorhergehenden Schritt integriert ● Realisierung als eigener Schritt erlaubt mehr Flexibilität ● Problemstellung: gewichtetes x der Bögen minimieren ( ⇒ gerade Bögen) ● Platzbedarf quadratisch in Anzahl der Bögen
28
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 28 X/Y: Algorithmus Versuch 1 naheliegender Ansatz: ● Spezial-Heuristiken zur guten Knotenpositionierung suchen ● effizient, aber Ergebnis nicht zufriedenstellend: Erkennung zusammengehörender Bereiche / Subgraphen mangelhaft ● gegenseitige Beeinflussung der verwendeten Heuristiken ⇒ Feineinstellung schwierig
29
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 29 X/Y: Algorithmus Lösung Subgrapherkennung / -verschiebung ähnlich zu NSA- Vorgehensweise bei Schichtung! x-Koordinaten ⇒ Schichtung in x-Richtung bereits gelöstes Problem Realisierung über Hilfsgraphkonstruktion
30
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 30 - Schritt 4 - Bögen und Beschriftungen
31
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 31 Konstruktion der Bögen 1 ● Darstellung der Bögen als Splines ● möglichst gleichmäßige Spline-Führung ● bestmögliche Platzausnutzung
32
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 32 Konstruktion der Bögen 2
33
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 33 Konstruktion der Bögen 3
34
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 34 Bogenbeschriftungen Probleme mit Bogenbeschriftungen: ● werden oft mitten auf dem Bogen platziert (einfach) ● überdecken dabei oft wichtige Informationen (Murphy) ● liegen evtl. bei mehreren Bögen Zuordnung schwierig für Betrachter Lösungsansatz: Betrachte Beschriftungen als unsichtbare Knoten!
35
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 35 Schlussbemerkungen
36
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 36 Schlussbemerkungen ● dot verfolgt interessante und einige 1993 ganz neue Ansätze zum Graphen zeichnen (NSA für Schichtung und x-Koordinaten, Bogenberechnung, etc...) ● wenig Rechenzeit und gute Ergebnisse! ● erfolgreiches Verfahren: erfüllt nicht DFSG aber ist Standardtool für Graphenzeichnen bei OpenSource Software z.B. verwendet durch kCachegrind, Doxygen,... ● Google: „GraphViz“ 73.000 Treffer
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.