Hierarchical Graph

Werbung
Hierarchical Graph-Drawing
Eine Technik für das Zeichnen gerichteter
Graphen
Referent: Benjamin Stähr
Autoren des Quelltextes: Gansner, Koutsofios, North, Vo
17.10.05
Hierarchical GD, Benjamin Stähr
1
Inhalt
1. Einführung in das Thema „Zeichnen von
gerichteten Graphen“
2. Ein Überblick über die Technik
3. Optimale Schichtzuweisung
4. Knotenreihenfolge in Schichten
5. Knotenkoordinaten
6. Kanten zeichnen
7. Zusammenfassung und Ausblick
17.10.05
Hierarchical GD, Benjamin Stähr
2
Ästhetische Zeichenkriterien
Hierarchische Struktur hervorheben
Wenn möglich zeigen alle Kanten in die gleiche
allgemeine Richtung

Erleichtert es gerichtete Pfade zu finden
und hebt Quellen und Senken hervor
Q
S
Q
S
17.10.05
Hierarchical GD, Benjamin Stähr
3
Ästhetische Zeichenkriterien
Vermeide optische Anomalien

z.B. Kantenüberschneidungen und
scharfe Knicke in Kanten sind zu
vermeiden
17.10.05
Hierarchical GD, Benjamin Stähr
4
Ästhetische Zeichenkriterien
• Zeichne möglichst kurze Kanten
 Vereinfacht das Finden
verwandter Knoten
 Konform zur Vermeidung optischer
Anomalien
17.10.05
Hierarchical GD, Benjamin Stähr
5
Ästhetische Zeichenkriterien
• Bevorzuge Symmetrie und Balance
 spielt nur sekundäre Rolle
 wird an einigen wenigen Stellen des
vorgestellten Algorithmus verwendet
17.10.05
Hierarchical GD, Benjamin Stähr
6
Ästhetische Zeichenkriterien
Es ist unmöglich alle diese Kriterien
gleichzeitig zu optimieren
Entwurf von schnellen Heuristiken, die in
vielen Fällen gute Layouts produzieren
17.10.05
Hierarchical GD, Benjamin Stähr
7
Problemstellung
• Eingabe ist ein gerichteter Graph G = (V,E)
– Enthält evtl. Kreise und Mehrfachkanten
– o.B.d.A. ist G zusammenhängend
– Die Attribute des Graphen sind:
xsize(v),ysize(v): Größe einer den Knoten
v umgebenden Bounding Box
v
ysize(v)
xsize(v)
17.10.05
Hierarchical GD, Benjamin Stähr
8
Problemstellung
nodesep(G): Minimaler horizontaler Abstand
zwischen zwei Knotenboxen
u
v
nodesep(G)
ranksep(G): Minimaler vertikaler Abstand
zwischen zwei Knotenboxen
w(e):
Kantengewicht der Kante e
17.10.05
Hierarchical GD, Benjamin Stähr
9
Ein Überblick über den Algorithmus
• Jedem Knoten v wird ein Rechteck mit den
Mittelpunktkoordinaten (x(v),y(v)) zugewiesen
• Jeder Kante e wird eine Reihe von B-Spline
Kontrollpunkten (x0(e),y0(e)),...,(xn(e),yn(e))
zugewiesen
• Layout hauptsächlich nach den vier
ästhetischen Zeichenkriterien
17.10.05
Hierarchical GD, Benjamin Stähr
10
Ein Überblick über den Algorithmus
Die vier Phasen des Algorithmus sind:
1. Rank: weist jedem Knoten eine Schicht
im Graphen zu
2. Ordering: setzt die Reihenfolge der
Knoten innerhalb jeder Schicht
3. Position: weist jedem Knoten seine
absoluten Koordinaten zu
4. Make Splines: Zeichnet die Kanten des
Graphen
17.10.05
Hierarchical GD, Benjamin Stähr
11
3. Optimale Schichtzuweisung
• „Rank“ weist jedem Knoten v  G eine
ganzzahlige Schicht  (v) zu
• Hier muss evtl. min. Längenbeschränkung
beachtet werden
17.10.05
Hierarchical GD, Benjamin Stähr
12
Den Graph azyklisch machen
• Für eindeutige Schichtzuweisung muss ein
Graph azyklisch sein
• Azyklisch machen  Kreise brechen durch
temporäre Umkehrung von Kanten
• DFS partitioniert den Graphen in Baumkanten
und Nicht-Baumkanten
• Nicht-Baumkanten in Cross-, Forward- und
Backkanten
• Durch umkehren von Backkanten Graph
kreisfrei
17.10.05
Hierarchical GD, Benjamin Stähr
13
Den Graph azyklisch machen
• Sinnvoll wäre es ein kleines oder minimales
Kantenset umzudrehen
• „Feedback Arc Set“ jedoch leider NP-vollst.
• Lösung: DFS-Heuristik, welche Kanten
umdreht, die in vielen Kreisen enthalten sind
17.10.05
Hierarchical GD, Benjamin Stähr
14
Baumkante
Backkante
Crosskante
Forwardkante
17.10.05
Hierarchical GD, Benjamin Stähr
15
Problem Definition
• Nach Ästhetischen Zeichenkriterien ist ein
Ziel des Algos kurze Kanten zu zeichnen
• Gewünscht also optimale Schichtzuweisung
z.B. mit min. Gesamtkantenlänge
• ILP: min

 (v, w)( ( w)   (v))
( v , w )E
 ( w)   (v)  1
u.d.N.:
•  Gewichtsfkt.
17.10.05
Hierarchical GD, Benjamin Stähr
16
Netzwerk Simplex
• Worstcase-Laufzeit nicht polynomiell, aber in
der Praxis sehr schnell
• Definitionen:
– Feasible: Schichtzuweisung erfüllt die min.
Längenbedingungen
– Slack: Differenz der aktuellen und
minimalen Länge einer Kante
– Tight: Kante deren Slack = 0 ist
17.10.05
Hierarchical GD, Benjamin Stähr
17
Netzwerk Simplex
Erzeugung einer Schichtzuweisung durch einen
Spannbaum des Graphen:
– Wähle Startknoten, weise ihm eine Schicht
zu
– Nachbarknoten erhält den Wert eines
bewerteten Knoten +/- der min. Länge der
sie verbindenden Kante, je nach
Kantenrichtung
– Fortfahren bis alle Knoten eine
Schichtzuweisung haben
17.10.05
Hierarchical GD, Benjamin Stähr
18
Netzwerk Simplex
• Ein Spannbaum ist feasible, wenn seine
Schichtzuweisung feasible ist
• Alle Kanten im eben erzeugten Spannbaum
sind tight
• Der Wert eines „Schnittes“ (bekannt aus EA)
durch den Graphen ist s =
  (u, v)
( u , v ),uQ , vS
2
1
4
17.10.05
1
5
s=6
Hierarchical GD, Benjamin Stähr
19
Netzwerk Simplex
Für jede Spannbaumkante wird der Wert eines
Schnittes ermittelt. Dabei wird die Kante
eleminiert und der Spannbaum bricht dadurch
in Quellen- und Senkenkomponente
17.10.05
Hierarchical GD, Benjamin Stähr
20
Netzwerk Simplex
• Normalerweise impliziert ein negativer Wert
eines Schnittes, dass die gewichtete
Kantenlänge - durch Verlängerung der
Baumkante bis eine der anderen Kanten tight
wird - reduziert werden kann
• Diese wird neue Baumkante
• Dadurch neuer feasible Spannbaum
17.10.05
Hierarchical GD, Benjamin Stähr
21
Netzwerk Simplex
• Baumkanten mit negativen Schnittwerten
werden durch Nicht-Baumkanten ersetzt, bis
die Baumkanten pos. Schnittwerte haben
• Theoretisch wird eine Anti-Zyklen-Technik
benötigt, um endl. Laufzeit zu garantieren
• Der resultierende Spannbaum entspricht
einer opt. Schichtzuweisung
17.10.05
Hierarchical GD, Benjamin Stähr
22
4. Knotenreihenfolge in Rängen
• Kanten zwischen Knoten, die mehr als einen
Rang auseinander liegen werden ersetzt
durch Kantenketten mit jeweils Länge
1,virtuelle Knoten werden hinzugefügt
• Reflexive Kanten werden ignoriert
• Multi-Kanten werden vereinigt
• Es werden Heuristiken benutzt, da bereits für
zwei Schichten minimieren der
Kantenüberschneidungen NP-vollst. Ist
17.10.05
Hierarchical GD, Benjamin Stähr
23
Lösungsschema
• Startsortierungen werden errechnet
• Iterationssequenz um Reihenfolgen zu
verbessern
– Jede Iteration geht von der ersten bis zur
letzten Schicht vor, oder umgekehrt
– Jeder Knoten erhält eine Gewichtung
aufgrund der relativen Position der mit ihm
verbundenen Knoten auf der
vorhergehenden Schicht
– Danach werden die Schichten neu sortiert
17.10.05
Hierarchical GD, Benjamin Stähr
24
Lösungsschema
Populäre Gewichtsfunktionen:
• Barycenter:
– Definiert das Gewicht eines Knoten v als
den Durchschnitt der Ordnungszahlen der
Knoten der letzten Schicht, die mit v
verbunden sind.
• Median:
– Wie Barycenter, allerdings wird der Median
der Ordnungszahlen verwendet.
– Liefert bessere Ergebnisse,
Approximationsfaktor von 3
17.10.05
Hierarchical GD, Benjamin Stähr
25
Lösungsschema
• Hier benutzte Methode basiert auf Median
• Wenn zwei Mediane existieren wird
interpolierter Wert verwendet, der die Seite
mit dichter gepackten Knoten bevorzugt
• Zus. Heuristik für lokales Optimum (20% 50% weniger Kreuzungen)
a
b
b
a
c
d
c
d
17.10.05
Hierarchical GD, Benjamin Stähr
26
5. Knotenkoordinaten
• Jeder Knoten erhält in diesem Schritt x- und
y-Koordinaten
• LP: min  (e) (e) xw  xv
e( v , w)
u.d.N.: xb  xa   (a, b)
dabei:
xsize(a )  xsize(b)
 ( a, b) 
 nodesep(G )
2
• (e) : Interne Gewichtung um das Zeichnen
langer, gerader Kanten zu bevorzugen
17.10.05
Hierarchical GD, Benjamin Stähr
27
Kantentypen
1. Beide Knoten der Kante sind reale Knoten
2. Ein Knoten ist realer, einer virtueller Knoten
3. Beide Knoten sind virtuelle Knoten
Seien e,f,g Kanten der drei Typen, dann gilt:
 ( e)   ( f )   ( g )
17.10.05
Hierarchical GD, Benjamin Stähr
28
Lösung mit Simplex Verfahren
• Resultierendes LP ist total unimodular und
kann daher in einem Schritt per Simplex
gelöst werden
• Transformation bläht den Graphen leider auf
Größe |V| |E| + |E²| auf
 Große Graphen können nicht mehr mit
effizientem Platzbedarf gespeichert werden
17.10.05
Hierarchical GD, Benjamin Stähr
29
Heuristischer Ansatz
Eigentlich Iterationen folgender Heuristiken
2
1. Medianpos: 8
8
3
2. Minedge: ähnlich, nur für reale Knoten
2. Minnode: Lokale Optimierung obiger
Methoden
3. Minpath: Begradigt Ketten
virtueller Knoten
(Spaghetti-Effekt verhindern)
4. Packcut: Zeichnet Knoten möglichst
kompakt
17.10.05
Hierarchical GD, Benjamin Stähr
30
Simplex verbessern
• Heuristik ist leider schwer zu implementieren
und arbeitet oft suboptimal  doch wieder
Simplex
• Idee: Simplex aus 3. wiederverwenden und xKoordinaten als Schichten ansehen
• Dazu muss G in einen Hilfsgraph G‘
transformiert werden
u
u
eu
e
e
v
17.10.05
w
ev
e(v,w)
v
Hierarchical GD, Benjamin Stähr
w
31
Simplex verbessern
• Optimale Lösung für G‘ induziert optimale
Lösung für G
• Es sind Verbesserungen möglich, die den
Simplex um ca. 500 bis 1000%
beschleunigen
• Damit schneller als heuristische Lösung
17.10.05
Hierarchical GD, Benjamin Stähr
32
Weiterführende Techniken
Neuerer Algorithmus nach Buchheim, Jünger
und Leipert (1999)
• Verhindert spätere Bildung eines SpaghettiEffekts in den Kanten
• Möglich dadurch, dass jede Kante nur zwei
Knicke hat und dazwischen vertikal verläuft
• Lösungsansätze heuristisch und mit Simplex
möglich, den hier vorgestellten Ansätzen
recht ähnlich
17.10.05
Hierarchical GD, Benjamin Stähr
33
6. Kanten zeichnen
• Kanten zwischen Knoten werden am
einfachsten durch jeweils alle virtuellen
Knoten gezeichnet
• Nachteil: Übersichtlichkeit leidet etwas, Graph
ist optisch nicht perfekt
• Lösung: Verwendung von Splines
17.10.05
Hierarchical GD, Benjamin Stähr
34
Berechnung von Splines
p0
B5
BB5
p1
p2
17.10.05
Hierarchical GD, Benjamin Stähr
35
7. Zusammenfassung und Ausblick
• Der vorgestellte Algorithmus ist klar
strukturiert und programmiertechnisch gut
umsetzbar
• Sowohl Laufzeit als auch Zeichenergebnis
sind zufriedenstellend
• Splines müssten nicht benutzt werden, wenn
ein anderer Ansatz zur Berechnung der x,yKoordinaten gewählt würde
• Evtl. wäre „Kommunikation“ zwischen den
einzelnen Schritten wünschenswert um
Ergebnis zu verbessern
17.10.05
Hierarchical GD, Benjamin Stähr
36
Herunterladen