27.10.2005pg 478 - ogdf: an open graph drawing framework - uni dortmund1 compound graphen und...
TRANSCRIPT
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 1
Compound Graphen und
hierarchisches Layout
Basierend auf
Sander, G.: Layout Of Compound Directed Graphs
Technical Report A/03/96
Hendrik Stroh
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 2
Compound-Graphen
Zusammenfassung von Knoten Semantische Gruppierung Verallgemeinerter Cluster-Graph
Compounds können Start- und/oder Endpunkte von Kanten sein
Anwendungen UML-Diagramme Kontrollflussdiagramme Schaltpläne
Compound 1
Compound 1.2
C. 1.2.1
Compound 1.1C. 1.1.2
C. 1.1.1
D
A
B
C
G
E
F
H
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 3
Compound-Graph C‘=(G, T)
Gerichteter Graph G = (B υ C, EG) Kanten zwischen „base nodes“ B und Compounds C
E
G
F
H C. 1.2
C. 1.1
C. 1.2.1
D
C. 1.1.1
B A
C
C. 1.1.2 C. 1
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 4
Compound-Graph C‘=(G, T)
„nesting tree“ T = (B υ C, ET) Blätter: „base nodes“ B Innere Knoten: Compounds C Kanten: Inklusionsrelation ET
v gehört zu u, gdw. ein Weg u + v existiert
C. 1
C. 1.1 C. 1.2
C. 1.1.1 C. 1.1.2 C. 1.2.1
C
D G H
BA E F
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 5
Layout von Compound Graphen
Ziel: Compound-Graphen unter Einhaltung folgender Konventionen zeichnen Kreuzungen jeglicher Art sollten möglichst
vermieden werden Kanten sollten möglichst wenige Knicke haben Kanten sollten möglichst einheitlich gerichtet sein Überlappungen jeglicher Art sind nicht erlaubt Ein Compound u darf nur die Elemente, die zu u
gehören, enthalten
Hier: Auf Schichten basierendes Layout-Verfahren
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 6
Lokale vs. Globale Schichtzuweisung Lokale Schichtzuweisung
Jedes Compound bekommt eigene Schichten Jedes Compound ist genau einer Schicht
zugewiesen Wenige Knoten pro Schicht Algorithmus von
Sugiyama/Misue (1991)
z
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 7
Lokale vs. Globale Schichtzuweisung Globale Schichtzuweisung
Eine Schichtmenge für alle Knoten Compounds können über mehrere Schichten gehen Kompakter, da weniger Schichten mit mehr Knoten Algorithmus von Sander (1996)
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 8
Phasen des Verfahrens von Sander1. Schichtzuweisung
Zuordnung der Knoten zu Schichten, y-Koordinaten
2. Produktion von Dummy-Knoten Lange Kanten durch Folgen von Dummy-Knoten
und kurzen Kanten ersetzen
3. Kreuzungsminimierung Umordnung der Knoten innerhalb der Schichten,
so dass möglichst wenige Kreuzungen bestehen
4. Positionierung von Knoten und Kanten Berechnung absoluter Koordinaten
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 9
Schichtzuweisung
Ränge R(v) für alle Knoten berechnen Rang gibt die Schichtzugehörigkeit an Knoten einer Schicht haben gleiche y-Koordinate
2
1
i
...
...
...
n
...
...
...
R(v)=i
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 10
Schichtzuweisung
Compound u hat obere Grenze mit Rang Rmin(u) und untere Grenze mit Rang Rmax(u)
Ziel: „legal rank assignment“ Rmin(a) < Rmax(a)
Rmin(a) < R(v) < Rmax(a)
Rmin(a) < Rmin(b) < Rmax(b) < Rmax(b)Rmin(a)
Rmin(b)
R(v)
Rmax(b)Rmax(a)
ab
v
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 11
Schichtzuweisung
„border nodes“ u(-) und u(+) für alle Compounds u Rmin(u) = R(u(-)) und Rmax(u) = R(u(+))
ab
cd
ef
} 2k
b(+)
b(-)
2(2k+1)
2k+1
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 12
Schichtzuweisung
„nesting graph“ Zwei Kopien des „nesting tree“ T „border nodes“ u(-) in oberer Kopie, u(+) in unterer
Kopie Kanten in unterer Kopie werden umgekehrt „nesting edges“
a
b c d
e
f
g
...
...
...
c d e f gba ... ... ...
r(-)
r(+)
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 13
Schichtzuweisung
Durchlauf in topologischer Reihenfolge mit Rangberechnung ergibt gültige Rangzuordnung R(v) = max{R(w) | w є pred(v)} + 1
Gilt auch, wenn Kanten hinzugefügt werden, die keine Kreise produzieren
a
b c d
e
f
g
...
...
...
c d e f gba ... ... ...
r(-)
r(+)
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 14
a
b c d
e
f
g
...
...
...
a c d e f gb ... ... ...
r(-)
r(+)
Schichtzuweisung
„extended nesting graph“ Alle Kanten e є EG, die keine Kreise produzieren,
zum „nesting graph“ hinzufügen
Nun Top-Down-Durchlauf mit Rangberechnung Die Quelle r(-) hat den Rang 1
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 15
Schichtzuweisung
Korrektur der Ränge oberer „border nodes“
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 16
Produktion von Dummy-Knoten
Ziel: „proper hierarchy“ Lange Kanten werden in Folgen von
Kantensegmenten und Dummy-Knoten zerlegt Ausgangspunkt: „extended nesting graph“
... ... ...
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 17
Produktion von Dummy-Knoten
„nesting edges“ entfernen Für alle Kanten ist ersichtlich, zwischen
welchen Schichten sie verlaufen
... ... ...
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 18
Produktion von Dummy-Knoten
Kanten e є EG, die Kreise produziert hätten, zum Graphen hinzufügen Auswahl geeigneter Begrenzungslinien als
Endpunkte von Kanten Kanten sollten möglichst einheitlich gerichtet
sein
Kanten, die gegen die einheitliche Richtung verlaufen, werden temporär umgedreht
u1
u2
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 19
Produktion von Dummy-Knoten
Nun lange Kanten zerlegen Spannweite jeder Kante (v,w) ist R(w) - R(v) = 1
Dummy-Knoten zum „nesting tree“ T hinzufügen „border nodes“ u(-) und u(+) sowie Kanten (u,u(-))
und (u,u(+)) zu T hinzufügen
Für Dummy-Knoten, die zu einer Kante (w1,w2) gehören, gibt es zwei Strategien Kreuzungen zw. Kanten und Rechtecken
vermeiden
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 20
Produktion von Dummy-Knoten
Strategie 1:Kanten (w1,w2) verlaufen bevorzugt außerhalb von Compounds
...
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 21
Produktion von Dummy-Knoten
Strategie 2:Kanten (w1,w2) verlaufen bevorzugt innerhalb von Compounds
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 22
Kreuzungsminimierung
Ausgangspunkt: „proper hierarchy“ „base nodes“, „border nodes“, normale Dummies Jeder Knoten v hat relative Position P(v) in seiner
Schicht und gehört zu einem Compound u Alle Kantensegmente zeigen abwärts mit
Spannweite 1
Umordnung der Knoten mit Barycenter-Werten Arithmetisches Mittel der Position aller Vorgänger
(Top Down) bzw. Nachfolger (Bottom Up) Ergibt bessere P(v)-Werte weniger Kreuzungen Aber: Spezielle Regeln für Compound-Graphen
werden missachtet
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 23
Kreuzungsminimierung
Regel 1: Knoten eines Compound mit gleichem Rang müssen in ununterbrochener Folge innerhalb der Schicht angeordnet werden
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 24
Kreuzungsminimierung
Regel 2: Compounds dürfen nicht verflochten werden
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 25
Kreuzungsminimierung
Trotz Missachtung der Regeln ist die Barycenter-Methode ein guter Ausgangspunkt
1 2 3 3 5 5,5 6
12 Kreuzungen 2 Kreuzungen
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 26
Kreuzungsminimierung
In Folge werden die Knoten entsprechend der Regeln innerhalb der Schichten umgeordnet Richtwert für die Position eines Compounds u ist
die mittlere Position seiner Knoten „complete average position“ P*(u)
Mittlere Position aller Blätter des Compounds u
„average position“ für Schicht i P*i(u) Mittlere Position aller Blätter von u mit Rang i
Idee: Wenn P*i(u1) < P*i(u2), dann ist zu erwarten, dass viele zu u1 gehörende Knoten links von zu u2 gehörenden positioniert sind
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 27
Kreuzungsminimierung
Markierung des „nesting tree“ T Für alle inneren Knoten u wird P*i(u) und die
Anzahl Ni(u) von Blättern, die zu u gehören und Rang i haben, gespeichert
Für Blätter v gilt: P*i(v) = P(v) und Ni(v)=1
Schichten werden unabhängig voneinander betrachtet „reduced nesting tree“ Ti
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 28
Kreuzungsminimierung
„reduced nesting tree“ Ti Enthält nur Blätter v mit Rang i
J K
HG I
E FDCBA
11 6
2 7 10
1 8 9 3 5 4
P*=6N=3
P*=4N=3
P*=5,4N=9
P*=6N=11
J K
H I
E FD
A F E K H CG D B I J
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 29
Kreuzungsminimierung
Durchlauf, so dass die Kinder jedes inneren Knotens nach P*i(u) sortiert werden
J K
H I
E FDEFD
6 11
7 10
3 4 5 1 8 9
4 6
5,4
11
K K
H I
B CA
G E A B C ID F H K J
G2
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 30
Kreuzungsminimierung
Ergebnis: Innerhalb der Schichten bestehen keine Verflechtungen mehr
Aber: In Bezug auf alle Schichten können Compounds immer noch verflochten sein
Deshalb: „subgraph ordering graph“
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 31
Kreuzungsminimierung
Subgraph ordering graphAusgangssituation
Nesting tree mit „ist links von“-Kanten
......
...
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 32
Kreuzungsminimierung
Topologische Sortierung ergibt Ordnung λO, die angibt, welches Compound links von anderen ist
Bei Verflechtungen bestehen Kreise und der Graph kann nicht topologisch sortiert werden
Kreise am Knoten mit kleinstem P*(w) auflösen
Subgraph ordering graph mit P*
1
2,28
1
4
4,75
5,6 7
7
Azykl. subgraph ordering graph mit λO
1
3
2
4
5
6 8
7
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 33
Kreuzungsminimierung
Nun alle Schichten durchlaufen und Knoten innerhalb der Schichten entsprechend λO sortieren
Ergebnis: Compounds sind nicht mehr verflochten
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 34
Positionierung von Knoten & Kanten
left border segments upper border nodes right border segments
lower border nodes
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 35
Positionierung von Knoten & Kanten
27.10.2005 PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund 36
Fragen?