An Algorithm for Drawing Compound Graphs

Werbung
PG 478 – Open Graph Drawing Framework
Thema: Compounds & Force-Directed
Francois Bertault & Mirka Miller –
An Algorithm for Drawing Compound Graphs [1999]
Bernd Zey
Übersicht – Worum geht‘s?
1. Einleitung
2. Was sind Cluster-, Compound-, Nested- Graphen?
3. Zeichen-Algorithmus für Compounds
27.10.05
Compounds & Force-Directed – Bernd Zey
1. Einleitung
• Darstellung von Relationen  Graphen
• Grenzen des klassischen Graph-Modells werden
schnell erreicht
 Cluster-, Compound-, Nested-, Hyper- Graphen
27.10.05
Compounds & Force-Directed – Bernd Zey
2
1. Einleitung – Hyper-Graphen
• Hyper-Graphen sind
vielfältig und können
Inklusionen, Schnitte und
Relationen in einem
Diagramm darstellen
B
C
F
D
A
E
G
J
H
I
K
M
L
27.10.05
Compounds & Force-Directed – Bernd Zey
3
1. Einleitung – Cluster-Graphen
• Einteilung von Knoten in Cluster
27.10.05
Compounds & Force-Directed – Bernd Zey
4
1. Einleitung – Compound-Graphen
• Compound = Mittelweg zwischen Cluster und Hyper
• Inklusionen bzw. Hierarchien als auch Relationen
1
3
15 7
2
5
4
6
10
16
13
14
8
11
27.10.05
17
Compounds & Force-Directed – Bernd Zey
5
2. Was ist ein Compound-Graph?
• Wird definiert durch einen Baum und einen (un)gerichteten
Graph
• Baum  Hierarchie
• Graph  Relationen
• Knotenmengen sind identisch, die Kantenmengen
unterscheiden sich
27.10.05
Compounds & Force-Directed – Bernd Zey
6
2. Was ist ein Compound-Graph?
5
6
4
1
2
3
7
15
14
8
11
13
10
17
1
2
3
8
4
5
10
11
6
13
17
14
7
15
16
16
1
3
15 7
2
5
4
6
10
16
13
14
8
11
27.10.05
17
Compounds & Force-Directed – Bernd Zey
7
2. Compound-Graph – alternative Darstellung
1
5
6
4
1
2
3
7
15
2
14
13
8
11
16
10
17
3
8
4
5
10
11
6
13
17
14
7
15
16
1
2
3
8
4
5
10
11
6
13
17
14
7
15
16
27.10.05
Compounds & Force-Directed – Bernd Zey
8
2. Formale Definition eines Compound-Graphen
• Ein Compound-Graph wird definiert durch ein Paar C = (G,T)
mit G ist ein Graph: G = (V,EG)
T ist ein Baum: T = (V,ET,r),
wobei folgende Bedingung erfüllt ist:
(a,b)  EG 
a  Vorfahren(b) und
b  Vorfahren(a)
13
6
13
14
13
6
14
27.10.05
6
Compounds & Force-Directed – Bernd Zey
14
9
2. Formale Definition eines Cluster-Graphen
• Compound-Graph, in dem nur Kanten zwischen Blättern
existieren
• Formal: Ein Cluster-Graph Cl = (G,T) ist ein CompoundGraph mit
 (a,b)  EG : a  Blätter(T) & b  Blätter(T)
27.10.05
Compounds & Force-Directed – Bernd Zey
10
2. Cluster-Graph – Beispiel
2
3
3
5
7
4
6
27.10.05
2
6
8
9
1
11
4
7
8
1
5
11
10
Compounds & Force-Directed – Bernd Zey
9
10
11
3. Zeichen-Algorithmus
• Vielzahl von Algorithmen für Cluster-Graphen
• Beispiel: Cluster Planarization
 SpanningTree, SimpleReinsertion, Reinsertion
(Materialisierung der Cluster, Dualer Graph)
• Ziel: Algorithmus für Compound-Graphen
27.10.05
Compounds & Force-Directed – Bernd Zey
12
3. Zeichen-Algorithmus – Idee
5
6
4
1
2
3
7
15
14
8
11
13
10
17
1
2
3
8
4
5
10
11
6
13
17
14
7
15
16
16
1
3
15 7
2
5
4
6
10
16
13
14
8
11
27.10.05
17
Compounds & Force-Directed – Bernd Zey
13
3. Definition: Nested- Graph
• Nested-Graph = Compound-Graph, in dem Kanten nur
zwischen Geschwistern existieren
• Formal: Ein Nested-Graph N = (G,T) ist ein CompoundGraph mit
 (a,b)  EG : Elter(a) = Elter(b)
27.10.05
Compounds & Force-Directed – Bernd Zey
14
3. Nested- Graph
1
3
15 7
1
2
5
2
4
6
10
16
13
14
8
8
4
5
10
11
6
13
17
14
7
15
16
11
27.10.05
3
17
Compounds & Force-Directed – Bernd Zey
15
3. Algorithmus zum Compound-Zeichnen – NUAGE
• NUAGE ist ein Rahmenalgorithmus
• Zeichenalgorithmen als Unterprogramme
• Idee: Konstruktion eines Nested-Graphen aus dem
Compound-Graphen
27.10.05
Compounds & Force-Directed – Bernd Zey
16
3. Algorithmus – Beschreibung
• Schritt 1: Konstruktion des Nested-Graphen
• Schritt 2: Berechne Positionen und Größe der Knoten
• Schritt 3: Transformation in den Compound-Graphen
• Schritt 4: Zeichnung erstellen
27.10.05
Compounds & Force-Directed – Bernd Zey
17
3. Algorithmus – Schritt 1
Schritt 1: Konstruktion des Nested-Graphen
• Gegeben: Compound-Graph mit Kantenmenge EG
• Gesucht: Nested-Graph mit Kantenmenge EH
Für e = (a,b)  EG :
Wenn Elter(a) = Elter(b)  (a,b)  EH
Ansonsten:
suche Vorfahren a‘,b‘ von a,b mit Elter(a‘) = Elter(b‘)
 (a‘,b‘)  EH
27.10.05
Compounds & Force-Directed – Bernd Zey
18
3. Konstruktion des Nested-Graphen – Beispiel
1
3
15 7
1
2
5
4
2
3
4
5
10
11
6
17
7
6
10
16
13
14
8
13
14
15
8
11
27.10.05
17
Compounds & Force-Directed – Bernd Zey
16
19
3. Algorithmus – Schritt 2
Schritt 2: Berechne Positionen und Größe der Knoten
• Basiert auf den klassischen Graph-Zeichen-Algorithmen
• Jeder Teilgraph wird betrachtet
• Funktionsweise des Algorithmus:
DFS-Durchlauf durch den Baum
27.10.05
Compounds & Force-Directed – Bernd Zey
20
3. Algorithmus – Schritt 2
• Für jeden inneren Knoten v wird der Teilgraph G‘ mit v
als Wurzel betrachtet
• Unteralgorithmus  Größe und Position für jeden Knoten
• Berechne die Größe des Rechtecks, welches G‘ enthält
• Es wird für alle Knoten in G‘ die relative Position
gesetzt
• Nach einem vollständigen DFS wird jedem Knoten seine
absolute Position zugewiesen
27.10.05
Compounds & Force-Directed – Bernd Zey
21
3. Algorithmus – Schritt 2
Eingabe: Nested-Graph,
Größe jedes Blatt-Knotens
Ausgabe: Position und Größe aller Knoten in N
Procedure FLEUR (N)
Begin
relative_position(r);
absolute_position(r,0,0);
End;
27.10.05
Compounds & Force-Directed – Bernd Zey
22
3. Algorithmus – Schritt 2 – Pseudocode
Procedure relative_position(v:node)
Begin
If Kinder(v)   then
begin
For all s  Kinder(v) do
relative_position(s);
H := Teilgraph von G mit v als Wurzel;
Berechne Positionen von Knoten in H mit Hilfe eines
Unteralgorithmus;
Berechne die bounded-box von H;
Setze relative Position von Knoten in H;
end;
End;
27.10.05
Compounds & Force-Directed – Bernd Zey
23
3. Algorithmus – Schritt 2 – Beispiel
2
3
8
4
5
11
9
10
6
7
1
1
2
3 4
6
10 8
2
3
4
8
9
5
10
11
11
6
5
9
7
7
1
27.10.05
Compounds & Force-Directed – Bernd Zey
24
3. Zwischenresultat
• Schritt 1: Compound  Nested
• Schritt 2: Berechne Positionen und Größe der Knoten
• Nun:
Schritt 3: Nested-Graph  Compound-Graph
 Vorgehensweise: Kanten „zurück biegen“
27.10.05
Compounds & Force-Directed – Bernd Zey
25
3. Algorithmus – Schritt 3
3
1
15
3
1
15
4
4
5
8
5
10
8
16
13
10
7
14
11
16
13
7
14
11
PROBLEM!
27.10.05
Compounds & Force-Directed – Bernd Zey
26
3. Algorithmus – Problem
• NUAGE ignoriert Kanten, welche im Schritt
CompoundNested verändert wurden
• Kantenkreuzungen möglich
• Lösungen?
 Kantenlängen minimieren
 Knoten - die Kanten nach „außen“ haben - an den
Rand schieben
27.10.05
Compounds & Force-Directed – Bernd Zey
27
3. Algorithmus – Problemlösung
• Vorgehensweise zur Verbesserung:
• Betrachte Kanten, welche zwischen Knoten mit
unterschiedlichem Elter verlaufen
• force-directed-Algorithmus, welcher die Abstoßungskraft
ignoriert
• Dadurch erhält man den gewünschten Effekt
27.10.05
Compounds & Force-Directed – Bernd Zey
28
3. Algorithmus – Problemlösungs-Beispiel
3
15
1
15
3
4
8
8
5
10
16
11 11
27.10.05
13
7
14
7
13
14
5
Compounds & Force-Directed – Bernd Zey
29
Das war‘s
Literatur:
• Francois Bertault & Mirka Miller – An Algorithm for
Drawing Compound Graphs
27.10.05
Compounds & Force-Directed – Bernd Zey
30
Herunterladen