PG 478 – Open Graph Drawing Framework Thema: Compounds & Force-Directed Francois Bertault & Mirka Miller – An Algorithm for Drawing Compound Graphs [1999] Bernd Zey
Compounds & Force-Directed – Bernd Zey 3.Zeichen-Algorithmus für Compounds 1.Einleitung 2.Was sind Cluster-, Compound-, Nested- Graphen? Übersicht – Worum gehts?
Compounds & Force-Directed – Bernd Zey2 Darstellung von Relationen Graphen Grenzen des klassischen Graph-Modells werden schnell erreicht Cluster-, Compound-, Nested-, Hyper- Graphen 1.Einleitung
Compounds & Force-Directed – Bernd Zey3 Hyper-Graphen sind vielfältig und können Inklusionen, Schnitte und Relationen in einem Diagramm darstellen 1.Einleitung – Hyper-Graphen A B C D E F G H I J K L M
Compounds & Force-Directed – Bernd Zey4 1.Einleitung – Cluster-Graphen Einteilung von Knoten in Cluster
Compounds & Force-Directed – Bernd Zey Compound = Mittelweg zwischen Cluster und Hyper 1.Einleitung – Compound-Graphen Inklusionen bzw. Hierarchien als auch Relationen
Compounds & Force-Directed – Bernd Zey6 Wird definiert durch einen Baum und einen (un)gerichteten Graph Baum Hierarchie Knotenmengen sind identisch, die Kantenmengen unterscheiden sich 2.Was ist ein Compound-Graph? Graph Relationen
Compounds & Force-Directed – Bernd Zey Was ist ein Compound-Graph?
Compounds & Force-Directed – Bernd Zey8 2.Compound-Graph – alternative Darstellung
Compounds & Force-Directed – Bernd Zey9 2.Formale Definition eines Compound-Graphen Ein Compound-Graph wird definiert durch ein Paar C = (G,T) mit G ist ein Graph: G = (V,E G ) T ist ein Baum: T = (V,E T,r), wobei folgende Bedingung erfüllt ist: (a,b) E G a Vorfahren(b) und b Vorfahren(a)
Compounds & Force-Directed – Bernd Zey10 Compound-Graph, in dem nur Kanten zwischen Blättern existieren Formal: Ein Cluster-Graph Cl = (G,T) ist ein Compound- Graph mit (a,b) E G : a Blätter(T) & b Blätter(T) 2.Formale Definition eines Cluster-Graphen
Compounds & Force-Directed – Bernd Zey Cluster-Graph – Beispiel
Compounds & Force-Directed – Bernd Zey12 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
Compounds & Force-Directed – Bernd Zey Zeichen-Algorithmus – Idee
Compounds & Force-Directed – Bernd Zey14 3.Definition: Nested- Graph Formal: Ein Nested-Graph N = (G,T) ist ein Compound- Graph mit (a,b) E G : Elter(a) = Elter(b) Nested-Graph = Compound-Graph, in dem Kanten nur zwischen Geschwistern existieren
Compounds & Force-Directed – Bernd Zey Nested- Graph
Compounds & Force-Directed – Bernd Zey16 3.Algorithmus zum Compound-Zeichnen – NUAGE NUAGE ist ein Rahmenalgorithmus Idee: Konstruktion eines Nested-Graphen aus dem Compound-Graphen Zeichenalgorithmen als Unterprogramme
Compounds & Force-Directed – Bernd Zey17 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
Compounds & Force-Directed – Bernd Zey18 Für e = (a,b) E G : Wenn Elter(a) = Elter(b) (a,b) E H Ansonsten: suche Vorfahren a,b von a,b mit Elter(a) = Elter(b) (a,b) E H 3.Algorithmus – Schritt 1 Gegeben: Compound-Graph mit Kantenmenge E G Gesucht: Nested-Graph mit Kantenmenge E H Schritt 1: Konstruktion des Nested-Graphen
Compounds & Force-Directed – Bernd Zey19 3.Konstruktion des Nested-Graphen – Beispiel
Compounds & Force-Directed – Bernd Zey20 3.Algorithmus – Schritt 2 Schritt 2: Berechne Positionen und Größe der Knoten Basiert auf den klassischen Graph-Zeichen-Algorithmen Funktionsweise des Algorithmus: DFS-Durchlauf durch den Baum Jeder Teilgraph wird betrachtet
Compounds & Force-Directed – Bernd Zey21 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 3.Algorithmus – Schritt 2
Compounds & Force-Directed – Bernd Zey22 3.Algorithmus – Schritt 2 Procedure FLEUR (N) Begin relative_position(r); absolute_position(r,0,0); End; Eingabe: Nested-Graph, Größe jedes Blatt-Knotens Ausgabe: Position und Größe aller Knoten in N
Compounds & Force-Directed – Bernd Zey23 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; 3.Algorithmus – Schritt 2 – Pseudocode
Compounds & Force-Directed – Bernd Zey24 3.Algorithmus – Schritt 2 – Beispiel
Compounds & Force-Directed – Bernd Zey25 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
Compounds & Force-Directed – Bernd Zey Algorithmus – Schritt 3 PROBLEM!
Compounds & Force-Directed – Bernd Zey27 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
Compounds & Force-Directed – Bernd Zey28 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
Compounds & Force-Directed – Bernd Zey29 3.Algorithmus – Problemlösungs-Beispiel
Compounds & Force-Directed – Bernd Zey30 Literatur: Francois Bertault & Mirka Miller – An Algorithm for Drawing Compound Graphs Das wars