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 Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> Gliederung VGG 2 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 Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> Einleitung VGG 3 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 Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> VGG 4 Motivation Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> Motivation VGG 5 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 Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> Beispiele VGG 6 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 Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> VGG 7 Probleme für Menschen „überschaubarer“ Graph muss strenge Kriterien erfüllen an ● Überschneidungen ● Kantenlänge ● „erkennbare“ Zusammenhänge ? ?? 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 Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> 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 Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> VGG 9 Prinzip Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> Herausforderungen VGG 10 „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 Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> 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 Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> Struktur Algorithmus VGG 12 vier Stufen: (Motivationen & Details folgen) 1. Zuordnung der Knoten zu diskreten Schichten 2. Sortierung der Knoten innerhalb jeder Schicht 3. genaue Positionierung der Knoten (X/Y) 4. Berechnung der Bögen mehrstufiger Aufbau erlaubt getrennte Betrachtung und Optimierung der Schritte Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> 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"]; (...) } Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter Graphen Knoten Bögen (keine „Sx“-Mengen abgebildet) Gunter Ohrner <gunter _(at)_ ohrner.net> Eingabe - 2 VGG 14 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"]; (...) } Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> VGG 15 - Schritt 1 Zuordnung der Knoten zu Schichten Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> Schichtung der Knoten VGG 16 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! 4 1 3 3 4 2 6 5 7 8 8 7 5 6 1 2 Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> VGG 17 Vorgehensweise - Schema Schichtung der Knoten zur globalen Kantenlängenminimierung rechnerisch zu aufwändig! 2 1 3 S1 4 6 7 erste Vereinfachungen: ● alle Zyklen entfernen ● S -Menge ⇒ Pseudoknoten S x x S2 8 S3 9 5 ) S1 S2 S3 parallele Bögen verschmelzen ● „Schleifchen“ an Knoten ignorieren ● Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> Vorgehensweise - NSA VGG 18 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 Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> 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 1 3 2 3 3 3 Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter Graphen 4 3 6 ! -1 8 4 ) 2 0 1 5 0 0 2 1 2 6 5 2 7 7 3 2 8 Gunter Ohrner <gunter _(at)_ ohrner.net> VGG 20 - Schritt 2 Sortierung der Knoten einer Schicht Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> Sortierung der Knoten VGG 21 nach Schichtung der Knoten Bogenlängen festgelegt ● kreuzende Kanten von Reihenfolge der Knoten in den Schichten bestimmt Suche nach sinnvoller Sortierung ● 1 3 1 4 2 6 5 4 ≙ 7 8 Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter Graphen 3 2 5 6 7 8 Gunter Ohrner <gunter _(at)_ ohrner.net> Sortierung Prinzip VGG 22 Suche einer optimalen Sortierung NPvollstä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 Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> Sortierung verbessern VGG 23 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 Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> 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 Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> VGG 25 Gewichtung der Knoten 2 Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> VGG 26 - Schritt 3 Positionierung der Knoten (X/Y) Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> X/Y-Positionierung VGG 27 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 Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> 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 Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> 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 u bu' b v w ) u' nb bv' Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter Graphen v' ba w' Gunter Ohrner <gunter _(at)_ ohrner.net> VGG 30 - Schritt 4 Bögen und Beschriftungen Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> VGG 31 Konstruktion der Bögen 1 Darstellung der Bögen als Splines ●möglichst gleichmäßige Spline-Führung ●bestmögliche Platzausnutzung ● 1 R1 R2 R3 1 ⋯ ⋯ R1 R2 R3 2 3 2 3 4 5 4 5 6 Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter Graphen 6 Gunter Ohrner <gunter _(at)_ ohrner.net> VGG 32 Konstruktion der Bögen 2 1 1 ⋯ R1 R2 R3 ⋯ R1 R2 R3 2 3 2 3 4 5 4 5 6 Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter Graphen 6 Gunter Ohrner <gunter _(at)_ ohrner.net> VGG 33 BB7 5 4 2 1 ⋯ ⋯ R1 R2 R3 ⋯ 3 BB9 6 Konstruktion der Bögen 3 Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> Bogenbeschriftungen VGG 34 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 Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> VGG 35 Schlussbemerkungen Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter Graphen Gunter Ohrner <gunter _(at)_ ohrner.net> Schlussbemerkungen VGG 36 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 ● Seminar Graph Drawing - Ein Algorithmus für die Visualisierung gerichteter Graphen Gunter Ohrner <gunter _(at)_ ohrner.net>