Visualisierung gerichteter Graphen in der Ebene

Werbung
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>
Herunterladen