Methoden zur Visualisierung semi-hierarchischer Graphen Projektgruppe Intelligente Datenbanken Leyla Didem Yesilirmak 22.07.2003 Überblick 1. Einführung 2. Abhängigkeitsgraph 2.1. Darstellung von Relationen als Knoten 2.2. Darstellung von Abhängigkeiten als Kanten 3. Visualisieren des Abhängigkeitsgraphen 3.1 Reduzierung von Kantenüberschneidungen 3.2 Berechnung der x-Positionen von Knoten 3.3 Berechnung der y-Positionen von Knoten 3.4 Berechnung der Stützpunktkoordinaten für Bezierkurven 3.5 Reduzierung von Überschneidungen zwischen Kanten und Knoten 3.6 Platzierung von Beschriftungen 4. Verfahren von Sugiyama 5. Zusammenfassung 2 1. Einführung Wie kommt der Abhängigkeitsgraph zustande? Regelmenge: p hängt von q und r ab p (X,Y) ← q (X,Y) , r (X,Y). q (X,Y) ← s (X,Y,Z). r (Y,X) ← t (X,Y), not w (Y). p zugehöriger Abhängigkeitsgraph : abgeleitet Relation Schicht 2 q r Schicht 1 not Basisrelation s t w Schicht 0 3 1.Einführung Motivation Graphen mit weniger als zehn Knoten lassen sich relativ einfach von Hand zeichnen. Falls jedoch größere Graphen mit hundert oder mehr Knoten visualisiert werden sollen, so ist dies nur automatisiert möglich. Im allgemeinen kann man unendlich viele verschiedene Layouts für einen gegebenen Graphen G finden. Aber welche Darstellung ist optimal, in Bezug auf Übersichtlichkeit und Verständnis des Graphen ? 4 1. Einführung Zwei Arten von Bedingungen 1. formale Kriterien (müssen erfüllt sein) - Darstellungsform des Graphen - geometrische Darstellung von Kanten - Lage der Knoten 2. ästhetische Kriterien (können nicht immer erfüllt werden ) - minimale Anzahl an Kantenüberschneidungen - Überschneidungsfreiheit von Kanten und Knoten - kleinste, gleichmäßige Kantenlängen, minimale Summe aller Kantenlängen - maximale Knotenresolution - große Winkelauflösung, usw. 5 1. Einführung Nicht alle diese Kriterien können gleichzeitig erfüllt werden, da einige von ihnen im Konflikt mit den anderen stehen. Zum Beispiel: 3 4 3 4 4 3 1 2 1 2 1 2 6 2. Abhängigkeitsgraph gerichteter Graph, in dem Abhängigkeiten dargestellt werden gerichtete Kanten → Abhängigkeiten Knoten → Relationen i. a. nicht azyklisch semihierarchisch Existenz von Kantenüberschneidungen Existenz von Überschneidungen zwischen Kanten und Knoten symmetrisch 7 2.1 Darstellung von Relationen als Knoten - globale und lokale Relationen werden als Knoten des Graphen gezeichnet - Zur Unterscheidung: z.B. verschiedene Farbtöne oder Formen verwendbar - Der Name der entsprechenden Relation könnte z.B. im Knoten stehen - Die Knoten des Abhängigkeitsgraphen werden eindeutig in Schichten eingeordnet. 8 2.2 Darstellung von Abhängigkeiten als Kanten Mögliche graphische Darstellung von Abhängigkeiten, z.B. : gerichtete Kanten, Bezierkurven, Kreisbogen Unterscheidung von drei verschiedenen Abhängigkeiten 1. Abhängigkeiten zwischen Knoten verschiedener Schichten (mögliche Darstellung: gerade Linie) i+1 i i-1 9 2.2 Darstellung von Abhängigkeiten als Kanten 2. Abhängigkeiten zwischen Knoten derselben Schicht, jedoch nicht eines Knotens von sich selbst (mögliche Darstellung: quadratische Bezierkurve) i+1 i 3. Abhängigkeit eines Knotens von sich selbst (mögliche Darstellung: gerichteter Kreisbogen) 10 3. Visualisieren des Abhängigkeitsgraphen Mögliche Probleme, die beim Visualisieren eines Abhängigkeitsgraphen auftauchen können: - - Kantenüberschneidungen, die den Graphen unübersichtlich machen Welche x- und y-Positionen sollen welchen Knoten zugewiesen werden? Wie kann man Überschneidungen von Bezierkurven vermeiden? Überschneidungen zwischen Kanten und Knoten 11 3.1 Reduzierung der Kantenüberschneidungen Mögliche Typen von Kantenüberschneidungen : 1. Überschneidungen zweier Kanten, die Abhängigkeiten zwischen benachbarten Schichten darstellen. i+1 i i-1 12 3.1 Reduzierung der Kantenüberschneidungen 2. Überschneidung einer beliebigen Kante mit einer Kante, die eine Abhängigkeit zwischen nicht-benachbarten Schichten darstellt. i+1 i i-1 13 3.1 Reduzierung der Kantenüberschneidungen 3. Überschneidungen beliebiger Kanten mit einer Kreisbogen-Kante i+1 i i-1 14 3.1 Reduzierung der Kantenüberschneidungen 4. Überschneidungen beliebiger Kanten mit Bezierkurven i+1 i i-1 15 3.1 Reduzierung der Kantenüberschneidungen Eines der Kriterien, die ein Graph zur Übersichtlichkeit und Verständlichkeit erfüllen sollte, ist Planarität. Leider ist dies nicht immer möglich. Das Problem, zu einem gegebenen Graphen G ein Layout mit minimaler Anzahl von Kantenüberschneidungen zu finden, ist NP-hart. Bis heute ist kein Algorithmus bekannt, dass zu diesem Problem eine Lösung in polynomieller Laufzeit berechnet. Man versucht daher, die Kantenüberschneidungen so gut es geht zu reduzieren. 16 3.1 Reduzierung der Kantenüberschneidungen Mögliche Lösungsansätze Man kann Knoten innerhalb einer Schicht so lange verschieben, bis eine reduzierte Anzahl von Überschneidungen erreicht wird. Dabei ist es wichtig die Anzahl der Überschneidungen vor und nach der Verschiebung anzusehen, um dann entscheiden zu können, ob eine Verbesserung eingetreten ist. Folgende Formel hilft bei der Überschneidungsuche 17 3.1 Reduzierung der Kantenüberschneidungen - Kantenüberschneidung liegt genau dann vor, wenn (p.x < v.x and q.x > w.x) or (p.x > v.x and q.x < w.x) y w q p v x p.x w.x q.x v.x 18 3.1 Reduzierung der Kantenüberschneidungen Kantenüberschneidung liegt genau dann vor, wenn (p.x < v.x and q.x > w.x) or (p.x > v.x and q.x < w.x) y q p w v x p.x v.x q.x w.x 19 3.2 Berechnung der x-Positionen von Knoten Problem: Jedem Knoten müssen x- und y-Koordinaten zugewiesen werden, damit man sie (graphische Objekte) auf dem Bildschirm darstellen kann. Aber wie könnte man dies tun ? Wir wollen einen Graphen symmetrisch bzgl. einer durch die Mitte verlaufenden imaginären Gerade zeichnen. Idee: Man bestimmt die Breite aller Schichten, um die Breite des Graphen bestimmen zu können. Man legt fest, durch welche x-Koordinate die imaginäre Gerade geht, um dann die x-Koordinaten der Knoten von ihr abhängig zu wählen. 20 3.2 Berechnung der x-Positionen von Knoten Um die Breite einer Schicht k zu berechnen, braucht man die Breiten der umgebenden Rechtecke aller Knoten in der Schicht k und eine konstante Größe, die den horizontalen Abstand zwischen den zu zeichnenden Knoten angibt. p q r not s t w Breite der Schicht 0 = Breite des Graphen 21 3.3 Berechnung der y-Positionen von Knoten - - - Berechnung der Höhen einzelner Schichten und des gesamten Graphen Die Höhe einer Schicht hängt dabei ab - von der Höhe der z.B. umgebenden Rechtecke oder Kreise der Knoten - von der Anzahl jener Abhängigkeiten, die in Form von Bezierkurven dargestellt werden Dann: y-Koordinaten der Schicht 0 = Höhe des gesamten Graphen Für Schicht i wird die Höhe der Schicht i-1 und der Abstand zwischen den beiden Schichten vom aktuellen y-Wert abgezogen 22 3.3 Berechnung der y-Positionen von Knoten Ein Beispiel - y-Koordinaten der Schicht 0 = Höhe des gesamten Graphen = s.y - Für Schicht i wird die Höhe der Schicht i-1 und der Abstand zwischen den beiden Schichten vom aktuellen y-Wert abgezogen z.B. x (0,0) i=2 p.y v p q.y q Schicht 2 r Schicht 1 not s.y s y t w Schicht 0 23 3.4 Berechnung der Stützpunktkoordinaten für Bezierkurven Abhängigkeit zwischen zwei Relationen p und q, die zur selben Schicht gehören, werden durch höchstens zwei gegeneinander gerichtete Bezierkurven dargestellt. p q Man braucht drei Stützpunkte für Bezierkurven Als zwei der drei benötigten Stützpunkte werden die Koordinaten der Knoten p und q verwendet. Der dritte Stützpunkt wird folgendermaßen ermittelt: die x-Koordinate des Mittelpunktes auf der imaginären geraden Linie, die p und q verbindet, kann als x-Koordinate des dritten Stützpunktes verwendet werden: c.x = (p.x + q.x) / 2 Achtung : Überschneidung ! 24 3.4 Berechnung der Stützpunktkoordinaten für Bezierkurven Problem: unkontrollierte Darstellung Schon bei so wenigen Kanten verliert man den Überblick. p q r s 25 3.4 Berechnung der Stützpunktkoordinaten für Bezierkurven Lösungsidee: - Für jeden Knoten einer Schicht werden zuerst alle ausgehenden Bezierkanten von p ihrer Länge nach sortiert - Für jede Bezierkurve wird eine Größe Δy ermittelt. Δy gibt den vertikalen Abstand des dritten Kontrollpunktes von den beiden Endknoten der Kante an, die gleiche y-Positionen haben müssen. - Wert von Δy positiv, falls die Kurve von links nach rechts verläuft; sonst negativ Ziel der Berechnung: Kleinere vertikale Abstände des dritten Stützpunktes von den Endpunkten werden den Kanten mit kleinerer Länge zugeordnet. Hier werden nur Kanten, die in dieselbe Richtung verlaufen, betrachtet. 26 3.4 Berechnung der Stützpunktkoordinaten für Bezierkurven p r q s Unkontrollierte Darstellung p q r s Kontrollierte Darstellung 27 3.5 Reduzierung der Überschneidungen zwischen Kanten und Knoten Problem i+1 i i-1 Lösungsmöglichkeiten - Horizontale Verschiebung der „störenden“ Knoten - Verschieben der „störenden“ Kanten 28 3.5 Reduzierung der Überschneidungen zwischen Kanten und Knoten Verschieben der „störenden“ Knoten Idee - - - Für jede Kante e werden alle Knoten betrachtet, die zwischen den Schichten liegen, zu denen der Anfangs- und Endknoten von e gehören wird ein Knoten gefunden, der die aktuelle Kante „stört“ , so wird er solange samt der an ihm haftenden Kanten horizontal verschoben, bis diese Kante und der Knoten sich nicht mehr überschneiden Die Knoten sollen möglichst gleichmäßig nach links und rechts verschoben werden, dazu ermittelt man , wo sich der Knoten bzgl. der durch die Mitte des Graphen verlaufenden imaginären Geraden befindet 29 3.5 Reduzierung der Überschneidungen zwischen Kanten und Knoten Endknoten von e s Knoten dieser Schicht werden betrachtet r p Anfangsknoten von e Kante e 30 3.6 Platzierung von Beschriftungen Unter der Beschriftung der Kanten versteht man das Negationszeichen, das an die Kanten platziert werden soll, die eine negative Abhängigkeit zwischen zwei Relationen darstellt. Problem: Wie soll man z.B. das Negationszeichen „ ¬ ” (oder das Minus-Zeichen “-”) an die entsprechende Kante platzieren ? Idee: Beschriftung kann unmittelbar in der Nähe der Kante angebracht werden Aber: Doch wenn es sehr viele dicht aneinander liegende Kanten gibt, würden sich die Beschriftungen überlappen. 31 3.6 Platzierung von Beschriftungen Bessere Idee: Beschriftung kann direkt auf der entsprechenden Kante angebracht werden. Für die Beschriftung kann z.B. ein Rechteck verwendet werden, dessen Diagonalschnittpunkt auf der Kante platziert wird. Das Negationszeichen wird in der Mitte des Beschriftungsrechteckes angebracht. Negative Kanten können etwa durch einen anderen Farbton oder durch Quickinfos gekennzeichnet werden . ¬ ¬ 32 4. Verfahren von Sugiyama Kozo Sugiyma ist ein Professor an der School of Knowledge Science JAIST in Ishikawa, Japan Seit 2000 : Rektor dieser wissenschaftlichen Schule Seit Anfang 80er Jahren beschäftigt er sich mit Problemen des Graph Drawings War für mehr als 23 Jahren – von 1974 bis 1997 - in der wissenschaftlichen Abteilung Firma Fujitsu als Forscher tätig. Seine wissenschaftlichen Interessen haben ihn für die Forschungszwecken sogar nach Europa geführt – er hat zwei Forschungsjahre in der Stadt Laxenburg in Österreich verbracht ( 19821993) Von 1996 bis 1998: Direktor von Information Processing Society of Japan Er ist ein Autor von 3 Büchern. Das dritte Buch "Graph drawing and applications for software and knowledge engineers" ist im Verlag World Scientific 2002 auf Englisch erschienen. Seine Forschungsinteresse gilt bis heute den Graph Drawing Algorithmen 33 für interaktive Visualiserungsschnittstellen. 4. Verfahren von Sugiyama - - 1981 wurde für hierarchische Graphen entwickelt, ist aber auch auf zyklische Graphen anwendbar ist ein sehr verbreitetes Verfahren zur Visualisierung von Graphen Was will man erreichen ? - hierarchischer Graph - gerade verlaufende Linien - miteinander verbundene Knoten liegen dicht zusammen - balancierter Graph 34 4. Verfahren von Sugiyama Besteht aus 3 Phasen: Phase 1: Zuordnung von Knoten zu den Schichten Phase 2: Überschneidungsreduzierung Phase 3: Berechnung der Positionen für alle Knoten 35 4. Verfahren von Sugiyama 8 9 5 6 2 7 3 4 1 36 4. Verfahren von Sugiyama Zuordnung von Knoten zu den Schichten Phase 1 Alle Knoten werden eindeutig einzelnen Schichten zugeordnet - Alle Kanten, die nicht-benachbarte Schichten verbinden, werden so lange auseinander gespalten, bis ihre Teilkanten je zwei Knoten aus benachbarten Schichten verbinden - Einfügen künstlicher Knoten, welche eindeutig den Schichten zuzuordnen sind - Für eine Kante e(v,w) werden (j - i - 1) „Scheinknoten“ kk Schichtk+i , 1 ≤ k ≤ j - i – 1 eingefügt - Aus Kante e(v,w) entstehen ( j - i ) neue Kanten: e(v, k1 ), e(k1,k2) , … , e( kj-i-1 , w) - Alle Kanten fließen in eine Richtung und verbinden benachbarte Schichten - 37 4. Verfahren von Sugiyama Überschneidungsreduzierung Phase 2 - Überschneidungen der Kanten werden reduziert, indem Knoten verschoben oder mit anderen Knoten vertauscht werden Würde man die Überschneidungsreduzierung top-down statt bottomup anwenden, so könnte man in einigen Fällen eine bessere Lösung finden. 4 1 5 2 5 3 Ausgangssituation 1 4 4 2 Bottom-Up 3 1 5 3 Top-Down 2 38 4. Verfahren von Sugiyama Überschneidungsreduzierung Phase 2 Es existieren im wesentlichen zwei Lösungsansätze: a) Bei der ersten Lösung wird die Überschneidungsreduzierung abwechselnd bottom-up und top-down mehrmals angewendet - Auf die Überschneidungen im ganzen Graphen wird geachtet - Wenn sich die Anzahl der Überschneidungen nicht verkleinert ist man fertig b) Bei der zweiten Lösungsvariante wird die Überschneidungsreduzierung mit allen möglichen Permutationen der Schicht 0 gestartet und dann wird die Lösung bottom-up berechnet. - 39 4. Verfahren von Sugiyama Berechnung der Positionen für alle Knoten Phase 3 - - - Koordinaten der Knoten werden berechnet Dazu 2 Verfahren: a) alle polylinienförmige Kanten werden derart gezeichnet, dass sie aus möglichst langen vertikalen Teilstücken bestehen b) eine polylinienförmige Kanten darf höchstens zwei Knicke haben, welche durch eine vertikale Linie verbunden werden. Scheinknoten erhalten eigene Koordinaten und können als Knickpunkte der Kanten angesehen werden Kanten zwischen nicht-benachbarten Schichten werden somit als Polylinien dargestellt 40 4. Verfahren von Sugiyama Bewertung des Algorithmus - schneller als theoretische Ansätze - effektiv - einfach zu implementieren - sehr verbreitet und auch genutzt - gut für viele Graphen, solange nicht allzu viele Verbindungen im Graphen existieren - Ergebnisse sind nicht immer perfekt Folgerung Das Verfahren von Sugiyama ist schnell und effektiv für verschiedene Graphen. Durch Variationen am Algorithmus können auch spezifische Probleme gelöst werden. 41 4. Verfahren von Sugiyama Vorteile des Sugiyama-Verfahrens - - - Algorithmus zur Reduzierung der Überschneidungen zwischen Kanten und Knoten wird nicht mehr benötigt Durch Scheinknoten können solche Überschneidungen nicht mehr auftreten Von der Verschiebung eines Knotens wird stets nur das an diesem Knoten haftende Teilstück der Kante betroffen. Die Position einer Beschriftung muss hierbei nur dann erneut berechnet werden, wenn diese vor der Verschiebung auf diesem Teilstück der Kante angebracht wurde. 42 5. Zusammenfassung Es wurde auf Schwierigkeiten aufmerksam gemacht, die beim Zeichnen des Abhängigkeitsgraphen entstehen können. Mögliche Lösungsansätze wurden vorgestellt. Wir haben gesehen, wie das Verfahren von Sugiyama die Schwierigkeiten, Graphen darzustellen, gelöst hat. 43 Danke für` s Zuhören !! 44