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
1
Compound-Graphen
Zusammenfassung von Knoten
Semantische Gruppierung
Verallgemeinerter Cluster-Graph
Compound 1
Compound 1.1
C. 1.1.2
B
D
C. 1.1.1
A
Compounds können Start- und/oder
Endpunkte von Kanten sein
Anwendungen
UML-Diagramme
Kontrollflussdiagramme
Schaltpläne
C
Compound 1.2
G
C. 1.2.1
E
F
H
27.10.2005
PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund
2
Compound-Graph C‘=(G, T)
Gerichteter Graph G = (B υ C, EG)
Kanten zwischen „base nodes“ B und Compounds C
G
C. 1.1
E
C. 1.2.1
D
C. 1.1.1
B
A
C. 1.1.2
C. 1
C
F
H
27.10.2005
C. 1.2
PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund
3
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.1.1
A
27.10.2005
C. 1.2
C. 1.1.2
B
D
C
C. 1.2.1
E
G
H
F
PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund
4
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
5
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
6
Lokale vs. Globale Schichtzuweisung
Globale Schichtzuweisung
27.10.2005
Eine Schichtmenge für alle Knoten
Compounds können über mehrere Schichten gehen
Kompakter, da weniger Schichten mit mehr Knoten
Algorithmus von Sander (1996)
PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund
7
Phasen des Verfahrens von Sander
1. 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
27.10.2005
Berechnung absoluter Koordinaten
PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund
8
Schichtzuweisung
Ränge R(v) für alle Knoten berechnen
Rang gibt die Schichtzugehörigkeit an
Knoten einer Schicht haben gleiche y-Koordinate
1
...
...
...
...
...
...
2
i
R(v)=i
n
27.10.2005
PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund
9
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)
R(v)
Rmax(a)
27.10.2005
a
Rmin(b)
b
v
Rmax(b)
PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund
10
Schichtzuweisung
„border nodes“ u(-) und u(+) für alle Compounds u
Rmin(u) = R(u(-)) und Rmax(u) = R(u(+))
a
b
e
f
b(-)
b(+)
c
d
2k+1
}
2k
2(2k+1)
27.10.2005
PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund
11
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“
r(-)
a
b ... c
a
b
...
c
...
d
e
f
...
...
d
g
e
f
27.10.2005
PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund
...
r(+)
g
12
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
r(-)
a
b ... c
a
b
...
c
...
d
e
f
...
...
d
g
e
f
27.10.2005
PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund
...
r(+)
g
13
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
r(-)
a
b ... c
a
b
...
c
...
d
e
f
...
...
d
g
e
f
27.10.2005
PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund
...
r(+)
g
14
Schichtzuweisung
Korrektur der Ränge oberer „border nodes“
27.10.2005
PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund
15
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
...
16
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
...
17
Produktion von Dummy-Knoten
Kanten e є EG, die Kreise produziert hätten, zum
Graphen hinzufügen
u1
Auswahl geeigneter Begrenzungslinien als
Endpunkte von Kanten
Kanten sollten möglichst einheitlich gerichtet
sein
u2
Kanten, die gegen die einheitliche Richtung
verlaufen, werden temporär umgedreht
27.10.2005
PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund
18
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
19
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
20
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
21
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
22
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
23
Kreuzungsminimierung
Regel 2: Compounds dürfen nicht verflochten
werden
27.10.2005
PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund
24
Kreuzungsminimierung
Trotz Missachtung der Regeln ist die BarycenterMethode ein guter Ausgangspunkt
1
12 Kreuzungen
27.10.2005
2
3
3
5
5,5
6
2 Kreuzungen
PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund
25
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
26
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
27
Kreuzungsminimierung
„reduced nesting tree“ Ti
Enthält nur Blätter v mit Rang i
P*=6
N=11
P*=5,4
N=9
P*=6
N=3
A
27.10.2005
P*=4
N=3
J
K
11
6
G
H
I
2
7
10
A
B
C
D
E
F
1
8
9
3
5
4
G
D
F
E
K
H
B
C
I
PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund
J
28
Kreuzungsminimierung
Durchlauf, so dass die Kinder jedes inneren
Knotens nach P*i(u) sortiert werden
11
5,4
G
4
KJ
K
6
11
6
2
G
27.10.2005
D
F
E
D
A
BE
CF
3
4
5
1
8
9
D
F
E
A
B
C
H
I
H
I
7
10
K
PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund
J
29
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
30
Kreuzungsminimierung
...
...
...
Nesting tree mit „ist links von“-Kanten
Ausgangssituation
27.10.2005
Subgraph ordering graph
PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund
31
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
1
4
5,6
7
1
2,28
1
6
5
7
8
3
4,75
Subgraph ordering graph mit P*
27.10.2005
4
7
2
Azykl. subgraph ordering graph mit λO
PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund
32
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
33
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
34
Positionierung von Knoten & Kanten
27.10.2005
PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund
35
Fragen?
27.10.2005
PG 478 - OGDF: An Open Graph Drawing Framework - Uni Dortmund
36