Compound Graphen und hierarchisches Layout

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