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 CompoundNested 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