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)
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
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
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 4 Motivation
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
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 ●...
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. ? ? ?
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
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 9 Prinzip
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
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)
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 12
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 "]; F83bea40 [label="copyRequestLine\n "]; F83bf0a8 [label="htRecvLine\n "]; F83bfe18 [label="htAddData\n "]; (...) F83bc040 -> F83bea40 [weight=2,label=" "]; F83bc040 -> F83bf0a8 [weight=2,label=" "]; F83bf0a8 -> F83bfe18 [weight=2,label=" "]; F83bf0a8 -> F83c2558 [weight=2,label=" "]; (...) } Knoten Bögen (keine „S x “-Mengen abgebildet)
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 14 Eingabe - 2 digraph "callgraph" { F83bc040 [label="htReceive\n "]; F83bea40 [label="copyRequestLine\n "]; F83bf0a8 [label="htRecvLine\n "]; F83bfe18 [label="htAddData\n "]; (...) F83bc040 -> F83bea40 [weight=2,label=" "]; F83bc040 -> F83bf0a8 [weight=2,label=" "]; F83bf0a8 -> F83bfe18 [weight=2,label=" "]; F83bf0a8 -> F83c2558 [weight=2,label=" "]; (...) }
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 15 - Schritt 1 - Zuordnung der Knoten zu Schichten
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? ≙ Ausgangs-Annahme: annähernd hierarchischer Graph Knoten auf verschiedenen Stufen (untergeordnet / übergeordnet) gute Zuordnung optimiert Kantenlängen!
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 17 Vorgehensweise - Schema 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
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?
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 ! )
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 20 - Schritt 2 - Sortierung der Knoten einer Schicht
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 ≙
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
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
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
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 25 Gewichtung der Knoten 2
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 26 - Schritt 3 - Positionierung der Knoten (X/Y)
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
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
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
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 30 - Schritt 4 - Bögen und Beschriftungen
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
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 32 Konstruktion der Bögen 2
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 33 Konstruktion der Bögen 3
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!
Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter GraphenGunter Ohrner VGG 35 Schlussbemerkungen
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“ Treffer