Zeichnen von Graphen Vorlesungsskript Wintersemester 2015/16 Priv.-Doz. Dr. Frank Gurski Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 2 Vorbemerkungen Auch in diesem Semester gilt: Das Skript soll und kann Ihnen nicht die Teilnahme an den Vorlesungen und Übungen ersparen. Für eine erfolgreiche Teilnahme an der Veranstaltung ,,Zeichnen von Graphen“ müssen Sie zusätzlich an den Vorlesungen und Übungen aktiv teilnehmen. Stand der Änderungen: 5. Januar 2016 Neben dem Vorlesungsstoff enthält das Skript an jedem Kapitelende auch Übungsaufgaben zur Wiederholung des Stoffs und zur Klausurvorbereitung. Bitte melden Sie sich für die Teilnahme an dieser Vorlesung im Online-Vorlesungsverzeichnis (HISLSF) der Universität unter https://lsf.verwaltung.uni-duesseldorf.de/ bis zum 23.10.2015 an. Literaturhinweise Die Bücher [KW01], [BETT99], [NR03], [JM03] und [Tam13] beschäftigen sich mit dem Zeichnen von Graphen. Hinweise auf Originalarbeiten werden im Text gegeben. Inhaltsverzeichnis 1 Grundlagen 1.1 Algorithmen und Effizienz . . . . 1.2 Graphen . . . . . . . . . . . . . . 1.2.1 Definitionen . . . . . . . 1.2.2 Spezielle Graphen . . . . 1.2.3 Darstellung von Graphen . 1.3 Zeichnungen von Graphen . . . . 1.4 Ästhetikkriterien für Zeichnungen 1.5 Problemdefinition . . . . . . . . . 1.6 Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Zeichnen von Bäumen 2.1 Definitionen . . . . . . . . . . . . . . . . . . . 2.2 Zeichnen von Binärbäumen . . . . . . . . . . . 2.2.1 Durchlaufen von Binärbäumen . . . . . 2.2.2 Problemdefinition und Zeitkomplexität 2.2.3 Inorder Zeichnung . . . . . . . . . . . 2.2.4 Linksbündige Zeichnung . . . . . . . . 2.2.5 Teilbaum Zeichnung . . . . . . . . . . 2.2.6 Wetherell-Shannon Algorithmus . . . . 2.2.7 Reingold-Tilford Algorithmus . . . . . 2.2.8 Chans Algorithmus . . . . . . . . . . . 2.2.9 HV-Zeichnungen . . . . . . . . . . . . 2.2.10 H-Zeichnungen . . . . . . . . . . . . . 2.3 Zeichnen von k-nären Bäumen . . . . . . . . . 2.3.1 Algorithmus von Walker . . . . . . . . 2.3.2 Chans Algorithmus . . . . . . . . . . . 2.4 Zeichnen von allgemeinen Wurzelbäumen . . . 2.4.1 RHHV-Zeichnungen . . . . . . . . . . 2.4.2 Inklusionsdiagramme . . . . . . . . . . 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 8 8 10 10 11 16 19 20 . . . . . . . . . . . . . . . . . . 21 21 24 24 26 39 40 41 42 48 54 65 67 68 68 69 69 69 71 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 4 2.5 2.6 2.4.3 Ornigramme . . . . . . . . 2.4.4 Radiale Zeichnungen . . . . Zeichnen von Bäumen ohne Wurzel 2.5.1 Radiale Zeichnungen . . . . Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Hierarchische Zeichenverfahren 3.1 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Entfernen von Kreisen . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Schichteneinordnung . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 Längster-Pfad-Schichtung . . . . . . . . . . . . . . . . . . . . 3.3.2 Schichtung mit fester Breite . . . . . . . . . . . . . . . . . . . 3.3.3 Schichtung mit Minimierung der Anzahl der künstlichen Knoten 3.4 Kreuzungsminimierung . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1 Layer-by-Layer-Sweep Methode . . . . . . . . . . . . . . . . . 3.4.2 Sortiermethoden . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.3 Barycenter und Median Methoden . . . . . . . . . . . . . . . . 3.4.4 Exakte Verfahren zur Kreuzungsminimierung . . . . . . . . . . 3.5 Horizontale Koordinatenzuweisung . . . . . . . . . . . . . . . . . . . 3.5.1 Minimierung der Knickpunkte der Kanten . . . . . . . . . . . . 3.5.2 Vertikale-Kanten Ansatz . . . . . . . . . . . . . . . . . . . . . 3.5.3 Knotenpositionierung mit Prioritätswerten . . . . . . . . . . . . 3.5.4 Kantenpositionierung . . . . . . . . . . . . . . . . . . . . . . . 3.6 Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Kräftebasierte Zeichenverfahren 4.1 Modell . . . . . . . . . . . . . . . . . . . . . 4.2 Algorithmus von Tutte . . . . . . . . . . . . 4.3 Algorithmus von Kamada und Kawai . . . . 4.4 Algorithmus von Eades . . . . . . . . . . . . 4.5 Algorithmus von Fruchterman und Reingold . 4.6 Algorithmus von Frick, Ludwig und Mehldau 4.7 Übungsaufgaben . . . . . . . . . . . . . . . 5 Zeichnen von planaren Graphen 5.1 Eigenschaften planarer Graphen . . . . . . 5.1.1 Definition und Einbettungen . . . . 5.1.2 Eulersche Polyederformel . . . . . 5.1.3 Duale Graphen . . . . . . . . . . . 5.1.4 Charakterisierung planarer Graphen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 73 75 75 77 . . . . . . . . . . . . . . . . . 83 83 86 89 91 91 97 97 98 100 102 107 108 108 109 109 110 110 . . . . . . . 113 113 115 118 119 120 120 121 . . . . . 123 123 123 126 131 132 Zeichnen von Graphen · Wintersemester 2015/16 5.2 5.3 5.4 5.5 5 5.1.5 Knotenfärbung planarer Graphen . . . . . . . . . . . . . . 5.1.6 Planaritätstests und Einbettungsberechnung . . . . . . . . . Planarisierung, Augmetierung und Gradbeschränkung von Graphen 5.2.1 Planarisierungsmethode . . . . . . . . . . . . . . . . . . . 5.2.2 Augmentierung des Zusammenhangs . . . . . . . . . . . . 5.2.3 Gradbeschränkung . . . . . . . . . . . . . . . . . . . . . . Maximal planare Graphen und kanonische Ordnungen . . . . . . . Geradlinige Zeichnungen planarer Graphen . . . . . . . . . . . . . Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Flüsse und orthogonale Zeichnungen 6.1 Winkel in orthogonalen Zeichnungen . . . . . . . . . . . . . . . 6.2 Orthogonale Repräsentation und Eigenschaften . . . . . . . . . 6.3 Bestimmung einer knickminimalen orthogonalen Repräsentation 6.3.1 Netzwerkflüsse mit minimalen Kosten . . . . . . . . . . 6.3.2 Aufbau des Netzwerkes . . . . . . . . . . . . . . . . . 6.3.3 Algorithmus zur Knickminimierung . . . . . . . . . . . 6.4 Algorithmen zur Normalisierung . . . . . . . . . . . . . . . . . 6.4.1 Verfeinerung der inneren Flächen . . . . . . . . . . . . 6.4.2 Verfeinerung der äußeren Fläche . . . . . . . . . . . . . 6.5 Algorithmen zur Längenbestimmung . . . . . . . . . . . . . . . 6.6 Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 133 133 133 136 137 137 142 148 . . . . . . . . . . . 151 153 154 156 156 158 168 168 169 169 170 175 Literaturverzeichnis 177 Index 180 6 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 Kapitel 1 Grundlagen 1.1 Algorithmen und Effizienz In der Vorlesung wird vorausgesetzt, dass Sie Grundkenntnisse über Algorithmen, Probleme, Komplexitätsklassen, Laufzeitabschätzungen und Effizienz haben. Bei Bedarf wiederholen Sie die Definitionen. Algorithmen sind schrittweise Verfahren zum Lösen von Problemen, welche mecha” nisch“ ausgeführt werden können, zum Beispiel auch durch einen Computer. Die einzelnen Schritte sind verständlich und nachvollziehbar. Probleme werden in der Informatik durch die Art der erlaubten Eingaben und die Art der geforderten Ausgaben spezifiziert. Man betrachtet u.a. Entscheidungsprobleme, Optimierungsprobleme, Konstruktionsprobleme, Suchprobleme und Zählprobleme. Kompexitätsklassen sind Mengen von Problemen, deren Lösung bezüglich eines Komplexitätsmaßes (wie zum Beispiel Zeit- oder Platzbedarf) und eines Algorithmentyps (wie zum Beispiel Determinismus oder Nichtdeterminismus) etwa denselben algorithmischen Aufwand erfordert, eine vorgegebene Komplexitätsschranke also nicht überschreitet. Klassen zur Messung des Zeitbedarfs von Entscheidungsproblemen sind u.a. P, NP, NPC. Laufzeitabschätzungen von Algorithmen gibt man häufig in der O-Notation, Ω-Notation oder Θ-Notation an. Zur Abschätzung von Laufzeiten, die sich über Rekursionsgleichungen formulieren lassen, ist das Mastertheorem oft hilfreich. Effizienz von Algorithmen definiert man über die Genügsamkeit bezüglich Laufzeit und Speicherplatz, welche sie zur Lösung eines festgelegten Problems benötigen. Je geringer die Laufzeit und der Speicherplatz sind, desto höher die Effizienz eines Algorithmus. In der Theoretischen Informatik wird der Begriff ,,Effizienz“ oft mit der 7 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 8 Existenz eines Algorithmus A mit polynomieller Laufzeit gleichgesetzt. In der Praxis sind jedoch nur Algorithmen mit einer Laufzeit aus O(nk ) für sehr kleine k, wie z.B. k ≤ 2, effizient. 1.2 Graphen 1.2.1 Definitionen Eine der wichtigsten Datenstrukturen in der Informatik ist der Graph. Mit Hilfe von Graphen lassen sich oft sehr einfach viele strukturelle Gegebenheiten beschreiben. Ein Graph G ist ein Paar (V, E), wobei V eine Menge von Knoten (englisch: vertices) und E eine Menge von Kanten (englisch: edges) ist. Wir betrachten hier ausschließlich Graphen mit endlichen Knoten- und endlichen Kantenmengen. Es gibt in der Literatur unterschiedliche Graphenmodelle, die sich hauptsächlich in der Definition der Kantenmenge unterscheiden. Die beiden folgenden Varianten werden jedoch am häufigsten verwendet. 1. In einem gerichteten Graphen (englisch: digraph, als Abkürzung von directed graph) G = (V, E) ist die Kantenmenge eine Teilmenge der Menge aller Knotenpaare: E ⊆ V ×V. Jede gerichtete Kante (u, v) ist ein geordnetes Paar von Knoten, wobei u der Startknoten und v der Zielknoten der Kante (u, v) ist. Eine Schlinge oder Schleife (englisch: Loop) in einem gerichteten Graphen ist eine gerichtete Kante der Form e = (v, v). Gelegentlich1 ist es sinnvoll E als Multimenge zu betrachten. Zwei gerichtete Kanten e = (u, v) und f = (u, v) mit gleichen Start- und Zielknoten heißen parallel. Ein gerichteter Graph heißt schlicht, wenn er weder Schlingen, noch parallele Kanten besitzt. 2. In einem ungerichteten Graphen G = (V, E) ist die Kantenmenge eine Teilmenge der Menge aller zwei-elementigen Knotenmengen: E ⊆ {{u, v} | u, v ∈ V }. Jede ungerichtete Kante {u, v} ist eine Menge von zwei Knoten u und v, die die Endknoten der Kante {u, v} sind. Diese beiden Knoten müssen im Allgemeinen nicht verschieden sein. Eine Kante der Form {v, v} heißt Schlinge oder Schleife (englisch: Loop). Auch im ungerichteten Graphenmodell ist es gelegentlich2 sinnvoll E 1 2 Siehe Abschnitt 6.3. Siehe Abschnitt 5.1.3. Zeichnen von Graphen · Wintersemester 2015/16 9 als Multimenge zu betrachten. Zwei Kanten e = {u, v} und f = {u, v} zwischen denselben Endknoten heißen Mehrfachkanten. Graphen ohne Mehrfachkanten und Schleifen nennt man auch einfache Graphen oder schlichte Graphen. Im Folgenden betrachten wir nur schlichte Graphen, wenn wir nichts anderes erwähnen. Grundsätzlich kann ein ungerichteter Graph auch als ein gerichteter Graph dargestellt werden, indem für jede ungerichtete Kante {u, v} zwei gerichtete Kanten (u, v) und (v, u) verwendet werden. In der Regel ist es jedoch bequemer und anschaulicher, für ungerichtete Graphen auch das ungerichtete Graphenmodell zu verwenden. Die ,,Gleichheit“ von Graphen wird wie bei allen komplexen Strukturen über einen Isomorphismus definiert, da in der Regel eine strukturelle Gleichheit und keine mengentheoretische Gleichheit gemeint ist. Zwei gerichtete bzw. zwei ungerichtete Graphen G = (V, E) und G′ = (V ′ , E ′ ) sind isomorph, falls eine bijektive Abbildung f : V → V ′ existiert mit (∀u, v ∈ V ) [(u, v) ∈ E ⇔ (f (u), f (v)) ∈ E ′ ] (1.1) (∀u, v ∈ V ) [{u, v} ∈ E ⇔ {f (u), f (v)} ∈ E ′ ]. (1.2) bzw. Ein Graph G′ = (V ′ , E ′ ) heißt Teilgraph eines Graphen G = (V, E), falls V ′ ⊆ V und E ′ ⊆ E. Ist G′ = (V ′ , E ′ ) ein Teilgraph von G und gilt zusätzlich, dass E ′ alle Kanten aus E enthält, deren Start- und Zielknoten bzw. Endknoten in V ′ sind (d. h., E ′ = {(u, v) ∈ E | u, v ∈ V ′ } bzw. E ′ = {{u, v} ∈ E | u, v ∈ V ′ }), so heißt G′ induzierter Teilgraph von G. Jeder induzierte Teilgraph ist somit auch ein gewöhnlicher Teilgraph, jedoch gilt dies im Allgemeinen nicht umgekehrt. Die Kantenmenge in einem induzierten Teilgraphen G′ von G ist eindeutig durch die Knotenmenge V ′ bestimmt. Wir schreiben deshalb auch G[V ′ ] für den durch V ′ ⊆ V in G induzierten Teilgraphen. Es folgen einige weitere Begriffe über Graphen, die sowohl für gerichtete als auch für ungerichtete Graphen G = (V, E) relevant sind. Die entsprechenden Definitionen unterscheiden sich gelegentlich in nur unbedeutenden formalen Details. 1. Zwei Knoten u, v sind in G miteinander verbunden oder adjazent oder benachbart, wenn es eine gerichtete Kante e = (u, v) oder e = (v, u) gibt (bzw. wenn es eine ungerichtete Kante e = {u, v} gibt); dann nennt man u und v mit e inzident. Zwei Kanten mit einem gemeinsamen Knoten heißen inzident. Die Nachbarschaft N(v) eines Knotens v ist die Menge aller mit v adjazenten Knoten. 2. Der Eingangsgrad indegG (u) eines Knotens u in G ist die Anzahl der gerichteten Kanten mit u als Zielknoten. Der Ausgangsgrad outdegG (u) von u in G ist die Anzahl der gerichteten Kanten mit u als Startknoten. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 10 3. Der Knotengrad degG (u) eines Knotens u in G ist die Anzahl der mit u inzidenten Kanten. (Für ungerichtete Graphen ist nur der Knotengrad von Belang, d. h., man unterscheidet nicht zwischen Eingangs- und Ausgangsgrad.) Der maximale Knotengrad eines Graphen G ist definiert als ∆(G) = maxv∈V degG (v). Analog ist der minimale Knotengrad von G definiert als δ(G) = minv∈V degG (v). 4. Die Kardinalität einer Menge S (also die Anzahl ihrer Elemente) bezeichnen wir mit |S|. Die Größe eines Graphen G ist size(G) = |V | + |E|. 1.2.2 Spezielle Graphen Eine Menge von Graphen, die alle eine gemeinsame Eigenschaft besitzen, bezeichnet man als Graphklasse. Wir werden auf die folgenden Graphklassen noch näher eingehen. Bäume unterteilen wir u.a. in die folgenden Typen, siehe Abschnitt 2.1. Bäume sind ungerichtete zusammenhängende kreisfeie Graphen Wurzelbäume sind Bäume mit einer ausgezeichneten Wurzel geordnete Wurzelbäume sind Wurzelbäume mit einer Ordnung auf den Kindern jeden Knotens binäre Wurzelbäume sind geordnete Wurzelbäume mit höchstens zwei Kindern an jedem Knoten Geschichtete Graphen (englisch: layered (di)graphs) G = (V, E) besitzen eine Knotenmenge, welche in sogenannte Schichten (Ebenen, Levels) S1 , . . . , St , partitioniert ist, so dass es für jede (gerichtete) Kante e ∈ E zwei Indices i, j ∈ {1, . . . , t} mit i > j gibt, so dass e einen (Start-)Knoten aus Si und einen (Ziel-)Knoten aus Sj verbindet, siehe Abschnitt 3.1. Planare Graphen sind (gerichtete) Graphen G, welche kreuzungsfrei in der Ebene einbettbar sind. D.h., man kann die Knoten von G so in R2 einbetten, dass die Kanten zwischen den Knoten so geführt werden könnnen, dass sie sich nicht schneiden, siehe Abschnitt 5.1. 1.2.3 Darstellung von Graphen Mengentheoretisch kann ein Graph G als Paar (V, E) dargestellt werden, siehe Abschnitt 1.2.1. Zeichnen von Graphen · Wintersemester 2015/16 11 Adjazenzmatrizen eignen sich zur Speicherung von Graphen in Computern, um Graphalgorithmen zu realisieren. Am einfachsten kann ein gerichteter Graph G = (V, E) mit n Knoten in einem zweidimensionalen Array A als Adjazenzmatrix gespeichert werden, also als die (n×n)-Matrix mit den folgenden n2 Einträgen: A[u][v] = 0, 1, falls (u, v) 6∈ E, falls (u, v) ∈ E. Die Speicherung eines Graphen mit n Knoten als Adjazenzmatrix benötigt Θ(n2 ) Platz, unabhängig davon, ob der Graph sehr viele oder nur sehr wenige Kanten hat. Algorithmen, die als interne Datenstruktur eine Adjazenzmatrix verwenden, benötigen deshalb wegen der Initialisierung der Adjazenzmatrix immer mindestens Ω(n2 ) Rechenschritte. Die Verwendung einer Adjazenzmatrix ist somit nur dann sinnvoll, wenn die Laufzeit der besten Algorithmen im besten Fall (also bezüglich der Best-case-Zeitkomplexität) Ω(n2 ) nicht unterschreitet. Selbst wenn der Graph bereits in Form einer Adjazenzmatrix als Eingabe gegeben ist und die Adjazenzmatrix nicht erst aufgebaut werden muss, kann die Laufzeit der Algorithmen für viele Graphenprobleme Ω(n2 ) nicht unterschreiten. Adjazenzlisten sind eine geeignetere Datenstruktur für die effiziente Analyse von Graphen. Hier werden an jedem Knoten u in einer linear verketteten Liste die mit u inzidenten Kanten gespeichert. Die in u einlaufenden Kanten können im Fall gerichteter Graphen getrennt von den aus u auslaufenden Kanten gespeichert werden. Zeichnungen von Graphen erhält man, indem man dessen Knoten als Punkte (oder Geometrische Objekte, wie Kreise oder Rechtecke) darstellt. Die Kanten werden zum Beispiel als Linien dargestellt, so dass sich zwei Kanten nur in endlich vielen Punkten schneiden. Zeichnungen von Graphen sind für Menschen wohl die sinnvollste Variante, um einen Graphen zu erfassen. ,,A picture is worth a thousand words.“ 1.3 Zeichnungen von Graphen Definition 1.1 (Zeichnung) Es sei G = (V, E) ein Graph. Eine Zeichnung oder ein Layout für G ist eine Abbildung d : V ∪ E 7→ R2 , die jedem Knoten v ∈ V und jeder Kante e ∈ E eine Position in der Ebene zuordnet. • Für jeden Knoten v ∈ V ist d(v) = (x(v), y(v)) und d ist für Knoten injektiv, d.h. zwei verschiedene Knoten werden nie auf die gleiche Position abgebildet. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 12 Abbildung 1.1: Beispiel für einen gezeichneten gerichteten Graphen. • Für jede Kante e ∈ E mit Endknoten u und v ist d(e) = J, J : [0, 1] 7→ R2 eine Jordan Kurve mit J(0) = d(u) und J(1) = d(v).3 In der Literatur werden auch höherdimensionale Zeichnungen (im R3 für 3-D Modelle und im R4 für Folgen von 3-D Bildern, Videosequenzen) betrachtet. In Abhängigkeit von der Position der Knoten und Form der Kanten unterscheidet man zahlreiche verschiedene Arten von Zeichnungen. • Polygonale Zeichnungen (englisch: polyline drawing): Jede Kante ist ein polygonale (mehreckige) Verbindung (ein Kantenzug), siehe Abbildung 1.2. Abbildung 1.2: Polygonale Zeichnung Da hier auch nicht geradlinige Kanten zugelassen sind, so müssen in Definition 1.1 neben der Position der Knoten noch die Knickpunkte der Kanten im Layout festgelegt werden. • Geradlinige Zeichnungen (englisch: straight-line drawing): Jede Kante ist eine Gerade zwischen den beiden Endknoten, siehe Abbildung 1.3. 3 Falls die Kanten geradlinig zwischen den Endknoten verlaufen sollen, so ist die Angabe von d(e) für e ∈ E nicht notwendig. Zeichnen von Graphen · Wintersemester 2015/16 13 Abbildung 1.3: Geradlinige Zeichnung • Planare geradlinige Zeichnungen (englisch: planar straight-line drawing): Jede Kante ist eine Gerade zwischen den beiden Endknoten und die Kanten schneiden sich nicht, siehe Abbildung 1.4. Abbildung 1.4: Planare geradlinige Zeichnung • Orthogonale Zeichnungen (englisch: orthogonal drawing): Jede Kante ist ein Linienzug, dessen Segmente ausschließlich vertikal oder horizontal verlaufen, siehe Abbildung 1.5. Abbildung 1.5: Orthogonale Zeichnung • Orthogonale geradlinige Zeichnungen (englisch: orthogonal straight-line drawing): Jede Kante ist eine Gerade zwischen den beiden Endknoten, die ausschließlich vertikal oder horizontal verlaufen, siehe Abbildung 1.6. • Planare orthogonale geradlinige Zeichnungen (englisch: planar orthogonal straightline drawing): Jede Kante ist eine Gerade zwischen den beiden Endknoten, die ausschließlich vertikal oder horizontal verlaufen und die Kanten schneiden sich nicht, siehe Abbildung 1.7. • Gitterzeichnung (englisch: grid drawing): Eine spezielle Art der polygonalen Zeichnung in welcher die Knoten, die Kantenkreuzungen und mögliche Knickpunkte der 14 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 Abbildung 1.6: Orthogonale geradlinige Zeichnung Abbildung 1.7: Planare orthogonale geradlinige Zeichnung Kanten des Graphen ausschließlich auf einem Gitter mit ganzzahligen Koordinaten gezeichnet werden dürfen, siehe Abbildung 1.8. Abbildung 1.8: Gitterzeichnung • Aufwärtsgerichtete Zeichnung (englisch: upward drawing): Eine Aufwärtszeichnung eines gerichteten Graphen G ist eine Zeichnung von G bei der alle Kanten streng monoton in eine Richtung zeigen, z.B. von unten nach oben oder von links nach rechts, siehe Abbildung 1.9. (Bei Bäumen ist die Richtung von oben nach unten üblich.) • Planare aufwärtsgerichtete Zeichnung (englisch: planar upward drawing): Eine Aufwärtszeichnung bei welcher sich die Kanten nicht kreuzen. • Levelzeichnung / Schichtenzeichnung (englisch: layered drawing): Ein geschichteter Graph wird hier so gezeichnet, dass die Knoten in der gleichen Schicht auf einer Zeichnen von Graphen · Wintersemester 2015/16 15 Abbildung 1.9: Aufwärtsgerichtete Zeichnung horizontalen Linie gezeichnet werden, d.h. die gleiche y-Koordinate haben (auch als Hierarchische Zeichnung (englisch: hierachical drawing) bekannt), siehe Abbildung 1.10. L L 4 3 L 2 L 1 Abbildung 1.10: Schichtenzeichnung • Radiale Schichtenzeichnung (englisch: radial layered layout): Ein geschichteter Graph wird hier so gezeichnet, dass die Knoten in der gleichen Schicht auf einem Kreis gezeichnet werden, so dass die Kreise alle den gleichen Mittelpunkt haben, siehe Abbildung 1.11. • Sichtbarkeitszeichnung (englisch: visibility drawing): Ein (gerichteter) Graph wird hier gezeichnet, indem jeder Knoten v durch eine horizontale Strecke τ (v) und jede Kante {u, v} (gerichtete Kante (u, v)) als eine vertikale (gerichtete) Strecke τ (u, v) dargestellt wird. Hierbei sind alle Knoten- und alle Kantenstrecken paarweise disjunkt, die Endpunkte der Strecke τ (u, v) liegen an τ (u) und τ (v) (Startpunkt an τ (u) und Endpunkt an τ (v)) und τ (u, v) schneidet keine weiteren Knotenstrecken, siehe Abbildung 1.12. • HV-Zeichnung (englisch: hv-drawing): Eine orthogonale geradlinige Zeichnung eines binären Baumes, so dass die Zeichnungen der beiden Teilbäume jedes Knotens durch eine horizontale oder vertikale Linie getrennt werden können, siehe Abbildung 1.13. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 16 Abbildung 1.11: Radiale Schichtenzeichnung Baumes Abbildung 1.12: Sichtbarkeitszeichnung eines gerichteten Graphen 1.4 Ästhetikkriterien für Zeichnungen Um die Güter einer Zeichnung eines Graphen zu bewerten, betrachtet man häufig folgende Kriterien. (1.) Benötigte Fläche Für Zeichnungen in der Ebene definiert man die Fläche (Platzverbrauch) wie folgt. Definition 1.2 (Breite, Höhe und Fläche einer Zeichnung) Die Breite einer Darstellung d(G) für einen Graphen G, kurz Breite(d(G)), ist die Differenz aus der größten genutzten x-Koordinate und der kleinsten genutzten x-Koordinate. Die Höhe einer Darstellung d(G), kurz Höhe(d(G)), ist die Differenz aus der größten genutzten y-Koordinate und der kleinsten genutzten y-Koordinate. Die Fläche (englisch: area) einer Zeichnung d(G) eines Graphen G auf einem ganzzahligen Gitter ist das Produkt aus der Breite und der Höhe von d(G). Die Fläche eines Graphen G auf einem ganzzahligen Gitter ist die kleinste Fläche, welche durch eine Zeichnung von G möglich ist. Zeichnen von Graphen · Wintersemester 2015/16 17 Abbildung 1.13: HV-Zeichnung eines binären Baumes Anders ausgedrückt, ist die Fläche einer Zeichnung die Fläche eines kleinsten die Zeichnung umgebenden achsenparallelen Rechtecks; bei dreidimensionalen Zeichnungen analog ein Quader. Alle Parallelen zur x-Achse nennen wir Tiefengerade und alle Parallelen zur y-Achse nennen wir Breitengerade. Beispiel 1.3 (Fläche einer Zeichnung) In Abbildung 1.14 sind zwei Zeichnungen des K4 mit Fläche 4 bzw. 8 angegeben. Abbildung 1.14: Zwei Zeichnungen des K4 mit Fläche 4 bzw. 8. Die benötige Fläche soll möglichst klein seien. (2.) Anzahl der Kantenkreuzungen (englisch: edge crossings) Die Anzahl der Kantenkreuzungen in einer Zeichnung soll möglichst gering seien, d.h. der Graph soll möglichst planar gezeichnet werden. Die minimale Anzahl an Kantenkreuzungen, die bei einer geradlinigen Zeichnung für einen Graphen G möglich ist, heißt auch Kreuzungszahl von G. (3.) Anzahl der Kantenknickpunkte Die Anzahl der Kantenknicke (englisch: bends) soll möglichst gering seien. (4.) Anzahl der Schnitte zwischen nichtinzidenten Kanten und Knoten Die Anzahl der Schnitte zwischen nichtinzidenten Kanten und Knoten soll möglichst gering seien. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 18 (5.) Länge der Kanten Die Länge der Kanten soll möglichst klein und möglichst gleich groß seien. (6.) Richtung der Kanten Die (gerichteten) Kanten sollen möglichst in die selbe Richtung zeigen. (7.) Verteilung der Knoten Die Knoten sollen möglichst gleich verteilt seien. (8.) Verhältnis von Höhe und Breite des Layouts Das Verhältnis von Höhe zu Breite eines Layouts soll möglichst eins betragen. (9.) Winkelauflösung Definition 1.4 (Winkelauflösung) Bei geradlinigen Zeichnungen eines Graphen G definiert man die Winkelauflösung (englisch: angular resolution) ρ(G) einer Zeichnung als den kleinsten Winkel, der durch zwei geradlinigen Kanten gebildet wird, die einen Endknoten gemeinsam haben. Die Winkelauflösung eines Graphen G ist die maximale Winkelauflösung, die durch eine Zeichnung von G möglich ist. Die Winkelauflösung einer Zeichnung soll möglichst groß seien. (10.) Sichtbarkeit grundlegender Eigenschaften des Graphen, wie z.B. • Zusammenhang Falls der Graph mehrere Zusammenhangskomponenten besitzt, sollen diese in einer Zeichnung erkennbar sein. • Symmetrie Falls der gegebene Graph Symmetrien enthält, so soll dies auch im Layout erkennbar seien. • Ordnung Sind z.B. bei Bäumen die Kinder eines Knotens geordnet, so soll dies auch in der Zeichnung realisiert werden. Im Allgemeinen ist es nicht möglich zwei dieser Kriterien gleichzeitig zu optimieren. In Abbildung 1.15 sind drei Zeichnungen des vollständigen Graphen mit vier Knoten (K4 ) angegeben. In der linken Darstellung sind die Symmetrien optimiert, in der mittleren Darstellung ist die Anzahl der Kantenkreuzungen minimiert und die rechte Darstellung ist orthogonal. Die Optimierung obiger Ästhetikkriterien ist sogar oft schwer. Zeichnen von Graphen · Wintersemester 2015/16 19 Abbildung 1.15: Drei Zeichnungen des K4 . Beispiel 1.5 • Gegeben ein Graph G, entscheide ob G planar ist, ist in linearer Zeit möglich. • Gegeben ein gerichteter Graph G, entscheide ob G aufwärtsplanar ist, d.h, ob es eine aufwärtsgerichtete Zeichnung ohne Kantenkreuzungen gibt, ist NP-schwer. • Gegeben ein Graph G, minimiere die Anzahl der Kantenkreuzungen in einer Zeichnung von G, ist NP-schwer. • Gegeben ein Baum B, minimiere die Fläche einer Zeichnung, ist NP-schwer. 1.5 Problemdefinition Beim Graphenzeichnen bzw. Zeichnen von Graphen (englisch: graph drawing) betrachtet man das Problem der Visualisierung struktureller Informationen, welche sich als Graphen darstellen lassen. Das automatische Zeichnen von Graphen hat wichtige Anwendungen in vielen Bereichen der Informatik, wie z.B. Datenbanken, Software Engineering, VLSI- und Netzwerk-Design und visuelle Benutzerschnittstellen. Anwendungen in anderen Bereichen betreffen alle Gebiete der visuellen Datenanalyse, z.B. in Ingenieurwissenschaften, Chemie, Biologie, Sozial- und Politikwissenschaft oder Kriminologie. Weitere Anwendungen für das Zeichnen von Graphen, in denen sehr unterschiedliche Graphenklassen auf sehr verschiedene Weise zu zeichnen sind, liefern viele Alltagsbeispiele, z.B. die Darstellung von U-Bahn-Plänen, Flugrouten, Internetverbindungen und Stammbäumen. Formal betrachteten wir das folgende Konstruktionsproblem. Gegeben: Ausgabe: G RAPHDRAWING Ein Graph G = (V, E). Eine Zeichnung von G, so dass eine Menge von Ästhetikkriterien erfüllt ist. Die Art der Zeichnung und die zu erfüllenden Ästhetikkriterien sind anwendungsabhängig, siehe Abschnitt 1.3 und 1.4. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 20 In dieser Vorlesung betrachten wir verschiedene Arten zum Zeichnen von Graphen und Algorithmen, welche diese Zeichnungen konstruieren. 1.6 Übungsaufgaben Aufgabe 1.1 Es sei G = (V, E) ein ungerichteter Graph. Zeigen Sie die folgenden Aussagen. P (a) v∈V deg(v) = 2|E| (b) Die Anzahl der Knoten in G mit ungeradem Knotengrad eine gerade Zahl. (c) Falls |V | ≥ 2, so hat G mindestens zwei Knoten, die denselben Knotengrad haben. Aufgabe 1.2 Welche der in Abschnitt 1.4 aufgezählten Ästhetikkriterien sind in den sechs Zeichnungen eines Würfels in Abbildung 1.16 besonders gut oder besonders schlecht erfüllt? Abbildung 1.16: Sechs Zeichnungen eines Würfels. Aufgabe 1.3 Wir bezeichnen einen vollständigen Graphen mit n Knoten kurz mit Kn . Kn = ({v1 , . . . , vn }, {{vi , vj } | 1 ≤ i < j ≤ n}) Geben Sie für den K3 , K4 und K5 (a) eine geradlinige Gitterzeichnung (b) eine orthogonale Gitterzeichnung mit möglichst geringer Fläche an. Welche Breite, Höhe und Fläche benötigen Ihre Zeichnungen? Kapitel 2 Zeichnen von Bäumen ,,How shall we draw a tree?“ fragte 1970 schon Donald Knuth [Knu97]. 2.1 Definitionen Wir betrachten folgende verschiedene Typen von Bäumen. 1. Ein ungerichteter kreisfreier Graph ist ein Wald. Ein zusammenhängender Wald ist ein Baum (englisch: tree). In einem Wald werden die Knoten vom Grad 1 Blätter genannt, die übrigen Knoten heißen innere Knoten.1 Beispiel 2.1 (Wald, Baum) Abbildung 2.1 zeigt einen Wald, bzw. zwei Bäume. Abbildung 2.1: Ein Wald. 1 Um einen Baum von einem Wurzelbaum zu unterscheiden, bezeichnet man ihn auch als freien Baum. 21 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 22 2. Ein Wurzelbaum T = (V, E) ist ein Baum, in dem ein spezieller Knoten w ∈ V als Wurzel ausgezeichnet wird. Ein Knoten v in einem Wurzelbaum T heißt der Vater (Vorgänger) eines Knoten s (und s ist ein Kind (Nachfolger) von v), falls v der unmittelbare Vorgänger von s auf dem Weg von der Wurzel von T zu s ist. Zwei Knoten heißen Geschwisterknoten, falls sie den gleichen Vorgängerknoten haben. In einem Wurzelbaum heißen die Knoten ohne Nachfolger Blätter und die übrigen Knoten innere Knoten.2 Für einen Wurzelbaum T = (V, E) mit Wurzel w definieren wir für jeden Knoten v ∈ V 0 falls v = w Tiefe(v) = 1 + Tiefe(Vater(v)) sonst und die Höhe des Wurzelbaumes T als Höhe(T ) = max Tiefe(v). v∈V Für einen Wurzelbaum T = (V, E) und einen Knoten v ∈ V definieren wir T (v) als den Teilbaum von T , welcher v als Wurzel hat. Bemerkung 2.2 Die Knoten eines Wurzelbaumes T = (V, E) kann man bzgl. der Wurzel in Schichten (Levels, Ebenen) einteilen: Si = {v ∈ V | Tiefe(v) = i}, i = 0, . . . , Höhe(T ), d.h. S0 = {w}, S1 = N(w), . . . . Damit kann kann jeder Wurzelbaum als ein geschichteter Graph aufgefasst werden. Zwei Wurzelbäume T und T ′ mit Wurzel w und w ′ sind isomorph, falls T und T ′ isomorph bzgl. einer Abbildung f sind, welche zusätzlich f (w) = w ′ erfüllt. 3. Ein Wurzelbaum T heißt geordneter Wurzelbaum, falls auf den Kindern eines jeden inneren Knotens von T eine Ordnung definiert ist. Falls jeder Knoten in einem geordneten Wurzelbaum höchstens k Kinder hat, so heißt T ein k-närer Baum. Hat jeder innere Knoten v höchstens k = 2 Kinder, so nennen wir den geordneten Wurzelbaum auch Binärbaum oder binärer Baum und eines der zwei Kinder eines inneren Knotens sein linkes Kind (linkes Kind(v)) und das andere sein rechtes Kind (rechtes Kind(v)). Für einen Binärbaum T = (V, E) und einen Knoten v ∈ V definieren wir Tℓ (v) als den Teilbaum von T , welcher das linke Kind von v als Wurzel besitzt, falls ein 2 Wurzelbäume können auch als gerichtete Bäume betrachtet werden, indem man die Kanten stets von der Wurzel in Richtung der Kinder richtet. Zeichnen von Graphen · Wintersemester 2015/16 23 solches existiert, und Tℓ (v) = (∅, ∅), sonst. Analog ist Tr (v) der Teilbaum von T , welcher das rechte Kind von v als Wurzel besitzt, falls ein solches existiert, und Tr (v) = (∅, ∅), sonst. Ein k-närer Wurzelbaum heißt vollständig, falls jeder innere Knoten genau k Nachfolger hat und alle Blätter die gleiche Tiefe besitzen. Zwei geordnete Wurzelbäume T und T ′ mit Wurzel w und w ′ sind isomorph, falls die Wurzelbäume T und T ′ isomorph bzgl. einer Abbildung f sind, welche zusätzlich für jeden inneren Knoten die Ordnung der Kinder erhält. Beispiel 2.3 (Binärer Wurzelbaum) Abbildung 2.2 zeigt einen vollständigen binären Wurzelbaum mit Wurzel w und Höhe 3. Der Knoten v ist der Vater (Vorgänger) von s, und s ist ein Kind (Nachfolger) von v. Die Tiefe von Knoten s ist 2. w v s Abbildung 2.2: Ein vollständiger binärer Wurzelbaum mit Wurzel w und Höhe drei. Die Spielgelung eines geordneten Wurzelbaumes erhält man, indem man die Reihenfolge der Kinder jedes inneren Knotens invertiert. Zusammenfassung Bäume Abschnitt Bäume ungerichtete zusammenhängende kreisfeie Graphen 2.5 Wurzelbäume Bäume mit ausgezeichneter Wurzel 2.4 geordnete bäume Wurzel- Wurzelbäume mit einer Ordnung auf den Kindern jeden Knotens 2.3 binäre Wurzelbäume geordnete Wurzelbäume mit höchstens zwei Kindern an jedem Knoten 2.2 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 24 2.2 Zeichnen von Binärbäumen Wir betrachten zunächst das Zeichenproblem für binäre Bäume. Hier hat jeder Knoten 0, 1 oder 2 Kinder. Falls ein Knoten u ein Kind hat, so ist es das linke oder das rechte Kind von u. Falls ein Knoten u zwei Kinder hat, so ist eines das linke und eines das rechte Kind von u. 2.2.1 Durchlaufen von Binärbäumen Zum Zeichnen von Binärbäumen ist es oft wichtig, dass man die Knoten der Bäume in einer geeigneten Reihenfolge besucht. Drei bekannte Durchlaufreihenfolgen der Knoten in binären Bäumen T = (V, E) sind Preorder, Inorder und Postorder, welche in Abbildung 2.3, 2.4 und 2.5 angegeben sind. Preorder(T = (V, E)) { } if V 6= ∅ { v = root(T ); besuche v; Preorder(Tℓ (v)); Preorder(Tr (v)); } Abbildung 2.3: Preorder in Pseudocode Inorder(T = (V, E)) { } if V 6= ∅ { v = root(T ); Inorder(Tℓ (v)); besuche v; Inorder(Tr (v)); } Abbildung 2.4: Inorder in Pseudocode Zeichnen von Graphen · Wintersemester 2015/16 25 Postorder(T = (V, E)) { } if V 6= ∅ { v = root(T ); Postorder(Tℓ (v)); Postorder(Tr (v)); besuche v; } Abbildung 2.5: Postorder in Pseudocode Eine weitere nützliche Durchlaufreihenfolge für die Knoten in Binärbäumen ist die Levelorder. Hierbei werden die Knoten von oben nach unten und bei gleicher Entfernung zur Wurzel von links nach rechts durchnummeriert, siehe Abbildung 2.6. Levelorder(T = (V, E)) { } v = root(T ); definiere eine Warteschlange Q und füge v in Q ein; while Q 6= ∅ { es sei v der erste Knoten in Q; entferne v aus Q; besuche v; if v hat ein linkes Kind v ′ then hänge v ′ an Q an; if v hat ein rechtes Kind v ′ then hänge v ′ an Q an; } Abbildung 2.6: Levelorder in Pseudocode Zwei weitere bekannte Durchlaufstrategien liefern die Tiefensuche und die Breitensuche. 26 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 2.2.2 Problemdefinition und Zeitkomplexität Zu einem gegebenen binären Baum T = (V, E) mit Wurzel w suchen wir eine geradlinige Zeichnung in der Ebene, so dass möglichst viele der folgenden Kriterien erfüllt sind. (B1) Alle Knoten v ∈ V mit der gleichen Tiefe, d.h. Distanz zur Wurzel w, sind auf einer waagerechten Linie gezeichnet, deren y-Koordinate y(v) = −Tiefe(v) beträgt, d.h. es wird eine Schichtenzeichnung gefordert. (B2) Ein linkes Kind wird stets links (kleinere x-Koordinate) und ein rechtes Kind wird stets rechts (größere x-Koordinate) von seinem Vater gezeichnet. (B3) Die Knoten mit dem selben Level haben einen vorgegebenen Mindestabstand. (B4) Falls ein Vaterknoten zwei Kinder hat, so wird er mittig über seinen Kindern platziert. (B5) Die Kanten kreuzen sich nicht, d.h. es wird eine planare Zeichnung gefordert. (B6) Isomorphe Teilbäume werden bis auf Verschiebung gleich gezeichnet. (B7) Ein binärer Baum und sein Spiegelbild werden bis auf Spiegelung gleich gezeichnet. (B8) Die Koordinaten sind ganzzahlig, d.h. es wird eine Gitterzeichnung gefordert. Bemerkung 2.4 1. Sofern wir Kriterium (B1) erfüllen, reduziert sich das Zeichenproblem auf die Bestimmung der x-Koodinate der Knoten, so dass unter den obigen Kriterien die Breite der Darstellung möglichst klein wird. 2. In (B3) wird oft ein Mindestabstand von m = 1 oder m = 2 gefordert. (B3) folgt nicht aus (B2), da zwei Knoten nicht stets den gleichen Vater haben müssen. 3. (B5) folgt bei geradlinigen Zeichnungen aus (B1)-(B3). 4. (B6) bedeutet formal, dass je zwei isomorphe Wurzelbäume T (u) und T (v), u, v ∈ V bis auf eine horizontale und vertikale Verschiebung gleich gezeichnet werden sollen. 5. (B6) kann die Breite einer Zeichnung beeinflussen. In Abbildung 2.7 ist links ist ein Baum mit (B1)-(B5) mit minimaler Gitterbreite 8 gezeichnet, in welchem die zwei roten Teilbäume (B6) nicht erfüllen. Rechts ist (B6) erfüllt, aber die Gitterbreite um eins größer. Zeichnen von Graphen · Wintersemester 2015/16 27 Abbildung 2.7: Ein Baum mit minimaler Breite und mit (B6). Um Komplexitätsaussagen für das Finden von Zeichnungen mit möglichst kleiner Breite binärer Bäume anzugeben, betrachteten wir das folgende Konstruktionsproblem. Gegeben: Ausgabe: B INARY T REE D RAWING Ein binärer Baum T = (V, E) und b ∈ N. Eine Zeichnung von T mit Breite höchstens b, so dass eine Menge von Ästhetikkriterien erfüllt ist. Supowit und Reingold haben in [SR83] gezeigt, dass man einen Binärbaum unter den Bedingung (B1)-(B6) mit minimaler Breite in polynomieller Zeit zeichnen kann. Hierzu benötigt man alle isomorphen Teilbäume mit mindestens zwei Knoten. Bemerkung 2.5 (Bestimmen isomorpher Teilbäume) Für einen Binärbaum T = (V, E) kann man die isomorphen Teilbäume mit mindestens zwei Knoten in polynomieller Zeit bestimmen. (1.) Die Knoten in T werden mittels Inorder von 1 bis |V | nummeriert. (2.) Wir durchlaufen T in Postorder und ordnen jedem Knoten u die Knotenanzahl nu im Teilbaum T (u) und eine Kodierung des Teilbaumes T (u) zu. Diese Kodierung ergibt sich, indem man die Folgenglieder der Preorderreihenfolge der Knotennummern in T (u) monoton auf die Werte 1, . . . , nu abbildet. Zwei Teilbäume T (u) und T (v), u, v ∈ V sind nun isomorph, wenn sie die gleiche Kodierung besitzen.3 (3.) Wir sortieren für die inneren Knoten u aus T die Kodierungen der Teilbäume T (u) lexikographisch. In dieser Folge stehen nun die Kodierungen isomorpher Teilbäume hintereinander. 3 Nach Übungsaufgabe 2.4 charakterisiert ein Inorder- und ein Preorderdurchlauf einen Binärbaum eindeutig. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 28 Beispiel 2.6 (Bestimmen isomorpher Teilbäume) Wir wollen die isomorphen Teilbäume mit mindestens zwei Knoten in dem binären Baum in Abbildung 2.8 bestimmen. Kodierung 16 10 10 5 4 2 1 3 6 8 7 9 11 12 16 14 13 15 6 9 542136879 5 11 12 16 14 13 15 11 126435 Knotenanzahl 5 4 4 6879 6 1324 4213 4 12 16 14 13 15 12 15324 4 3 3 213 2 879 8 213 16 14 13 15 16 4213 3 1 1 1 1 14 13 15 14 213 7 9 1 3 1 1 15 Preorderreihenfolge 13 Inordernummer Abbildung 2.8: Bestimmen isomorpher Teilbäume (1.) Die Knoten sind in Inorder durchnummeriert. (2.) Die Knotenanzahlen nu der Teilbäume T (u) stehen über den Knoten. Die Preorderreihenfolge für Teilbaume T (u) steht links von Knoten u und die Kodierung von Teilbaum T (u) auf 1, . . . , nu , sofern diese nicht gleich der Preorderreihenfolge ist, steht rechts von Knoten u. (3.) Wir erhalten die folgenden 10 sortierten Kodierungen. Kodierung Wurzeln 213 2, 8, 14 1324 6 4213 4, 16 15324 12 126435 11 542136879 5 10 5 4 2 1 3 6 8 7 9 11 12 16 14 13 15 10 Zeichnen von Graphen · Wintersemester 2015/16 29 Satz 2.7 (Supowit, Reingold 1983) Das Problem B INARY T REE D RAWING kann für die Kriterien (B1)-(B6) in polynomieller Zeit gelöst werden. Beweis. Das Problem B INARY T REE D RAWING mit den Kriterien (B1)-(B6) kann für einen binären Baum T = (V, E) mit Knotenmenge V = {v1 , . . . , vn } als ein lineares Programm formuliert werden. Wir definieren für jeden Knoten vi ∈ V eine Variable x(vi ), welche der x-Koordinate von Knoten vi entspricht. Weiterhin definiert man zwei zusätzliche Variablen L und R für den linken und rechten Rand der Darstellung. Die zu minimierende Zielfunktion f : Rn+2 7→ R beschreibt die Breite der Zeichnung f (L, R, x(v1 ), . . . , x(vn )) = R − L unter den Nebenbedingungen • x(vi ) ≤ R für alle vi ∈ V • x(vi ) ≥ L für alle vi ∈ V • ((B1) wird durch geeignete y-Koordinaten erfüllt.) • x(rechtes Kind(vi )) − x(vi ) ≥ 1 für alle vi ∈ V , die ein rechtes Kind haben x(vi ) − x(linkes Kind(vi )) ≥ 1 für alle vi ∈ V , die ein linkes Kind haben ⇒ (B2) wird erfüllt. • x(vj ) − x(vi ) ≥ m für alle Knoten vi , vj auf einer Schicht von T , so dass vj Nachfolger von vi in der Levelorder und m ein Mindestabstand, z.B. 1 oder 2, ist. ⇒ (B3) wird erfüllt. • x(rechtes Kind(vi )) − x(vi ) = x(vi ) − x(linkes Kind(vi )) für alle vi ∈ V , die ein linkes und rechtes Kind haben ⇒ (B4) wird erfüllt. • ((B1), (B2) und (B3) implizieren, dass (B5) erfüllt wird.) • x(rechtes Kind(vji )) − x(vji ) = x(rechtes Kind(vji+1 )) − x(vji+1 ) für jede Menge {vj1 , . . . , vjk } von Wurzeln paarweise isomorpher Teilbäume (vgl. Bemerkung 2.5.) mit mindestens zwei Knoten und einer Wurzel mit nichtleerem rechten Kind und für alle 1 ≤ i ≤ k − 1. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 30 x(vji ) − x(linkes Kind(vji )) = x(vji+1 ) − x(linkes Kind(vji+1 )) für jede Menge {vj1 , . . . , vjk } von Wurzeln paarweise isomorpher Teilbäume mit mindestens zwei Knoten und einer Wurzel mit leerem rechten Kind und für alle 1 ≤ i ≤ k − 1. Da Teilbäume isomorpher Teilbäume isomorph sind, werden alle isomorphen Teilbäume vollständig überprüft. ⇒ (B6) wird erfüllt. Da wir hier kontinuierliche Koordinaten verwenden, sind für die Variablen reelle Werte zulässig und das obige lineare Programm kann in polynomieller Zeit gelöst werden (InnerePunkte-Algorithmen, Ellipsoidmethode). Supowit und Reingold haben auch gezeigt, dass das Bestimmen einer Darstellung mit minimaler Gitterbreite NP-schwer ist. Der Beweis wurde 2004 von Akkerman et al. [ABJT04] korrigiert. Hier betrachten wir die korrigierte Version des Beweises. Satz 2.8 (Supowit, Reingold 1983) Das Problem B INARY T REE D RAWING für die Kriterien (B1)-(B6) und (B8) ist NP-vollständig. Beweis. Die Zugehörigkeit des Problems zu NP folgt, da man mit einem linearen Programm wie in Beweis von Satz 2.7 für gegebene x-Koordinaten die Bedingungen und die Breite der Zeichnung in polynomieller Zeit verifizieren kann. Die NP-härte zeigt man mit einer Reduktion von 3-SAT. Gegeben: Frage: 3-S AT Eine boolesche Formel F in konjunktiver Normalform und jede Klausel in F besitzt 3 Literale. Ist F erfüllbar? Es sei F = F1 ∧ . . . ∧ Fm eine 3-SAT Instanz mit Klauseln Fi = (yi,1 ∨ yi,2 ∨ yi,3 ) mit Literalen yi,j = xk oder yi,j = xk , wobei {x1 , . . . , xn } die Variablen von F sind. Wir transformieren F in eine Instanz (T, b) für das Zeichenproblem, so dass die Formel F genau dann erfüllbar ist, wenn der binäre Baum T unter den Bedingungen (B1)-(B6) und (B8) mit Breite b gezeichnet werden kann. Eine schematische Zeichnung des Baumes T ist in Abbildung 2.9 gezeigt. Die Idee bei der Konstruktion von T besteht darin, dass Teilbäume zu Literalen, welche den Wahrheitswert falsch besitzen mit Breite 7 und Teilbäume zu Literalen, welche den Wahrheitswert wahr besitzen, sogar mit Breite 6 gezeichnet werden können. Der Baum T setzt sich in Abhängigkeit von F aus Variablenbäumen T (xk ), Literalbäumen T (yi,j ) und Klauselbäumen T (Fi ) zusammen. Zeichnen von Graphen · Wintersemester 2015/16 31 d ( F1) d(F2) Abbildung 2.9: Schematischer Aufbau des Baumes T zu Formel F = F1 ∧ F2 . . . ∧ Fm d(Fm) 1. Der Variablenbaum T (xk ) zu Variable xk , 1 ≤ k ≤ n, habe die Wurzel p. Knoten p hat ein linkes Kind, welches ein rechtes Kind hat, welches wieder ein rechtes Kind q0 hat, an welchem ein Zick-Zack-Weg aus k + 1 Knoten q0 , . . . , qk beginnt. Für alle 0 ≤ m ≤ k − 1 hat qm als einziges Kind den Koten qm+1 und für gerades m ist qm+1 ein linkes Kind und sonst ein rechtes Kind, siehe Abbildung 2.10. Die in der Abbildung angegebenen zwei alternativen Zeichnungen des Variablenbaumes T (xk ) werden später bei Betrachtung einer Wahrheitswertbelegung wichtig. p p q 0 q 1 q q 0 q 1 q 2 q 2 q k−2 q k−1 q k k−2 q k−1 q k (a) (b) Abbildung 2.10: Variablenbaum T (xk ) zu xk Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 32 p p b q q 1 0 q 2 c= c1 c2 c3 c4 q k−2 q b q q 1 0 q 2 c= c1 c2 c3 c4 q k−2 q k−1 q k q k−1 k c c l l (a) (b) Abbildung 2.11: Literalbaum T (yi,j ) für yi,j = xk 2. Der Literalbaum T (yi,j ) zu Literal yi,j aus F entsteht wie folgt. Die Variable in Literal yi,j sei xk für ein k ∈ {1, . . . , n}, d.h. yi,j = xk oder yi,j = xk . Falls Literal yi,j nicht negiert ist, d.h. yi,j = xk , so ist der Literalbaum T (yi,j ) in Abbildung 2.11 angegeben. Sonst ist Literal yi,j negiert, d.h. yi,j = xk und der Literalbaum T (yi,j ) ist in Abbildung 2.12 angegeben. In beiden Fällen ist der Variablenbaum T (xk ) in Abbildung 2.10 ein Teilbaum von Literalbaum T (yi,j ). Der mit b markierte Knoten in Abbildungen 2.11 und 2.12 wird später noch zur Verbindung von Klauselbäumen benötigt. Die mit c markierten Knoten sind Wurzeln von ZickZack-Wegen mit l ∈ {1, . . . 3m} Knoten. Literal yi,j mit 1 ≤ i ≤ m und 1 ≤ j ≤ 3 erhält den Wert l = 3(i−1)+j. Hierdurch sind zwei Literalbäume niemals isomorph. 3. Der Klauselbaum T (Fi ) zu Klausel Fi = (yi,1 ∨ yi,2 ∨ yi,3) enthält die drei Literalbäume T (yi,1), T (yi,2) und T (yi,3 ) als Teilbäume, siehe Abbildung 2.13. Die Wurzel von T (Fi ) ist v1 , welche ein linkes Kind v2 und ein rechtes Kind v3 hat. Knoten v2 hat ein linkes Kind v4 und ein rechtes Kind v5 . Knoten v3 hat als rechtes Kind v6 . Knoten v4 hat als linkes Kind die Wurzel von T (yi,1 ), v5 hat als rechtes Kind die Wurzel von T (yi,2) und v6 hat als rechtes Kind die Wurzel von T (yi,3). Man beachte, dass die drei Wurzeln der drei Literalbäume in T (Fi ) die gleiche Tiefe besitzen. Beispiel 2.9 Abbildung 2.14 zeigt eine Zeichnung von Klausel F1 = (x1 ∨ x2 ∨ x4 ). Die Wurzel des Klauselbaumes ist als weiß gefüllte Raute, die Wurzelknoten der drei Literalbäume sind als weiß gefüllte Quadrate und die Wurzelknoten der Variablenbäume sind als weiß gefüllte Kreise dargestellt. Zeichnen von Graphen · Wintersemester 2015/16 33 p p b q q 1 0 q 2 c= c1 c2 c3 c4 q k−2 q b q 0 q 1 q 2 c= c1 c2 c3 c4 q k−2 q k−1 q k−1 q k k c c l l (b) (a) Abbildung 2.12: Literalbaum T (yi,j ) für yi,j = xk Nun können wir den Baum T zu Formel F beschreiben. Die Wurzel von T ist die Wurzel des ersten Klauselbaumes T (F1 ). Es bleibt noch zu erklären, wie für 1 ≤ i ≤ m−1 die Klauselbäume T (Fi ) und T (Fi+1 ) miteinander verbunden werden. Hierzu betrachten wir in T (Fi ) den Knoten b im Literalbaum T (yi,2 ) (also im mittleren Literal von Fi ) aus Abbildung 2.11 und 2.12. In b startet ein Zick-Zack-Weg, welcher zwei Level tiefer reicht als alle 6 Zick-Zack-Wege die in p und c in den Literalen der Klausel Fi starten. Hierzu reicht stets ein Weg mit höchstens max{n + 4, 3m + 2} Knoten. (Ein Weg der bei p startet, wird durch einen Weg ab b mit n+4 Knoten in der Länge sicher übertroffen und ein Weg der bei c startet, wird durch einen Weg ab b mit 3m+2 Knoten in der Länge sicher übertroffen.) Der letzte Knoten des Weges, der in b startet, ist die Wurzel des Klauselbaumes T (Fi+1 ). Beispiel 2.10 Als Beispiel geben wir in Abbildung 2.15 den Baum T zu Formel F = (x1 ∨ x2 ∨ x3 ) ∧ (x1 ∨ x2 ∨ x4 ) ∧ (x2 ∨ x3 ∨ x4 ) an. Die Wurzelknoten der drei Klauselbäme sind als weiß gefüllte Rauten, die Wurzelknoten der drei Literalbäume sind als weiß gefüllte Quadrate und die Wurzelknoten der Variablenbäume sind als weiß gefüllte Kreise dargestellt. Die Zeichnung entspricht der folgenden erfüllenden Wahrheitswertbelegung β. i β(xi ) 1 2 3 4 1 1 0 1 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 34 v v v 4 T(y ) i,1 2 1 v 3 v 5 T(y ) i,2 v 6 T(y ) i,3 Abbildung 2.13: Klauselbaum T (Fi ) zu Fi = (yi,1 ∨ yi,2 ∨ yi,3) Abbildung 2.14: Ein Klauselbaum T (F1 ) zu Klausel F1 = (x1 ∨ x2 ∨ x4 ). Wir zeigen, dass F genau dann erfüllbar ist, wenn T unter den Bedingungen (B1)-(B6) und (B8) mit Breite b = 24 gezeichnet werden kann. Hierbei wird in (B3) der Mindestabstand m = 2 gewählt. Beobachtung 2.11 Jedes Vorkommen eines Variablenbaumes T (xk ) in T ist ein Teilbaum von T . Damit muss nach (B6) jeder Teilbaum T (xk ) bis auf Verschiebung isomorph gezeichnet werden. (⇒) Es sei F erfüllbar mit der Wahrheitsbelegung β : {x1 , . . . , xn } → {0, 1}. Mit Hilfe von β geben wir nun eine Zeichnung d(T ) von T an, indem wir bei den Variablen- und Literalbäumen die gemäß ihres Wahrheitswertes bzgl. β passende Zeichnung aus obigen Abbildungen wählen. Zeichnen von Graphen · Wintersemester 2015/16 35 Abbildung 2.15: Baum T zur Formel F = (x1 ∨ x2 ∨ x3 ) ∧ (x1 ∨ x2 ∨ x4 ) ∧ (x2 ∨ x3 ∨ x4 ). 36 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 Für 1 ≤ k ≤ n zeichnen wir in d den Variablenbaum T (xk ) für β(xk ) = 1 wie in Abbildung 2.10 (a), d.h. jedes Kind hat den horizontalen Mindestabstand von eins zu seinem Vater. Falls β(xk ) = 0, dann zeichnen wir mit d den Variablenbaum wie in Abbildung 2.10 (b), d.h. jedes Kind hat den horizontalen Mindestabstand von eins zu seinem Vater, aber das Kind der Wurzel p hat einen horizontalen Abstand von zwei zu seinem Vater. Für alle 1 ≤ i ≤ m und 1 ≤ j ≤ 3 zeichnen wir mit d den Literalbaum T (yi,j ) für yi,j = xk , d.h. eine nicht komplementierte Variable, für β(xk ) = 1 wie in Abbildung 2.11 (a) und für β(xk ) = 0 wie in Abbildung 2.11 (b). Falls yi,j = xk , d.h. eine komplementierte Variable, zeichnen wir mit d den Literalbaum T (yi,j ) für β(xk ) = 1 wie in Abbildung 2.12 (b) und für β(xk ) = 0 wie in Abbildung 2.12 (a). D.h., falls yi,j unter β den Wert 1 bekommt, ist Breite(d(T (yi,j ))) = 6 (Abbildung 2.11 (a) und Abbildung 2.12 (a)) und falls yi,j unter β den Wert 0 bekommt, ist Breite(d(T (yi,j ))) = 7 (Abbildung 2.11 (b) und Abbildung 2.12 (b)). Nun betrachten wir die Zeichnung der Klauselbäume. Für 1 ≤ i ≤ m und 1 ≤ j ≤ 3 ist die Wurzel von Literalbaum T (yi,j ) das einzige Kind seines Vaters, siehe Abbildung 2.13. Damit können wir diese drei Wurzeln so nahe beieinander platzieren wie wir wollen, ohne dabei Kriterium (B4) (Zentrieren von Vaterknoten über den Kindern) zu verletzen. Wir platzieren mit d die Wurzel von Literalbaum T (yi,1) eine Einheit links von ihrem Vater in T (Fi ). Die Wurzel von Literalbaum T (yi,2) plazieren wir soweit wie möglich nach links, so dass jeder Knoten aus T (yi,2) mindestens zwei Einheiten rechts von einem Knoten aus T (yi,1 ) platziert wird. Damit bleibt (B3) mit Mindestabstand m = 2 erfüllt. Analog platzieren wir die Wurzel von T (yi,3) möglichst weit nach links. Damit gilt: Breite(d(T (Fi ))) ≤ Breite(d(T (yi,1))) + 2 +Breite(d(T (yi,2))) + 2 +Breite(d(T (yi,3))) Da Formel F durch die Wahrheitswertbelegung β erfüllt wird, muss in Klausel Fi = yi,1 ∨ yi,2 ∨ yi,3 mindestens eines der drei Literale yi,j unter β den Wert 1 erlangen. Damit wird mindestens einer der drei Literalbäume T (yi,1), T (yi,2 ), T (yi,3) mit Breite 6 durch unsere Zeichnung d platziert und die anderen beiden mit Breite 6 oder 7. Damit folgt für jeden Klauselbaum Breite(d(T (Fi ))) ≤ 7 + 7 + 6 + 2 + 2 = 24. Wir wollen die Klauselbäume in T so platzieren, dass die Breite von T gleich der Breite des breitesten Klauselbaumes ist. Dies können wir wegen der Länge (n + 6 Knoten) und Flexibilität der verbindenden Zick-Zack-Wege tun, ohne dabei die Zeichnen von Graphen · Wintersemester 2015/16 37 geforderten Kriterien (B1)-(B6) und (B8) zu verletzten. Deshalb können wir für alle 1 ≤ i ≤ m in unserer Zeichnung d die Wurzel von Klauselbaum T (Fi ) so platzieren, dass der am weitesten links liegende Knoten in T (Fi ) die x-Koordinate 1 erhält. Damit ist Breite(d(T )) = max Breite(d(T (Fi ))) ≤ 24 1≤i≤m und die Behauptung wahr. Abbildung 2.15 veranschaulicht die beschriebene Zeichnung d für eine erfüllbare Formel F . (⇐) Angenommen T hat eine Zeichnung d(T ) mit Bedingungen (B1)-(B6) und (B8) und Breite(d(T )) ≤ 24. Wir definieren eine erfüllende Belegung β : {x1 , . . . , xn } → {0, 1} für F mit 1 ≤ k ≤ n durch 1 falls die Wurzel von T (xk ) in d(T ) genau eine Position rechts von ihrem Kind liegt β(xk ) = 0 sonst. Aufgrund von (B6) ist diese Belegung für jedes k ∈ {1, . . . , n} wohldefiniert, da für jede Variable xk jedes Vorkommen von Variablenbaum T (xk ) in d(T ) gleich gezeichnet wird und damit jede Wurzel eines Vorkommens von T (xk ) in d(T ) den gleichen horizontalen Abstand von ihrem Kind hat. Für einen Baum T und eine Zeichnung d von T bezeichnen wir mit Breiteℓ (d(T )) den Abstand des am weitesten links und am weitesten rechts liegenden Knoten aus T auf Level ℓ. Wir betrachten einen Literalbaum T (yi,j ) zu einem Literal yi,j , welches unter der gewählten Belegung β den Wert 0 bekommt. • Falls yi,j eine nichtkomplementierte Variable xk ist, muss xk durch β auch den Wert 0 bekommen. Damit muss nach unserer Definition von β die Wurzel von T (xk ) zwei Positionen rechts von ihrem Kind liegen, d.h. wir zeichnen yi,j wie in Abbildung 2.11 (b). • Falls yi,j eine komplementierte Variable xk ist, muss xk durch β den Wert 1 bekommen. Damit muss nach unserer Definition von β die Wurzel von T (xk ) eine Positionen rechts von ihrem Kind liegen, d.h. wir zeichnen yi,j wie in Abbildung 2.12 (b). Damit ist also in beiden Fällen Breite3 (d(T (yi,j ))) = 7. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 38 Angenommen die oben definierte Belegung β erfüllt die Formel F nicht, dann gibt es eine Klausel Fi , welche von β nicht erfüllt wird, woraus folgt, dass Breite(d(T )) ≥ ≥ ≥ = Breite(d(T (Fi ))) Breite6 (d(T (Fi ))) 7+2+7+2+7 25. Dies ist ein Widerspruch zur Wahl von d. Damit ist die Annahme falsch, d.h. β erfüllt die Formel F . Bemerkung 2.12 Im unkorrigierten Beweis von Supowit und Reingold von 1983 wurden isomorphe Teilbäume unterschiedlich gezeichnet. • Isomorphe Teilbäume in Literalbäumen zu negierten Literalen wurden unterschiedlich gezeichnet. • Weiterhin wurden zu in mehreren Klauseln auftretenden Literale die Literalbäume zusammen mit den ein bzw. zwei Kanten über deren Wurzeln durch die Konstruktion der Klauselbäume unterschiedlich gezeichnet, obwohl diese isomorph sind. Das Einführen der Zick-Zack-Wege unter den mit c markierten Knoten in Literalbäumen behebt diese Fehler jedoch. Satz 2.13 (Supowit, Reingold 1983) Das Problem B INARY T REE D RAWING für die Kriterien (B1)-(B6) und (B8) ist für b = 24 NP-vollständig. Beweis. Im Beweis von Satz 2.8 kann b = 24 gewählt werden. Für ein Optimierungsproblem Π und eine Instanz I des Problemes bezeichnet man mit OP T (I) den Wert einer optimalen Lösung von Π bei Eingabe von I. Ein Approximationsalgorithmus A für Π ist ein Algorithmus, der eine zulässige Lösung für Π liefert. Der Wert der Lösung von A bei Eingabe von I wird mit A(I) bezeichnet. Ein Approximationsalgorithmus A für Π hat eine relative Güte k, falls für jede Instanz I von Π gilt T (I) max{ OPA(I) , OPA(I) } ≤ k. T (I) Gegeben: Ausgabe: M IN B INARY T REE D RAWING Ein binärer Baum T = (V, E). Eine Zeichnung von T mit minimaler Breite, so dass eine Menge von Ästhetikkriterien erfüllt ist. Zeichnen von Graphen · Wintersemester 2015/16 39 Satz 2.14 (Supowit, Reingold 1983) Es gibt keinen Approximationsalgorithmus mit polynomieller Laufzeit, welcher M IN B INARY T REE D RAWING unter den Bedingungen (B1)(B6) und (B8) mit relativer Güte < 25 ≈ 1.04 löst, falls P 6= NP. 24 Beweis. Angenommen es gibt einen Approximationsalgorithmus A mit polynomieller Laufzeit für M IN B INARY T REE D RAWING unter den Bedingungen (B1)-(B6) und (B8) 25 . Dann kann man mit A das Problem B INARY T REE D RAWING mit relativer Güte ℓ < 24 für k = 24 und die Bedingungen (B1)-(B6) und (B8) wie folgt lösen: A(T ) ≤ 24 ⇔ OP T (T ) ≤ 24 Die Äquivalenz lässt sich leicht wie folgt zeigen: (⇒) Liefert der Algorithmus A bei Instanz T eine Ausgabe mit Breite A(T ) ≤ 24, so ist, da M IN B INARY T REE D RAWING ein Minimierungsproblem ist, OP T (T ) ≤ A(T ) ≤ 24. (⇐) Falls A(T ) > 24, so ist 25 ≤ A(T ) ≤ ℓ · OP T (T ) < 24. 25 24 · OP T (T ), d.h. OP T (T ) > Da A in polynomieller Zeit arbeitet, wäre das NP-vollständige Entscheidungsproblem B I NARY T REE D RAWING für k = 24 und die Bedingungen (B1)-(B6) und (B8) in P was impliziert, dass P = NP gilt und somit einen Widerspruch zur Voraussetzung liefert. Damit ist die Annahme falsch und die Behauptung ist gezeigt. Es sei Π ein Optimierungsproblem. Ein polynomielles Approximationsschema für Π ist ein Algorithmus A, welcher als Eingabe eine Instanz für Π und eine Fehlerschranke ǫ, 0 < ǫ < 1, hat, so dass A für jedes feste ǫ ein Approximationsalgorithmus mit relativer Güte (1 + ǫ) für Π ist. Korollar 2.15 Es gibt kein polynomielles Approximationsschema für M IN B INARY T REE D RAWING unter den Bedingungen (B1)-(B6) und (B8), falls P 6= NP. Wir betrachten nun Algorithmen zum Zeichnen binärer Bäume, die möglichst viele der Ästhetikkriterien (B1)-(B8) erfüllen mit nichtnotwendigerweise minimaler Breite. 2.2.3 Inorder Zeichnung Unser erster Algorithmus zum Zeichnen von Binärbäumen T = (V, E) führt eine Inordernummerierung der Knoten von T aus (Abschnitt 2.2.1) und vergibt für die Knoten v ∈ V die folgenden Koordinaten: Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 40 • y(v) = −Tiefe(v) • x(v) = Inorder-Nummer(v) Beispiel 2.16 (Inorder Zeichnung) Abbildung 2.16 zeigt eine Inorder Zeichnung eines Binärbaumes mit 12 Knoten. 0 −1 −2 −3 −4 1 2 3 4 5 6 7 8 9 10 11 12 Abbildung 2.16: Inorder Zeichnung eines Binärbaumes Erfüllte Ästhetikkriterien: (B1) + (B2) + (B3) + (B4) - (B5) + (B6) + (B7) + (B8) + Nachteil der Zeichnung: Die Breite der Darstellung beträgt stets |V | − 1 und ist somit fast immer nicht optimal. 2.2.4 Linksbündige Zeichnung Als nächstes betrachten wir eine linksbündige Zeichnung (englisch: leftmost drawing) zum Zeichnen von Binärbäumen T = (V, E). Hier wird T in Preorder (Abschnitt 2.2.1) durchlaufen und dabei für die Knoten v ∈ V die folgenden Koordinaten bestimmt: • y(v) = −Tiefe(v) • x(v) = kleinste positive noch unbesetzte Position auf Tiefengeraden von v Beispiel 2.17 (Linksbündige Zeichnung) Abbildung 2.17 zeigt eine linksbündige Zeichnung des Binärbaumes mit 12 Knoten aus Beispiel 2.16. Zeichnen von Graphen · Wintersemester 2015/16 41 0 −1 −2 −3 −4 1 2 3 4 Abbildung 2.17: Linksbündige Zeichnung eines Binärbaumes Erfüllte Ästhetikkriterien: (B1) + (B2) - (B3) + (B4) - (B5) + (B6) - (B7) - (B8) + Insgesamt erhält man hier also sehr unschöne Zeichnungen. Der einzige Vorteil der Zeichnung ist wohl, dass die Breite der Darstellung minimal groß ist. 2.2.5 Teilbaum Zeichnung Zur Teilbaum Zeichnung eines Binärbaumes T = (V, E) zeichnet man zunächst einen vollständigen Binärbaum der Höhe h = Höhe(T ) und 2h Blättern, z.B. • mit 45 Grad Winkeln für die Kantenführung und variabler Höhe zwischen den Schichten oder • mit fester Höhe zwischen den Schichten und variablen Winkeln und löscht anschliessend die in T nicht vorhandene Knoten und Kanten. Beispiel 2.18 (Teilbaum Zeichnung) Abbildung 2.18 zeigt den Binärbaum mit 12 Knoten aus Beispiel 2.16 als Teilbaum eines vollständigen Binärbaumes der Höhe 4. Die rot markierten Knoten und Kanten wurden dabei entfernt. Erfüllte Ästhetikkriterien: (B1) -/+ (B2) + (B3) + (B4) + (B5) + (B6) - (B7) + (B8) + Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 42 Abbildung 2.18: Teilbaum Zeichnung eines Binärbaumes (B1) wird nur bei fester Höhe 1 zwischen den Schichten und variablen Winkeln zur Kantenführung erfüllt. Nachteil der Zeichnung: Die Breite der Darstellung kann die Knotenanzahl deutlich überschreiten. 2.2.6 Wetherell-Shannon Algorithmus Der folgende Algorithmus zum Zeichnen von Binärbäumen wurde 1979 von Wetherell und Shannon entwickelt [WS79]. Der Algorithmus stellt die Lage, die Ordnung und die Hierachie der Knoten dar, indem er die beiden ersten Ansätze gewissermassen kombiniert werden. Hier wird das linke Kind soweit links wie möglich und der Vater zentriert gezeichnet. Idee Der Algorithmus von Wetherell und Shannon (kurz: WS-Algorithmus) arbeitet nach dem Teile und Beherrsche (englisch: divide and conquer) Prinzip4 auf einem Binärbaum 4 Das Prinzip Teile und Beherrsche (englisch: divide and conquer), (lateinisch: divide et impera) arbeitet ein Problem ,,von oben nach unten“ (englisch: top-down) ab. Dazu wird ein Problem in Teilprobleme zerlegt (divide), welche von der gleichen Art sind wie das ursprüngliche Problem und wobei die Lösung des ursprünglichen Problems aus den Lösungen der Teilprobleme zusammengesetzt werden kann (conquer). Die Teilprobleme werden entweder nach dem gleichen Schema gelöst oder, falls diese so einfach sind, direkt. Zeichnen von Graphen · Wintersemester 2015/16 43 T = (V, E). Für die inneren Knoten v ∈ V mit zwei Kindern werden Zeichnungen für die Teilbäume Tℓ (v) und Tr (v) kombiniert, so dass v mittig über den Wurzeln dieser Teilbäume platziert werden kann. Hierbei kann es vorkommen, dass wir einen Mindestabstand von 3, statt üblich 2, fordern müssen. Bemerkung 2.19 Falls ein Knoten v zwei Kinder hat, so kann das Zentrieren von v über seinen Teilbäumen einen Mindestabstand von 3 statt 2 zwischen den Bäumen Tℓ (v) und Tr (v) erfordern, da deren Wurzeln sonst einen ungeraden Abstand haben, siehe Abbildung 2.19. ! ? 2 3 Abbildung 2.19: Zusammenfügen von zwei Teilbäumen, deren Wurzeln einen ungeraden Abstand haben. Falls einer der beiden Teilbäume Tℓ (v) und Tr (v) leer ist, so wird v einen Gitterpunkt nach links bzw. rechts von der Wurzel des anderen Teilbaumes gezeichnet. Das Ergebnis des WS-Algorithmus bezeichnen wir als WS-Zeichnung für T . In Abbildung 2.20 ist der WS-Algorithmus angegeben. Beispiel 2.20 (WS-Algorithmus) Wir wenden den Algorithmus von Wetherell und Shannon auf den Baum in Abbildung 2.21 an. Die Knoten sind bereits in Postorder nummeriert. • T (a): x(a) = 1, a ist ein Blatt und erster Knoten mit Tiefe 2 a b c d e f g h i j k l m n v x(v) 1 • T (b): x(b) = 1, b ist ein Blatt und erster Knoten mit Tiefe 3 a b c d e f g h i j k l m n v x(v) 1 1 Dieses Vorgehen führt offenbar zu einem rekursiven Algorithmus. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 44 WS(T = (V, E)) { } w = root(T ); if |V | = 1 then x(w) = nächste freie Position auf der Tiefengerade (letzte belegte Position + 2); else { // divide if (Tℓ (w) nicht leer) then WS(Tℓ (w)); if (Tr (w) nicht leer) then WS(Tr (w)); // conquer if (Tℓ (w) oder Tr (w) leer) then platziere w einen Gitterpunkt links bzw. rechts von der Wurzel von Tr (w) bzw. Tℓ (w). Falls so für w eine Position bestimmt wird, die links von der nächsten freien (d.h. nicht mindestens zwei Positionen rechts von der letzten belegten) liegt, wird T (w) entsprechend nach rechts verschoben. else platziere w zentriert über seinen Kindern. Falls so für w eine Position bestimmt wird, die links von der nächsten freien (d.h. nicht mindestens zwei Positionen rechts von der letzten belegten) liegt, wird T (w) entsprechend nach rechts verschoben. Falls nach Bemerkung 2.19 zwischen Tr (w) und Tℓ (w) ein Mindestabstand von drei notwendig wird, verschiebe Tr (w) um eine Position nach rechts. } Abbildung 2.20: WS-Algorithmus in Pseudocode • T (c): x(c) = 3, c ist ein Blatt und zweiter Knoten mit Tiefe 3, platziere c mit horizontalem Abstand 2 zu b v a b c d e f g h i j k l m n x(v) 1 1 3 • T (d): x(d) = 3, d hat zwei Kinder b und c, platziert man d mittig über diesen, so ist man zu nahe an a, verschiebe d und den darunterliegenden Teilbaum um 1 nach rechts v a b c d e f g h i j k l m n x(v) 1 2 4 3 Zeichnen von Graphen · Wintersemester 2015/16 45 n e n m d l d k a b h l k a j c m e c h b i j i f g g f 1 2 3 4 5 6 Abbildung 2.21: Beispiel zum Algorithmus von Wetherell und Shannon • T (e): x(e) = 2, e hat zwei Kinder a und d, platziere e mittig über diesen v a b c d e f g h i j k l m n x(v) 1 2 4 3 2 • T (f ): x(f ) = 1, f ist ein Blatt und erster Knoten mit Tiefe 6 a b c d e f g h i j k l m n v x(v) 1 2 4 3 2 1 • T (g): x(g) = 3, g ist ein Blatt und zweiter Knoten mit Tiefe 6, platziere g mit horizontalem Abstand 2 zu f v a b c d e f g h i j k l m n x(v) 1 2 4 3 2 1 3 • T (h): x(h) = 2, h hat zwei Kinder f und g, platziere h mittig über diesen v a b c d e f g h i j k l m n x(v) 1 2 4 3 2 1 3 2 • T (i): x(i) = 4, i ist ein Blatt und zweiter Knoten mit Tiefe 5, platziere i mit horizontalem Abstand 2 zu h a b c d e f g h i j k l m n v x(v) 1 2 4 3 2 1 3 2 4 • T (j): x(j) = 3, j hat zwei Kinder h und i, platziere j mittig über diesen v a b c d e f g h i j k l m n x(v) 1 2 4 3 2 1 3 2 4 3 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 46 • T (k): x(k) = 6, k hat ein linkes Kind j, platziert man k eine Position weiter rechts, so ist man zu nahe an der Position von c, verschiebe k und den darunterliegenden Teilbaum um 2 nach rechts v a b c d e f g h i j k l m n x(v) 1 2 4 3 2 3 5 4 6 5 6 • T (l): x(l) = 5, l hat ein rechtes Kind k, platziere l eine Position weiter links v a b c d e f g h i j k l m n x(v) 1 2 4 3 2 3 5 4 6 5 6 5 • T (m): x(m) = 4, m hat ein rechtes Kind l, platziere m eine Position weiter links v a b c d e f g h i j k l m n x(v) 1 2 4 3 2 3 5 4 6 5 6 5 4 • T (n): x(n) = 3, n hat zwei Kinder e und m, platziere n mittig über diesen a b c d e f g h i j k l m n v x(v) 1 2 4 3 2 3 5 4 6 5 6 5 4 3 Laufzeit Um eine lineare Laufzeit für den WS-Algorithmus zu erreichen, geht man in zwei Phasen vor. 1. Die erste Phase durchläuft die Knoten in Postorder, wie in Abbildung 2.20 angegeben. Allerdings werden im ,,conquer“-Schritt die Verschiebungen der Teilbäume nicht sofort ausgeführt. Es werden nur vorläufige x-Koordinate x(v) bestimmt und notwendige horizontale Verschiebungen für T (v) (ohne v) werden an den entsprechenden Wurzeln v der Teilbäume in einer Variable modifier(v) gespeichert. 2. In der zweiten Phase bestimmt man die endgültigen x-Koordinaten der Knoten v, indem man die Verschiebungswerte von der Wurzel bis zum Knoten v aufsummiert. Durchlaufe T = (V, E) dazu in Preorder und führe alle notwendigen Verschiebungen durch. Hierzu wird jeder Knoten v ∈ V um X modifier(v ′ ) v′ Vorfahre von v nach rechts verschoben. Satz 2.21 Der WS-Algorithmus zeichnet einen Binärbaum mit n Knoten in Zeit O(n). Zeichnen von Graphen · Wintersemester 2015/16 47 Erfüllte Ästhetikkriterien: (B1) + (B2) + (B3) + (B4) + (B5) + (B6) - (B7) - (B8) + Ästhetikkriterien (B6) und (B7) werden nicht erfüllt. Im Allgemeinen ist die Breite nicht optimal und es werden unschöne Zeichnungen produziert, siehe Abbildung 2.22 bzw. Abbildung 2.23 und Übungsaufgabe 2.13. w Abbildung 2.22: Ein Binärbaum gezeichnet vom WS-Algorithmus. w w Abbildung 2.23: Ein Binärbaum und sein Spigelbild gezeichnet vom WS-Algorithmus. Der Algorithmus erfüllt also (B7) nicht. Der obige Algorithmus von Wetherell-Shannon wurde von den Autoren so modifiziert, dass er stets eine Zeichnung mit minimaler Breite liefert. Diese Modifikation liefert jedoch teilweise noch unschönere Zeichnungen als die vorgestellte Version, da sie (B4), (B6) und (B7) nicht erfüllt. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 48 2.2.7 Reingold-Tilford Algorithmus Wir geben nun den Algorithmus von Reingold und Tilford aus dem Jahr 1981 an [RT81], der binäre Bäume zeichnet, so dass die Eigenschaften (B1)-(B8) gelten. Idee Der Algorithmus von Reingold und Tilford (kurz: RT-Algorithmus) arbeitet nach dem Teile und Beherrsche (englisch: divide and conquer) Prinzip auf einem Binärbaum T = (V, E). Der Algorithmus bestimmt zunächst für jeden Knoten v ∈ V eine Darstellung für den linken Teilbaum Tℓ (v) und eine Darstellung für den rechten Teilbaum Tr (v). Diese Zeichnungen bleiben bis auf eine mögliche horizontale Verschiebung erhalten. Sobald Knoten v bearbeitet wird, werden die beiden Zeichnungen nebeneinander platziert, so dass auf allen Ebenen die Knoten im linken Teibaum von den Knoten im rechten Teilbaum einen Mindestabstand von zwei oder drei (siehe Bemerkung 2.19) Gitterpunkten haben, so dass v mittig über die beiden Wurzeln von Tℓ (v) und Tr (v) gezeichnet werden kann. Falls einer der beiden Teilbäume Tℓ (v) und Tr (v) leer ist, so wird v einen Gitterpunkt nach links bzw. rechts von der Wurzel des anderen Teilbaumes gezeichnet. Das Ergebnis bezeichnen wir als RT-Zeichnung für T . In Abbildung 2.24 ist der RT-Algorithmus angegeben. Beispiel 2.22 (RT-Algorithmus) Wir wenden den RT-Algorithmus in Abbildung 2.24 auf den Baum in Abbildung 2.25 an. Der rekursive Algorithmus betrachtet die Knoten wie folgt in Postorderreihenfolge. • T (j): x(j) = 1 v a b c d e f g h i j k x(v) 1 • T (k): x(k) = 1 a b c d e f g h i j k v x(v) 1 1 • T (g): x(g) = 2 und verschiebe Tr (g) = T (k) um 2 nach rechts v a b c d e f g h i j k x(v) 2 1 3 • T (d): x(d) = 1 v a b c d e f g h i j k x(v) 1 2 1 3 Zeichnen von Graphen · Wintersemester 2015/16 RT(T = (V, E)) { } w = root(T ); if |V | = 1 then x(w) = 1; else { // divide if (Tℓ (w) nicht leer) then RT(Tℓ (w)); if (Tr (w) nicht leer) then RT(Tr (w)); // conquer if (Tℓ (w) oder Tr (w) leer) then zeichne w einen Gitterpunkt links bzw. rechts von der Wurzel von Tr (w) bzw. Tℓ (w) else schiebe die Zeichnungen von Tℓ (w) und Tr (w) horizontal bis auf zwei bzw. drei (siehe Bemerkung 2.19) Gitterpunkte zusammen, so dass w mittig über die beiden Wurzeln von Tℓ (w) und Tr (w) gezeichnet werden kann } Abbildung 2.24: RT-Algorithmus in Pseudocode • T (b): x(b) = 2 a b c d e f g h i j k v x(v) 2 1 2 1 3 • T (h): x(h) = 1 v a b c d e f g h i j k x(v) 2 1 2 1 1 3 • T (i): x(i) = 1 v a b c d e f g h i j k x(v) 2 1 2 1 1 1 3 • T (e): x(e) = 2 und verschiebe Tr (e) = T (i) um 2 nach rechts v a b c d e f g h i j k x(v) 2 1 2 2 1 3 1 3 49 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 50 a b c d g h j f e i k 1 2 3 4 5 6 7 Abbildung 2.25: Beispiel zum RT-Algorithmus • T (f ): x(f ) = 1 v a b c d e f g h i j k x(v) 2 1 2 1 2 1 3 1 3 • T (c): x(c) = 3 und verschiebe Tr (c) = T (f ) um 3 nach rechts a b c d e f g h i j k v x(v) 2 3 1 2 4 2 1 3 1 3 • T (a): x(a) = 4 und verschiebe Tr (a) = T (c) um 3 nach rechts v a b c d e f g h i j k x(v) 4 2 6 1 5 7 2 4 6 1 3 (Verschiebung ergibt sich an Schicht 3: x(g) − x(h) + 2 = 3) (x(a)= (x(b) + x(c) + 3)/2 = 4) Laufzeit Um eine lineare Laufzeit für den RT-Algorithmus zu erreichen, geht man wieder in zwei Phasen vor. 1. Die erste Phase durchläuft die Knoten in Postorder, wie in Abbildung 2.24 angegeben. Allerdings werden nun im ,,conquer“-Schritt die Verschiebungen der Teilbäume nicht sofort ausgeführt. Notwendige Verschiebungen werden an den entsprechenden Wurzeln der Teilbäume gespeichert. Zeichnen von Graphen · Wintersemester 2015/16 51 2. In einem zweiten Durchlauf bestimmt man in Preorder die endgültigen xKoordinaten der Knoten v, indem man die Verschiebungswerte von der Wurzel bis zum Knoten v aufsummiert. Es bleibt zu klären, wie im Postorderdurchlauf im ,,conquer“-Schritt die beiden bestimmten Teilbaumzeichnungen effizient zusammengefügt werden. Dazu betrachten wir die kleinste und größte genutzte x-Koordinate für jede Tiefe der beiden Teilbäume. Definition 2.23 (Linke und rechte Abgrenzung) Für einen binären Wurzelbaum T mit Höhe h ist die linke Abgrenzung (linke Kontur) von T die Folge von Knoten (v0 , v1 , . . . , vh ), so dass vi der Knoten mit minimaler x-Koordinate auf Tiefe i von T ist und die rechte Abgrenzung (rechte Kontur) von T die Folge von Knoten (v0 , v1 , . . . , vh ), so dass vi der Knoten mit maximaler x-Koordinate auf Tiefe i von T ist. Beispiel 2.24 (Linke und Rechte Abgrenzung) Wir betrachten den Binärbaum T mit Wurzel w in Abbildung 2.26. Die rechte Abgrenzung von Tℓ (w) besteht aus den vier Knoten (v1 , v2 , v3 , v4 ). Die linke Abgrenzung von Tr (w) besteht aus den drei Knoten (v5 , v6 , v7 ). Der erste Kontaktpunkt zwischen den beiden Teilbäumen ist zwischen Knoten v3 und v7 , welche beim Zusammenfügen von Tℓ (w) und Tr (w) den Mindestabstand 2 bzw. 3 erhalten. w v1 v5 v2 v6 v3 v7 v4 Abbildung 2.26: Linke und Rechte Abgrenzung Die Abgrenzungsinformation kann an jedem Knoten gespeichert und während des Postorderdurchlaufes wie folgt aktualisiert werden. Die Berechnung der Abgrenzungen für Baum T (v) kann aus den Abgrenzungen für Tℓ (v) und Tr (v) bestimmt werden. Falls Höhe(Tℓ (v)) = Höhe(Tr (v)) dann besteht die linke Abgrenzung von T (v) aus v und der linke Abgrenzung von Tℓ (v) und die rechte Abgrenzung von T (v) aus v und der rechten Abgrenzung von Tr (v). Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 52 Falls Höhe(Tℓ (v)) < Höhe(Tr (v)) dann besteht die linke Abgrenzung von T (v) aus v, der linke Abgrenzung von Tℓ (v) und der linken Abgrenzung von Tr (v) ab Höhe(Tℓ (v))+ 1 (Konkatenation zweier bekannter Abgrenzungen). Die rechte Abgrenzung von T (v) besteht aus v und der rechten Abgrenzung von Tr (v). Falls Höhe(Tℓ (v)) > Höhe(Tr (v)) analog. Damit können wir im Postorderdurchlauf davon ausgehen, dass nach dem Besuchen von Knoten v die linke und rechte Abgrenzung von T (v) bekannt sind. Somit kann ein Knoten v bearbeitet werden, indem man die rechte Abgrenzungsliste (v0 , . . . , vhℓ ) von Tℓ (v) und die linke Abgrenzungsliste (v0′ , . . . , vh′ r ) von Tr (v) parallel von oben nach unten (schichtenweise) durchläuft bis die Abgrenzung des Teilbaumes mit geringerer Höhe endet. Während dieses Durchlaufs bestimmt man für jede Schicht i die minimal notwendige Verschiebung für Teilbaum Tr (v) durch x(vi ) − x(vi′ ) + 2 und maximiert diese über alle Schichten. Wenn die Summe s der bisherigen x-Werte der Kinder von v und dieser maximalen Verschiebung ungerade ist, dann wähle x(vi ) − x(vi′ ) + 3 als Verschiebung für Teilbaum Tr (v). Weiterhin setzen wir x(v) = (Summe der bisherigen x-Werte der Kinder von v + Verschiebung von Tr (v))/2. Satz 2.25 Der RT-Algorithmus zeichnet einen Binärbaum mit n Knoten in Zeit O(n). Beweis. Es sei T ein binärer Wurzelbaum und F (T (v)) die benötigte Zeit des RT-Algorithmus für den Baum T (v). Wir definieren die gegenüber der üblichen Höhendefinition um eins erhöhten Werte: h(v) = Höhe(T (v)) + 1 hℓ (v) = Höhe(Tℓ (v)) + 1 hr (v) = Höhe(Tr (v)) + 1 Wir zeigen Induktiv über die Anzahl der Knoten n, dass F (T (v)) = n − h(v) gilt. Induktionsanfang n = 0: F (T (v)) = 0 − 0 = 0 n = 1: F (T (v)) = 1 − 1 = 0 Induktionsschritt Es gelte die Behauptung für alle Bäume mit weniger als n Knoten. Für einen Baum T (v) mit n Knoten hat Tℓ (v) nur k < n und Tr (v) somit n − k − 1 Knoten. Wir oben angemerkt, durchlaufen wir die Abgrenzungen nur bis zur Höhe des Teilbaumes mit geringer Höhe. Damit erhalten wir die folgende Formel für die Zeichnen von Graphen · Wintersemester 2015/16 53 Zeit F (T (v)) des RT-Algorithmus angewandt auf Baum T (v). F (T (v)) = = = = = = F (Tℓ (v)) + F (Tr (v)) + min{hℓ (v), hr (v)} k − hℓ (v) + (n − k − 1) − hr (v) + min{hℓ (v), hr (v)} n − 1 − hℓ (v) − hr (v) + min{hℓ (v), hr (v)} n − 1 − max{hℓ (v), hr (v)} n − (max{hℓ (v), hr (v)} + 1) n − h(v) Somit ist die Laufzeit des RT-Algorithmus aus O(n). Die Breite der Darstellung kann jedoch beliebig weit von der minimalen Breite der Darstellung bzgl. der Kriterien (B1)-(B8) abweichen. Dies gilt, da es eine Menge von binären Bäumen T = (V, E) gibt, welche auf einem Gitter mit Breite zwei gezeichnet werden können und der Algorithmus von Reingold und Tilford eine Zeichnung mit Breite |V 3|+2 liefert. Beispiel 2.26 (Breite beim RT-Algorithmus) Es sei T1 der Baum in Abbildung 2.27. Der RT-Algorithmus zeichnet den Baum T1 mit Breite 3 und eine optimale Zeichnung für T1 hat die Breite 2. Für k ≥ 2 besteht der Baum Tk aus einer Kopie von Tk−1 und einer Kopie von T1 , wobei das Blatt von Tk−1 mit der Wurzel von T1 identifiziert wird. Dann hat Baum Tk genau n = 6k + 1 Knoten, d.h. k = n−1 . Der RT-Algorithmus zeichnet den Baum Tk mit 6 n+2 + 1 = während die Breite einer optimalen Zeichnung gleich 2 ist, Breite 2k + 1 = n−1 3 3 siehe Abbildung 2.28. T1 RT−Zeichnung, Breite 3 minimale Breite 2 Abbildung 2.27: Der Baum T1 zur Breite des RT-Algorithmus Der RT-Algorithmus kann für Bäume mit n Knoten Θ(n2 ) Fläche benötigen. (Übungsaufgabe 2.16) Erfüllte Ästhetikkriterien: (B1) + (B2) + (B3) + (B4) + (B5) + (B6) + (B7) + (B8) + Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 54 Tk RT−Zeichnung, Breite 2k+1 minimale Breite 2 Abbildung 2.28: Der Baum Tk zur Breite des RT-Algorithmus Der Algorithmus von Reingold und Tilford ist somit sehr effizient und liefert stets sehr schöne Zeichnungen. In Anwendungen wird zum Zeichnen von binären Bäumen üblicherweise der Algorithmus von Reingold und Tilford eingesetzt. Der Algorithmus kann auch auf beliebige Wurzelbäume (mit mehr als zwei Kindern) erweitert werden, indem die Wurzel über die mittlere x-Koordinate der Kinder platziert wird, siehe Abschnitt 2.3. 2.2.8 Chans Algorithmus Wir stellen nun den Algorithmus von Chan [Cha02] vor, welcher Binärbäume mit einer fast-linearen Fläche zeichnet. Prinzipiell geht Chans Algorithmus wie der RT-Algorithmus vor. Der Unterschied liegt in der Platzierung der Kinder und der Wurzel, welche die Bedingung (B1) nicht mehr erfüllt, d.h. dass die Kinder der inneren Knoten nicht mehr stets auf der gleichen Ebene angeordnet werden. Erster Ansatz von Chan Es sei T = (V, E) ein binärer Baum mit Wurzel w, den wir rekursiv wie folgt zeichnen. Wenn wir Zeichnungen für den linken Teilbaum Tℓ (w) und den rechten Teilbaum Tr (w) Zeichnen von Graphen · Wintersemester 2015/16 55 von w gefunden haben, kombinieren diese beiden Zeichnungen durch Anwendung der folgenden zwei Regeln zu einer Zeichnung für T . • In der linken Regel verbinden wir w vertikal mit der Wurzel von Tr (w), platzieren die rechte obere Ecke des Tℓ (w) umgebenden Rechtecks eine Einheit unter und eine Einheit links von w und platzieren die obere Kante des Tr (w) umgebenden Rechtecks auf die selbe Linie wie die untere Kante des Tℓ (w) umgebenden Rechtecks. • In der rechten Regel verbinden wir w vertikal mit der Wurzel von Tℓ (w), platzieren die linke obere Ecke des Tr (w) umgebenden Rechtecks eine Einheit unter und eine Einheit rechts von w und platzieren die obere Kante des Tℓ (w) umgebenden Rechtecks auf die selbe Linie wie die untere Kante des Tr (w) umgebenden Rechtecks, siehe Abbildung 2.29. Tl Tr Tl Tr Tl Tr Schichtenzeichnung linke Regel rechte Regel Abbildung 2.29: Linke und rechte Regel in Chans Algorithmus Für einen Baum T bezeichnen wir mit |T | die Anzahl seiner Knoten. Chans Algorithmus geben wir in Abbildung 2.30 an. Beispiel 2.27 (Chans Algorithmus) Wir wenden Chans Algorithmus auf den Baum in Abbildung 2.31 an. Chans Algorithmus liefert eine Zeichnung mit Breite 7 und Höhe 17. Erfüllte Ästhetikkriterien: (B1) - (B2) - (B3) + (B4) - (B5) + (B6) + (B7) + (B8) + Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 56 Chan1(T = (V, E)) { } w = root(T ); if |T | ≤ 1 then gib eine triviale Zeichnung von T zurück; else { // divide Chan1(Tℓ (w)); Chan1(Tr (w)); // conquer if |Tℓ (w)| < |Tr (w)| then kombiniere die beiden Zeichnungen mit der linken Regel; else kombiniere die beiden Zeichnungen mit der rechten Regel; } Abbildung 2.30: Erster Ansatz von Chan in Pseudocode Die Links-Rechts-Ordnung der Kinder bleibt erhalten und der Vater ist mindestens eine Einheit über seinen Kindern platziert. Die Höhe der Zeichnung mit Chans Algorithmus ist für binäre Bäume T mit n Knoten höchstens n − 1, z.B. wenn T ein Weg ist. Um die Fläche abzuschätzen, wollen wir die Breite abschätzen. Dazu modifizieren wir den Algorithmus durch Wahl eines Weges P von der Wurzel von T zu einem Blatt von T , siehe Abbildung 2.32. Die mittels Weg P modifizierte Version von Chans Algorithmus verallgemeinert die erste Version in dem Sinne, dass man die erste Version erhält, wenn P = (v0 , . . . , vk ) wie folgt gewählt wird. • v0 ist die Wurzel von T . • Für i = 0, . . . k − 1 sei vi bereits gewählt und Tℓ (vi ) und Tr (vi ) der linke bzw. rechte Teilbaum von T (vi ). Dann ist Wurzel von Tℓ (vi ), falls |Tℓ (vi )| ≥ |Tr (vi )|, vi+1 = Wurzel von Tr (vi ), falls |Tℓ (vi )| < |Tr (vi )|. Wir bezeichnen diesen speziellen Weg P als den Greedy-Weg von T . Abbildung 2.33 zeigt ein Beispiel zur Wahl des Weges P . Zeichnen von Graphen · Wintersemester 2015/16 57 Abbildung 2.31: Beipiel zum ersten Ansatz von Chans Algorithmus Es sei W (T ) die Breite einer Zeichnung von T mit dem in Abbildung 2.32 angegebenen Algorithmus. Dann gilt W (T ) = W (α) + W (β) + 2 (2.1) für einen linken Teilbaum α und einen rechten Teilbaum β am Weg P (d.h. für einen Teilbaum T (v) mit einem Geschwisterknoten von v auf dem Weg P ). Zur Abschätzung der Breite benötigen wir folgendes Lemma zur Abschätzung der Knotenanzahl in den Teilbäumen der Geschwisterknoten des Greedy-Weges. Lemma 2.28 Für je zwei verschiedene Teilbäume α und β des Greedy-Weges P in einem binären Baum T mit n Knoten gilt eine der folgenden Bedingungen. (1.) |α| ≤ n 2 und |β| ≤ n−|α| 2 (2.) |β| ≤ n 2 und |α| ≤ n−|β| . 2 oder Beweis. Die Geschwisterknoten der Wurzeln von α und β seien vj bzw. vi . Es gelte j < i. Nach Definition des Greedy-Weges P folgt dann, dass |α| ≤ |T (vj )| und |β| ≤ |T (vi )|. Weiterhin gilt |α| + |T (vj )| ≤ n und |α| + |T (vi )| + |β| ≤ n, siehe Abbildung 2.34. • Aus |α| + |T (vj )| ≤ n und |α| ≤ |T (vj )| folgt |α| ≤ n2 . • Aus |α| + |T (vi )| + |β| ≤ n und |β| ≤ |T (vi )| folgt |α| + 2|β| ≤ n bzw. |β| ≤ n−|α| . 2 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 58 Chan2(T = (V, E)) { } w = root(T ); if |T | ≤ 1 then gib eine triviale Zeichnung von T zurück; else { bestimme einen Weg P = (w = v0 , . . . , vk ) von der Wurzel w zu einem Blatt vk von T ; for i = 1 to k do zeichne den Teilbaum, welcher den Geschwisterknoten zu vi als Wurzel hat, rekursiv; kombiniere die Zeichnungen durch Anwenden der linken und rechten Regel auf die Knoten von P , so dass alle Knoten aus P auf einer vertikalen Linie gezeichnet werden; } Abbildung 2.32: Erster Ansatz von Chan mit Weg P in Pseudocode Damit folgt Aussage (1.) des Lemmas. Falls j > i, folgt Aussage (2.) des Lemmas. Aus Gleichung (2.1) folgt mit Lemma 2.28 die folgende Abschätzung für die Breite W (n) von Bäumen mit n Knoten. W (n) ≤ maxn−n (W (n1 ) + W (n2 ) + 2). n1 ≤ n ,n2 ≤ 2 Das Maximum wird für n1 = n 2 2 1 und n2 = n 4 angenommen. n n W (n) ≤ W ( ) + W ( ) + O(1). 2 4 Man kann mit vollständiger Induktion zeigen, dass √ log2 ( 1+2 W (n) ∈ O(n 5 ) ) ∈ O(n0,695 ). D.h. die Fläche beträgt höchstens O(n1,695 ). Satz 2.29 Mit Chans Algorithmus kann man einen Binärbaum mit n Knoten in Zeit O(n) und Fläche O(n1,695 ) zeichnen. Zeichnen von Graphen · Wintersemester 2015/16 59 Abbildung 2.33: Der Greedy-Weg P in Chans Algorithmus ist hier dick eingezeichnet. vj α T ( vj ) v i T ( vi ) β Abbildung 2.34: Zum Beweis von Lemma 2.28 Zweiter Ansatz von Chan Durch eine geschicktere Wahl des Weges P im ersten Ansatz, ergibt sich für die Breite der Zeichnung eine Rekursionsgleichung mit einer kleineren Lösung. Der Weg P = (v0 , v1 , . . .) von der Wurzel zu einem Blatt wird nun wie folgt gewählt. • v0 ist die Wurzel von T • Für i = 0, . . . , k − 1 sei vi bereits gewählt und - wie bisher - Tℓ (vi ) und Tr (vi ) der linke bzw. rechte Teilbaum von T (vi ). Weiterhin sei αi ein linker Teilbaum am Weg (v0 , . . . , vi ) mit maximaler Größe und βi ein rechter Teilbaum am Weg (v0 , . . . , vi ) 60 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 mit maximaler Größe. Dann ist Wurzel von Tℓ (vi ), vi+1 = Wurzel von Tr (vi ), falls |αi | + |Tr (vi )| ≤ |βi | + |Tℓ (vi )|, falls |αi | + |Tr (vi )| > |βi | + |Tℓ (vi )|. Wir bezeichnen diesen Weg P als den Halbierenden-Weg. Lemma 2.30 Für jeden linken Teilbaum α und rechten Teilbaum β des HalbierendenWeges eines binären Baumes T mit n Knoten gilt |α| + |β| ≤ n . 2 Beweis. Die Vaterknoten der Wurzeln von α und β seien vj bzw. vi und es gelte j < i (i < j folgt symmetrisch), siehe Abbildung 2.35. v j α αi v βi i T (v ) l i T(v ) =β r i Abbildung 2.35: Zum Beweis von Lemma 2.30 Da β ein rechter Teilbaum des Halbierenden-Weges ist, ist vi+1 nicht die Wurzel von β, damit ist vi+1 ein linkes Kind von vi und damit gilt nach Wahl des Halbierenden-Weges, dass |αi | + |Tr (vi )| ≤ |βi | + |Tℓ (vi )|. Weiterhin gilt |αi | + |Tℓ (vi )| + |Tr (vi )| + |βi | ≤ n. Deshalb gilt für den kleineren Summanden |αi | + |Tr (vi )| ≤ n2 . Da |α| ≤ |αi | und β = Tr (vi ) folgt die Behauptung. Beispiel 2.31 (Chans Algorithmus) Wir wenden den zweiten Ansatz von Chans Algorithmus auf den Baum in Abbildung 2.36 an. Chans Algorithmus liefert eine Zeichnung mit Breite 6 und Höhe 17. Indem wir den Halbierenden-Weg in Chans Algorithmus in Abbildung 2.32 verwenden, folgt aus Gleichung (2.1) mit Lemma 2.30 die Abschätzung W (n) ≤ max n (W (n1 ) + W (n2 ) + 2). n1 +n2 ≤ 2 Zeichnen von Graphen · Wintersemester 2015/16 61 Abbildung 2.36: Beipiel zum zweiten Ansatz von Chans Algorithmus Das Maximum wird für n1 = n 4 und n2 = n 4 angenommen. n W (n) ≤ 2 · W ( ) + O(1). 4 Man kann mit vollständiger Induktion zeigen, dass √ W (n) ≤ c n − 2 für alle n und eine Konstante c, d.h. W (n) ∈ O(n0,5 ) gilt. Somit beträgt die Fläche höchstens O(n1,5 ). Satz 2.32 Mit Chans Algorithmus kann man einen Binärbaum mit n Knoten in Zeit O(n) und Fläche O(n1,5 ) zeichnen. Dritter Ansatz von Chan Um eine fast lineare Flächennutzung zu erreichen, wird die linke und rechte Regel erweitert. Es sei T = (V, E) ein binärer Baum mit n Knoten und v ∈ V ein Knoten von T . Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 62 • Die erweiterte linke Regel, angewendet auf v, erlaubt es Tr (v) horizontal zu verschieben, so dass die x-Koordinate der Wurzel von Tr (v) größer oder gleich ist als die x-Koordinate von v, d.h. so dass die Wurzel von Tr (v) nicht links von v liegt. • Die erweiterte rechte Regel, angewendet auf v, erlaubt es Tℓ (v) horizontal zu verschieben, so dass die x-Koordinate der Wurzel von Tℓ (v) kleiner oder gleich ist als die x-Koordinate von v, d.h. so dass die Wurzel von Tℓ (v) nicht rechts von v liegt, siehe Abbildung 2.37. Tl Tr Tl Tr Tr Schichtenzeichnung erweiterte linke Regel Tl erweiterte rechte Regel Abbildung 2.37: Erweiterte linke und rechte Regel in Chans Algorithmus Wir betrachten wieder den Greedy-Weg P = (v0 , v1 , . . . , vk ) und die Teilbäume mit Wurzel vi wie im ersten Ansatz. Für eine später zu bestimmende Konstante A sei k ′ der größte Index, so dass |T (vk′ )| ≥ n − A. Es sei vk′ ein linkes (rechtes) Kind und P ′ der Teilweg (v0 , v1 , . . . , vk′ ) und P ′′ der linkeste (rechteste) Weg von vk′ +1 zu einem Blatt von T , siehe Abbildung 2.38. Im dritten Ansatz wenden wir den Algorithmus aus dem ersten Ansatz (Abbildung 2.32) auf die beiden Wege P ′ und P ′′ an und auf vk′ −1 wenden wir die erweiterte rechte (linke) Regel an, siehe Abbildung 2.39. Zur Analyse der Breite einer Zeichnung sei vk′ ein linkes Kind. Die Breite von T ist dann W (T ) = max{W (α) + W (β) + 2, W (γ) + 1} (2.2) wobei α und β linker bzw. rechter Teilbaum von P ′ sind und γ ein rechter Teilbaum von P ′′ ist, siehe Abbildung 2.38. Lemma 2.33 Es seien P ′ und P ′′ wie oben definiert für den Greedy-Weg P in einem binären Baum T mit n Knoten. Zeichnen von Graphen · Wintersemester 2015/16 63 v v 0 0 P’ P’ v k’−1 v k’ v k’+1 v P’’ k’−1 v k’ v k’+1 P’’ Abbildung 2.38: Die Wege P ′ und P ′′ im dritten Ansatz von Chans Algorithmus 1. Für jeden Teilbaum α eines Knotens von P ′ gilt |α| ≤ A. 2. Für jeden Teilbaum γ eines Knotens von P ′′ gilt |γ| ≤ n − A. Beweis. Die erste Behauptung folgt aus |T (vk′ )| ≥ n − A und |α| + |T (vk′ )| ≤ n. Die zweite Behauptung folgt, da γ entweder im linken oder rechten Teilbaum von T (vk′ ) enthalten ist und beide dieser Teilbäume höchstens |T (vk′+1 )| < n − A groß sind. Aus Abschätzung (2.2) und dem letzten Lemma erhalten wir für jedes A die folgende Rekursionsgleichung für die maximale Breite W (n) eines Baumes mit n Knoten. W (n) ≤ max{2W (A) + 2, W (n − A) + 1} Daraus kann man folgern, dass n W (n) ≤ 2W (A) + O( ) A Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 64 Chan3(T = (V, E)) { } w = root(T ); if |T | ≤ 1 then gib eine triviale Zeichnung von T zurück; else { bestimme den Greedy-Weg P = (w = v0 , . . . , vk ) es sei k ′ der größte Index, so dass |T (vk′ )| ≥ n − A if vk′ ist ein linkes Kind then es sei P ′ = (v0 , v1 , . . . , vk′ ) es sei P ′′ der am weitesten links liegende Weg von vk′ +1 zu einem Blatt zeichne die Teilbäume an den Wegen P ′ und P ′′ rekursiv kombiniere die Zeichnungen mit der linken und rechten Regel angewendet auf die Knoten v0 , v1 , . . . , vk′ −2 , so dass die Knoten v0 , v1 , . . . , vk′−1 vertikal in einer Linie positioniert werden wende die linke Regel auf die Knoten von P ′′ und vk′ an, so dass diese Knoten alle vertikal in einer Linie positioniert werden wende die erweiterte rechte Regel auf Knoten vk′ −1 an, so dass vk′ am linken Rand der Zeichnung positioniert wird else symmetrisch zum if-Fall, wähle für P ′′ den am weitesten rechts liegenden Weg ab vk′ +1 und ersetze links durch rechts } Abbildung 2.39: Dritter Ansatz von Chan in Pseudocode Wenn wir nun A = n 1 2ǫ für ein festes ǫ > 0 setzen, dann gilt W (n) ≤ 2W ( n 2 1 ǫ 1 ) + O(2 ǫ ) Mit dem Mastertheorem folgt 1 W (n) ∈ O(2 ǫ · nǫ ) = O(nǫ ) D.h. die Fläche beträgt höchstens O(n1+ǫ ) Satz 2.34 Mit Chans Algorithmus kann man für festes ǫ > 0 einen Binärbaum mit n Knoten in Zeit O(n) und Fläche O(n1+ǫ ) zeichnen. Zeichnen von Graphen · Wintersemester 2015/16 65 Eine bessere Abschätzung erhält man, wenn wir A = √ n 2 2 log(n) setzen, dann gilt √ n W (n) ≤ 2W ( √ ) + O(2 2 log(n) ) 2 2 log(n) Dann folgt W (n) ∈ O(2 √ 2 log(n) · p log(n)) Satz 2.35 Mit Chans Algorithmus kann festes ǫ > 0 einen Binärbaum mit n Kno√ man für p 2 log(n) ten in Zeit O(n) und Fläche O(n · 2 · log(n)) zeichnen. 2.2.9 HV-Zeichnungen Es sei T = (V, E) ein Binärbaum. Eine HV-Zeichnung (HV=horizontal vertikal) für T ist eine spezielle orthogonale Gitterzeichnung, die man durch einen Teile und Beherrsche Algorithmus erzeugen kann. Es sei T ein binärer Wurzelbaum mit Wurzel w, den wir rekursiv zeichnen. Wenn wir Zeichnungen für den linken Teilbaum Tℓ (w) und den rechten Teilbaum Tr (w) gefunden haben, kombinieren wir diese beiden Zeichnungen durch eine horizontale Kombination oder eine vertikale Kombination. • In der horizontale Kombination verbinden wir w vertikal mit der Wurzel von Tℓ (w) und horizontal mit der Wurzel von Tr (w). Hierbei bekommt die Wurzel von Tℓ (w) eine um eins kleinere y-Koordinate als w und die Wurzel von Tr (w) bekommt eine xKoordinate, welche um eins größer ist, als die größte in Tℓ (w) genutzte x-Koordinate, siehe Abbildung 2.40. • In der vertikalen Kombination verbinden wir w ebenso vertikal mit der Wurzel von Tℓ (w) und horizontal mit der Wurzel von Tr (w). Hierbei bekommt die Wurzel von Tr (w) eine um eins größere x-Koordinate als w und die Wurzel von Tℓ (w) bekommt eine y-Koordinate, welche um eins kleiner ist, als die kleinste in Tr (w) genutzte yKoordinate, siehe Abbildung 2.40. Beispiel 2.36 (HV-Zeichnung) Abbildung 2.41 zeigt eine HV-Zeichnung eines binären Baumes. Um die Ordnung der Kinder zu erhalten, muss der linke Teilbaum in einer horizontalen Kombination links bzw. in einer vertikalen Kombination unter den rechten Teilbaum gezeichnet werden. Die Höhe und Breite einer HV-Zeichnung eines Binärbaumes mit n Knoten beträgt höchstens n − 1, da in jeder Zeile und jeder Spalte mindestens ein Knoten positioniert wird. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 66 horizontale Kombination vertikale Kombination Abbildung 2.40: Horizontale Kombination und vertikale Kombination Abbildung 2.41: HV-Zeichnung eines binären Baumes Satz 2.37 Die HV-Darstellung eines vollständigen Binärbaumes mit n Knoten benötigt eine Fläche aus O(n). Beweisidee. Zeichne einen vollständigen Binärbaum T , so dass für Knoten mit ungerader Tiefe (1, 3, 5, 7, . . .) eine horizontale Kombination und für Knoten mit gerader Tiefe (0, 2, 4, 6, . . .) eine vertikale Kombination durchgeführt wird. Dann kann man die Fläche wie behauptet abschätzen, siehe Übungsaufgabe 2.20. Für nicht vollständige Binärbäume mit n Knoten kann eine HV-Zeichnung jedoch eine Fläche von Ω(n2 ) benötigen. Für Binärbäume ohne Ordnung auf den Knotennachfolgern kann man ein ähnliches Verfahren mit besserer Platzschranke angeben, siehe Abschnitt 2.4.1. Zeichnen von Graphen · Wintersemester 2015/16 67 2.2.10 H-Zeichnungen In einer H-Zeichnung oder H-Layout eines Binärbaumes werden die Kinder jedes inneren Knoten entweder beide horizontal oder beide vertikal vom Vaterknoten platziert. Beispiel 2.38 (H-Zeichnung) Abbildung 2.42 zeigt H-Zeichnungen für vollständige Binärbäume. Abbildung 2.42: H-Zeichnungen für vollständige Binärbäume Satz 2.39 Eine H-Zeichnung eines vollständigen Binärbaumes mit n Knoten benötigt eine Fläche aus O(n). Beweis. Einen vollständigen Binärbaum mit Höhe h bezeichnen wir hier mit Th . Offensichtlich hat Th genau 2h Blätter. Es sei Sh die Höhe einer H-Zeichnung von Th . Es gilt S0 = 0 und Sh+2 = 2 · Sh + 2. Damit folgt, dass S2h = 2h+1 − 2 und damit ist die Fläche von T2h (2h+1 − 2)2 ≤ 4 · 22h + 4, welche im Vergleich zur Knotenanzahl |T2h | = 22h+1 − 1 = 2 · 22h − 1 ergibt sich eine Fläche, höchstens doppelt so groß ist wie die Knotenanzahl, also eine lineare Fläche. Bemerkung 2.40 (HV-, T-, H-Zeichnungen) • In HV-Zeichnungen werden die Knoten rechts oder unterhalb von ihren Vorgängern platziert. • Dies wird in sogenannten T-Zeichnungen verallgemeinert, indem man die Kinder rechts, unterhalb oder links von ihren Vorgängern platziert. • In H-Zeichnungen werden die Kinder rechts, unterhalb, links oder oberhalb von ihren Vorgängern platziert. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 68 2.3 Zeichnen von k-nären Bäumen Die in Abschnitt 2.2.4 und 2.2.5 erläuterten Methoden der linksbündigen Zeichnung und der Teilbaum Zeichnung für Binärbäume lassen sich unmittelbar auch auf k-näre Bäume erweitern. 2.3.1 Algorithmus von Walker Idee Walker hat 1990 den RT-Algorithmus zum Zeichnen von beliebigen Wurzelbäumen verallgemeinert [Wal90]. Wir wollen hier nur kurz auf die Idee der Verallgemeinerung eingehen. (a) (b) (c) (d) Abbildung 2.43: Ideen von Walkers Algorithmus Um Wurzelbäume mit mehr als zwei Nachfolgern an den inneren Knoten zu zeichnen könnte man den RT-Algorithmus erweitern, indem man die Kinder von links nach rechts durchläuft und die entsprechenden Teilbäume der Reihe nach positioniert bzw. verschiebt. Hierdurch würde jedoch Kriterium (B7) nicht erfüllt, da die Teilbäume so nahe wie möglich nebeneinander platziert werden und sich kleine Teilbäume links zwischen großen anhäufen, siehe Abbildung 2.43 (a). Dieses Problem könnte man lösen, indem man einen weiteren Durchlauf der Kinder von rechts nach links hinzufügt und diese von rechts nach links platziert, siehe Abbildung 2.43 (b). Betrachtet man dann die Durschnittswerte der horizontalen Koordinaten beider Durchläufe für die Knoten, erfüllen wir Kriterien (B1)-(B8)5 , siehe Abbildung 2.43 (c). 5 (B4) muss hier natürlich auf mehr als zwei Kinder erweitert werden. Zeichnen von Graphen · Wintersemester 2015/16 69 Unschön bleibt jedoch, dass hier zwischen großen Teilbäumen möglichweise kleine Teilbäume in der Mitte eng zusammenplatziert werden. Dies behebt der Algorithmus von Walker. Hierzu verwendet der Algorithmus Abgrenzungsinformationen wie der RT-Algorithmus. Wenn die Agrenzungen zweier Teilbäume T1 und T2 verglichen werden und der anzufügende Teilbaum T2 verschoben werden muss, so werden alle zwischen T1 und T2 liegenden Teilbäume ebenfalls verschoben, siehe Abbildung 2.43 (d). Satz 2.41 Mit Walkers Algorithmus kann man einen Wurzelbaum mit n Knoten in Zeit O(n2 ) zeichnen, so dass Kriterien (B1)-(B8) erfüllt werden. ohne Beweis Verbesserung von Walkers Algorithmus Die Laufzeit von Walkers Algorithmus wurde 2002 von Buchheim et al. verbessert [BJL02]. Satz 2.42 Mit der Modifikation von Walkers Algorithmus kann man einen Wurzelbaum mit n Knoten in Zeit O(n) zeichnen, so dass Kriterien (B1)-(B8) erfüllt werden. ohne Beweis 2.3.2 Chans Algorithmus Chans Algorithmus aus Abschnitt 2.2.8 kann auch auf Wurzelbäume mit mehr als zwei Nachfolgern an inneren Knoten erweitert werden. Satz 2.43 (Chan 1999) Jeder geordnete Wurzelbaum mit n Knoten kann mit einer geradlinigen, planaren Zeichnung,√ welche die Ordnung der Söhne jedes inneren Knotens erhält, mit einer Fläche von O(n · 4 2·log(n) ) gezeichnet werden. ohne Beweis 2.4 Zeichnen von allgemeinen Wurzelbäumen Um Wurzelbäume zu zeichnen, in welchen es keine Ordnung auf den Kindern der innneren Knoten gibt, kann man natürlich eine beliebige Ordnung wählen und nach obigen Algorithmen vorgehen. Weitere Ansätze werden nun beschrieben. 2.4.1 RHHV-Zeichnungen Mit Right Heavy-Horizontal Vertical Zeichnungen (RHHV-Zeichnungen) können Wurzelbäume mit höchstens zwei Nachfolgern für jeden inneren Knoten, d.h. Binärbäume ohne Ordnung auf den Kindern, gezeichnet werden. Man schränkt hier die HV-Zeichnungen aus Abschnitt 2.2.9 ein, so dass der Teilbaum mit mehr Knoten rechts vom Teilbaum mit weniger Knoten gezeichnet wird. Damit wird nur die horizontale Kombination (Abbildung 70 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 2.40) benötigt. Da hierdurch die Links-Rechts-Ordnung der Kinder verloren gehen kann, eignet sich diese Verfahren jedoch nur für Wurzelbäumen ohne Ordnung auf den Söhnen. Durchlaufe T = (V, E) rekursiv in Postorder 1. Falls T aus einem Knoten w besteht, dann zeichne den Knoten. 2. Rufe den Algorithmus rekursiv für die (nichtleeren) Teilbäume der Wurzel von T auf. (divide) 3. Füge die beiden Zeichnungen mit einer horizontalen Kombination zusammen, so dass der Teilbaum mit mehr Knoten nach rechts gezeichnet wird. Beispiel 2.44 (RHHV-Zeichnung) Abbildung 2.44 zeigt eine RHHV-Zeichnung eines Wurzelbaumes. Abbildung 2.44: RHHV-Zeichnung eines Wurzelbaumes Satz 2.45 Es sei T = (V, E) ein Wurzelbaum mit höchstens zwei Nachfolgern für jeden inneren Knoten und n Knoten. Dann gelten für eine RHHV-Zeichnung d(T ) folgende Aussagen. (1.) Die Breite von d(T ) ist höchstens n − 1. (2.) Die Höhe von d(T ) ist aus O(log(n)). (3.) Die Fläche von d(T ) ist aus O(n · log(n)). Beweis. (1.) ist klar und (3.) ist klar, sobald (2.) gezeigt ist. Es sei b ein Knoten mit minimaler y-Koordinate in d(T ). Da hier nur die horizontale Kombination (Abbildung 2.40) angewendet wird, hat jede vertikal verlaufende Kante die Länge 1. Damit ist die Höhe der Zeichnung d(T ) gleich der maximalen Anzahl der vertikal verlaufenden Kanten, die auf dem Weg von der Wurzel von T zu b durchlaufen werden. Da der größere Teilbaum immer rechts vom kleineren Teilbaum platziert wird, gilt für jede Kante e = {u, v} auf dem Weg von der Wurzel von T zu b, wo u ein Vorgänger von v ist, dass der Teilbaum T (u) mindestens zwei mal soviele Knoten hat wie der Teilbaum T (v). Damit ist die Anzahl der Knoten in T aus O(log(n)). Zeichnen von Graphen · Wintersemester 2015/16 71 Bemerkung 2.46 RHHV-Zeichnungen kann man auch für Wurzelbäume mit höheren Knotengrad definieren, so dass die Abschätzungen aus Satz 2.45 weiterhin gelten, siehe Abbildung 2.45. max. Teilbaum Abbildung 2.45: RHHV-Zeichnungen für Wurzelbäume mit beliebigen Knotengrad 2.4.2 Inklusionsdiagramme Eine Zeichnung eines Wurzelbaumes T = (V, E) mit Wurzel w heißt Inklusionsdiagramm oder Inklusionslayout, falls die folgenden Bedingungen erfüllt sind. 1. Jeder Knoten v ∈ V wird durch ein achsenparalleles Rechteck Rv dargestellt. Kanten werden nicht dargestellt. 2. Für ein Blatt v hat Rv die Breite b(v) und die Höhe h(v), welches beides vorgegebene positive Zahlen sind. 3. Falls u ein Kind von v ist, so ist Ru vollständig in Rv enthalten und es wird ein Mindestabstand zwischen den Rändern eingehalten. 4. Für zwei Geschwisterknoten u und v wird zwischen Ru und Rv ein horizontaler oder vertikaler Mindestabstand eingehalten, so dass die Rechtecke überschneidungsfrei sind. Beispiel 2.47 (Inklusionsdiagramm) Abbildung 2.46 zeigt ein Inklusionsdiagramm für einen Wurzelbaum. Die Fläche eines Inklusionsdiagramms für einen Wurzelbaum T ist die Fläche des Rechtecks der Wurzel von T . Gegeben: Frage: I NCLUSION L AYOUT P ROBLEM (ILP) Ein Wurzelbaum T , positive Breiten und Höhen für alle Blätter von T und eine positive Zahl ganze k. Gibt es ein Inklusionslayout von T mit Fläche hochstens k? Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 72 Abbildung 2.46: Ein Inklusionslayout (rechts) für einen Wurzelbaum (links) Satz 2.48 ILP ist NP-vollständig. Beweisidee. Reduktion von 3-PARTITION. Satz 2.49 ILP ist für Wurzelbäume mit höchstens zwei Nachfolgern pro Knoten NP-vollständig. Beweisidee. Reduktion von PARTITION. 2.4.3 Ornigramme In einem Ornigramm (englisch: tip over drawing) eines Wurzelbaumes werden die Söhne eines Knotens v entweder alle horizontal unter v oder alle vertikal unter v gezeichnet. Beispiel 2.50 (Ornigramm) Abbildung 2.47 zeigt ein Ornigramm für einen Wurzelbaum. Abbildung 2.47: Ein Ornigramm (rechts) für einen Wurzelbaum (links) Ornigramme eignen sich zum Zeichnen von Wurzelbäumen mit geringer Tiefe (≤ 5) und hohem Knotengrad. Zeichnen von Graphen · Wintersemester 2015/16 73 2.4.4 Radiale Zeichnungen In radialen Zeichnungen (polaren Zeichnungen) von Wurzelbäumen T = (V, E) mit Wurzel w zeichnet man die Knoten v ∈ V auf konzentrischen Kreisen C1 , C2 , . . . , Ck , d.h. Kreisen mit gleichem Mittelpunkt, um die Wurzel, so dass alle Knoten mit Tiefe i von T auf Kreis Ci liegen. Die Radien ρ(i) der Kreise Ci werden durch eine monotone Funktion, z.B. ρ(i) = Tiefe(v) beschrieben, siehe Abbildung 2.48 und [Ead92]. Abbildung 2.48: Radiale Zeichnung eines Wurzelbaumes Einfache Methode Eine einfache Methode zum Erzeugen radialer Zeichnungen von Wurzelbäumen besteht darin, die Knoten mit Tiefe i von T gleichmäßig auf Kreis Ci mit Radius i zu verteilen. Hierbei können jedoch Kantenkreuzungen auftreten, siehe Abbildung 2.49. Abbildung 2.49: Radiale Zeichnung mit Kantenkreuzung Transformation von Ebenen in Kreise Eine radiale Zeichnung eines Wurzelbaumes T = (V, E) mit Wurzel w erhält man, indem man wie folgt vorgeht. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 74 1. Man konstruiert z.B. mit dem RT-Algorithmus eine Schichtenzeichnung d′ von T . 2. Platziere die Wurzel w auf (0, 0) 3. Transformiere mittels geometrischer Transformation (Kartesisch (x, y) 7→ (r, ϕ) Polar) aus d′ eine radiale Zeichnung d für T . Sektormethode In der Sektormethode wird für jeden Knoten v ein Kreisabschnitt (Sektor) S(v) mit einem Öffnungswinkel α(v) bestimmt, so dass α(v) = c · b(v), wobei c > 0 und b(v) die Anzahl der Blätter im Teilbaum T (v) sind. Wenn v1 , . . . , vk die Kinder von v sind, so wird der Sektor S(v) auf die Kinder aufgeteilt. Da S(v) nur von den Blättern abhängt, gilt [ S(v) = S(vi ), 1≤i≤k siehe Abbildung 2.50. C1 C2 C 3 C 4 v Sektor S(v) Abbildung 2.50: Sektorplatzierung der Knoten Um planare radiale Darstellungen zu erhalten, müssen wir die Knoten in T (v) in eine konvexe Teilmenge von Sektor S(v) platzieren. Zur Abschätzung der Fläche einer radialen Zeichnung gelte ein Mindestabstand von 1 zwischen zwei Knoten, der Baum T habe die Höhe h und jeder Knoten von T habe höchstens d Nachfolger. Weiterhin sei ρ(i) so definiert, dass der Abstand zwischen zwei aufeinanderfolgenden Kreisen und der Abstand des Mittelpunktes und des ersten Kreises gleich ist. Dann hat die Zeichnung eine Fläche von höchstens O(h2 · d2 ). Zeichnen von Graphen · Wintersemester 2015/16 75 Ein Baum, der diese Schranke annimmt ist in Abbildung 2.51 gezeigt. Der innerste Kreis C1 hat einen Umfang von mindestens d. Damit ist der Radius von C1 aus O(d). Nach Definition von ρ(i) ist der Radius des letzten Kreises Ck aus O(h · d). Damit ist die Fläche aus O(h2 · d2 ). Abbildung 2.51: Radiale Zeichnung mit großer Fläche Radiale Zeichnungen werden auch oft für freie Bäume (Bäume ohne Wurzel) verwendet, siehe Abschnitt 2.5.1. 2.5 Zeichnen von Bäumen ohne Wurzel Wir befassen uns nun mit dem Zeichnen von Bäumen, in welchen keine Wurzel ausgezeichnet ist. Ein kreisfreier zusammenhängender Graph ohne ausgezeichnete Wurzel wird auch freier Baum genannt. Eine beliebte Möglichkeit freie Bäume zu zeichnen, besteht darin, eine geeignete Wurzel zu wählen und dann einen Algorithmus zum Zeichnen von allgemeinen Wurzelbäumen anzuwenden. 2.5.1 Radiale Zeichnungen Radiale Zeichnungen werden oft für freie Bäume verwendet. Hier wird eine errechnete Wurzel im Mittelpunkt plaziert und die anderen Knoten auf konzentrischen Kreise um diesen Mittelpunkt herum. Um eine Wurzel auzuwählen, betrachten wir die folgenden Notationen für zusammenhängenden ungerichteten Graphen G = (V, E). • Der Abstand zweier Knoten u, v ∈ V ist d(u, v) = die Länge (Kantenanzahl) eines kürzesten Weges zwischen u und v. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 76 • Die Exzentrizität eines Knotens v ∈ V ist ecc(v) = max d(u, v). u∈V • Der Radius von G ist r(G) = min ecc(v). v∈V • Der Durchmesser von G ist d(G) = max ecc(v). v∈V • Das Zentrum von G ist die Menge z(G) = {v ∈ V | ecc(v) = r(G)}. Wählt man in einem freien Baum T einen Knoten aus dem Zentrum z(T ) als Wurzel, so hat der entstehende Wurzelbaum eine minimale Höhe. Beispiel 2.51 (Zentrum) Abbildung 2.52 zeigt einen Baum mit einem Zentrum, welches aus einem und einen Baum mit einem Zentrum welches, zwei adjazenten Knoten besteht. Abbildung 2.52: Zentrum mit einem bzw. zwei adjazenten Knoten Satz 2.52 Das Zentrum eines Baumes besteht aus einem oder aus zwei adjazenten Knoten und kann in linearer Zeit bestimmt werden. Beweisidee. Das Zentrum eines Baumes T kann rekursiv wie folgt gefunden werden. 1. Falls T höchstens zwei Knoten hat, dann haben wir das Zentrum gefunden. 2. Falls T mehr als zwei Knoten hat, so löschen wir alle Blätter aus T , bis T höchstens zwei Knoten besitzt. Zeichnen von Graphen · Wintersemester 2015/16 77 Eine radiale Zeichnung für einen freien Baum T = (V, E) erhält man, indem man, • falls |z(T )| = 1, den Knoten im Zentrum als Wurzel auswählt. • falls |z(T )| = 2, mittig auf die Kante zwischen den beiden Knoten in z(T ) einen neuen Knoten platziert und diesen als Wurzel auswählt. Den so definierten Wurzelbaum kann man dann wie in Abschnitt 2.4.4 zeichnen. 2.6 Übungsaufgaben Aufgabe 2.1 Geben Sie jeweils eine untere Schranke m(n) und eine obere Schranke M(n) für die Anzahl der Kanten in einem (a) ungerichteten Graph (b) ungerichteten Wald (c) ungerichteten Baum mit n Knoten an. Aufgabe 2.2 Es sei T ein Wurzelbaum n Knoten. (a) Wieviele Blätter hat T mindestens, falls jeder innere Knoten mindestens zwei Nachfolger hat? (b) Wie hoch ist T höchstens, falls jeder innere Knoten mindestens zwei Nachfolger hat? (c) Wieviele Blätter und welche Höhe hat T , falls T ein vollständiger k-närer Baum ist? Ihre Schranken sollen möglichst scharf seien, d.h. es soll zu jedem n einen Baum mit n Knoten geben, welcher die Schranke annimmt. Aufgabe 2.3 Geben Sie für den Binärbaum mit Wurzel g aus Abbildung 2.53 eine Inorder-, Preorder-, Postorder- und Levelorderreihenfolge der Knoten an. g f d h e c a i j l k b Abbildung 2.53: Binärbaum zu Aufgabe 2.3. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 78 Aufgabe 2.4 Zeigen Sie die folgenden Aussagen. (a) Aus einer Inorder- und Preorderreihenfolge der Knoten kann die Struktur eines binären Baumes eindeutig rekonstruiert werden, wenn die Schlüssel paarweise verschieden sind. (b) Die Aussage aus (a) gilt nicht, falls nur eine Preorderreihenfolge oder nur eine Postorderreihenfolge gegeben ist. Aufgabe 2.5 Bestimmen Sie wie in Bemerkung 2.6 für den Binärbaum mit Wurzel w aus Abbildung 2.54 alle isomorphen Teilbäume mit mindestens zwei Knoten. w d g c f b a l e k m n h i o j p r q Abbildung 2.54: Binärbaum zu Aufgabe 2.5 Aufgabe 2.6 Bestimmen Sie zu der 3-SAT Instanz F = (x1 ∨ x2 ∨ x3 ) ∧ (x1 ∨ x2 ∨ x3 ) wie im Beweis von Satz 2.8 einen Baum, welcher mit Breite höchstens 24 gezeichnet werden kann. Aufgabe 2.7 Schätzen Sie im Beweis von Satz 2.8 die Größe des Baumes T nach oben in Abhängigkeit von der Anzahl der Variablen n und der Klauseln m der Formel F ab. Aufgabe 2.8 Geben Sie einen Algorithmus mit linearer Laufzeit an, welcher für alle Knoten v eines Binärbaumes den Wert Tiefe(v) berechnet. Aufgabe 2.9 Geben Sie eine Inorder Zeichnung für den Binärbaum mit Wurzel w in Abbildung 2.55 an. Welche Breite, Höhe und Fläche benötigt Ihre Zeichnung? Aufgabe 2.10 Wir definieren drei neue Zeichenalgorithmen für Binärbäume, indem wir die Bestimmung x-Koordinaten in der Inorder Zeichnung wie folgt ersetzen. Zeichnen von Graphen · Wintersemester 2015/16 79 w Abbildung 2.55: Binärbaum zu Aufgabe 2.9 (a) x(v) = Preorder-Nummer(v) (b) x(v) = Postorder-Nummer(v) (c) x(v) = Levelorder-Nummer(v) Welche der Ästhetikkriterien (B1)-(B8) werden durch diese Algorithmen jeweils erfüllt? Aufgabe 2.11 Geben Sie eine linksbündige Zeichnung für den Binärbaum mit Wurzel g in Abbildung 2.53 an. Welche Breite, Höhe und Fläche benötigt Ihre Zeichnung? Aufgabe 2.12 Zeichen Sie den Binärbaum aus Beispiel 2.16 als Teilbaum eines vollständigen Binärbaumes der Höhe 4. Wählen Sie anders als in Beispiel 2.18 eine feste Höhe zwischen den Schichten und variable Winkel für die Kantenführung. Vergleichen Sie die Breite, Höhe und Fläche der erhaltenden Zeichnung mit denen der Zeichnung in Beispiel 2.18. Aufgabe 2.13 Bestimmen Sie für (a) den Baum in Abbildung 2.22 (b) die zwei Bäume in Abbildung 2.23 schrittweise die Koordinaten der Baumknoten nach dem Wetherell-Shannon Algorithmus. Welche Breite, Höhe und Fläche benötigten die Zeichnungen? Aufgabe 2.14 Geben Sie einen Binärbaum T an, so die vom Wetherell-Shannon Algorithmus erzeugte Zeichnung d(T ) Kriterium (B6) nicht erfüllt. Aufgabe 2.15 Zeichnen Sie den Binärbaum in Abbildung 2.22 mit dem RT-Algorithmus. Welche Breite, Höhe und Fläche benötigt Ihre Zeichnung? 80 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 Aufgabe 2.16 Zeigen Sie, dass der RT-Algorithmus für Bäume mit n Knoten eine Fläche von Θ(n2 ) benötigen kann. Hinweis: Betrachten Sie die Bäume aus Beispiel 2.26. Aufgabe 2.17 Zeichnen Sie den Baum aus Abbildung 2.54 mit dem ersten Ansatz von Chans Algorithmus. Welche Breite, Höhe und Fläche benötigt Ihre Zeichnung? Aufgabe 2.18 Zeichnen Sie den Baum aus Abbildung 2.54 mit dem zweiten Ansatz von Chans Algorithmus. Welche Breite, Höhe und Fläche benötigt Ihre Zeichnung? Aufgabe 2.19 Geben Sie für die vollständigen Binärbäume mit Höhe h ∈ {1, 2, 3, 4, 5} eine HV-Darstellung mit möglichst geringer Fläche an. Hinweis: Nutzen Sie die Regel aus der Beweisidee zu Satz 2.37. Aufgabe 2.20 Vervollständigen Sie den Beweis von Satz 2.37. Hinweis: Stellen Sie eine geeignete Rekursionsgleichung auf und gehen Sie ähnlich wie im Beweis von Satz 2.39 vor. Aufgabe 2.21 Geben Sie eine RHHV-Zeichnung für den Wurzelbaum in Abbildung 2.54 an. Welche Breite, Höhe und Fläche benötigt Ihre Zeichnung? Aufgabe 2.22 Es soll ein Algorithmus zur Bestimmung der Koordinaten in einer RHHVZeichnung angegeben werden. Eingabe sei stets ein Wurzelbaum T = (V, E) mit Wurzel w mit höchstens zwei Nachfolgern für jeden inneren Knoten. Ergängen Sie dazu z.B. den Algorithmus in Abbildung 2.56, welcher durch den Aufruf RHHV(w, 0, 0) eine RHHV-Zeichnung für den Eingabebaum T bestimmen soll. Aufgabe 2.23 Geben Sie ein Inklusionsdiagramm für den Wurzelbaum in Abbildung 2.54 an. Welche Fläche benötigt Ihre Zeichnung? Aufgabe 2.24 Bestimmen Sie für die zwei (freien) Bäume aus Abbildung 2.1 jeweils das Zentrum. Aufgabe 2.25 Geben Sie für die zwei (freien) Bäume aus Abbildung 2.1 jeweils eine planare radiale Zeichnung an. Zeichnen von Graphen · Wintersemester 2015/16 RHHV(v, x, y) { } zeichne v an Position (x, y); if v hat genau ein Kind v ′ then RHHV(, , ) if v hat genau zwei Kinder v ′ und v ′′ then { sei v ′ ein Kind mit maximal vielen Nachfolgern; sei v ′′ das andere Kind; RHHV(, , ) sei x′ die größte genutzte x-Koordinate RHHV(, , ) } Abbildung 2.56: RHHV-Algorithmus in Pseudocode 81 82 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 Kapitel 3 Hierarchische Zeichenverfahren In diesem Kapitel betrachten wir Algorithmen zum Erzeugen von hierarchischen Zeichnungen von Graphen. Hierbei werden die Knoten auf horizontale Schichten und die Kanten polygonal gezeichnet. Dieser Ansatz wurde zuerst von Sugiyama et al. [STT81] verfolgt (,,Sugiyama-Layout“). Einen Spezialfall von hierachischen Zeichnungen haben wir bereits in Kapitel 2 beim Zeichnen von Bäumen kennengelernt. Abbildung 3.1 zeigt eine hierarchische Zeichnung eines gerichteten Graphen. (a) gerichteter Graph (b) hierarchische Zeichnung Abbildung 3.1: Eine typische hierarchische Zeichnung eines gerichteten Graphen 3.1 Grundlagen Wir wiederholen einige Grundbegriffe für gerichtete Graphen. 83 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 84 • Ein gerichteter Graph (englisch: digraph, als Abkürzung von directed graph) G ist ein Paar (V, E), wobei V eine Menge von Knoten und E ⊆ V ×V eine Menge von gerichteten Kanten ist. Jede gerichtete Kante (u, v) ist ein geordnetes Paar von Knoten, wobei u der Startknoten und v der Zielknoten der Kante (u, v) ist. • Ein gerichteter Graph heißt azyklisch, falls er keinen gerichteten Kreis enthält. Einen azyklischen Graphen bezeichnet man auch als DAG, als Abkürzung von directed azyclic graph. • Die Nachbarschaft N(v) eines Knotens v in gerichteten Graphen unterteilt man in N + (v) = {u ∈ V | (v, u) ∈ E} und N − (v) = {u ∈ V | (u, v) ∈ E}. Dann gilt N(v) = N + (v) ∪ N − (v). • Die Menge der inzidenten Kanten δ(v) eines Knotens v in gerichteten Graphen unterteilt man in die Menge der aus v auslaufenden Kanten δ + (v) = {(v, u) | (v, u) ∈ E} und die Menge der in v einlaufenden Kanten δ − (v) = {(u, v) | (u, v) ∈ E}. Dann gilt δ(v) = δ + (v) ∪ δ − (v). • Der Eingangsgrad indegG (u) eines Knotens u in G ist die Anzahl der gerichteten Kanten mit u als Zielknoten. Der Ausgangsgrad outdegG (u) von u in G ist die Anzahl der gerichteten Kanten mit u als Startknoten. • Ein Knoten q ∈ V heißt Quelle, falls indegG (q) = 0 und ein Knoten s ∈ V heißt Senke, falls outdegG (s) = 0. Lemma 3.1 Jeder azyklische gerichtete Graph hat eine Quelle und eine Senke. Zeichnen von Graphen · Wintersemester 2015/16 85 • Eine topologische Sortierung (topologische Knotenordnung) für einen gerichteten Graphen G = (V, E) ist eine Nummerierung der Knoten von G, so dass alle Kanten von Knoten mit kleineren Nummern zu Knoten mit größeren Nummern gerichtet sind. Formal ist eine topologische Sortierung für G eine bijektive Abbildung h : V → {1, . . . , |V |}, so dass h(u) < h(v) für alle Kanten (u, v) in E gilt. Lemma 3.2 Ein gerichteter Graph G ist azyklisch genau dann, wenn G eine topologische Sortierung besitzt. • Eine Kante (u, v) in einem gerichteten Graph G heißt transitiv, falls es in G einen gerichteten Weg (u = v1 , . . . , vk = v) mit k ≥ 3 in G gibt. Die transitive Reduktion eines gerichteten Graphen erhält man, indem alle transitiven Kanten entfernt werden. Lemma 3.3 Die transitive Reduktion eines gerichteten azyklischen Graphen ist eindeutig und kann in polynomieller Zeit bestimmt werden. Idee Das Zeichnen nach der hierachischen Methode erfolgt in vier Phasen. (1) Entfernen von gerichteten Kreisen (Abschnitt 3.2) Es werden die Richtung von möglichst wenigen Kanten umgedreht, um den Graphen azyklisch zu machen. Damit können alle Kanten in eine Richtung gezeichnet werden, was im zweiten Schritt wichtig ist. Am Ende werden alle Kanten wieder in ihre Ausgangsrichtung gedreht. (2) Schichteneinordnung (Abschnitt 3.3) Es wird eine Schichtung des Graphen bestimmt, so dass alle Kanten nach unten zeigen. Da in den Folgeschritten oft sogar eine einfache Schichtung benötigt wird, platziert man auf den entsprechenden ,,langen“ Kanten künstliche Knoten. In dieser Phase bekommen die Knoten also eine y-Koordinate zugeordnet. (3) Kreuzungsminimierung (Abschnitt 3.4) Innerhalb der Schichten werden Permutationen der Knoten bestimmt, so dass möglichst wenige Kantenkreuzungen entstehen. Hierzu betrachtet man häufig schrittweise die Kanten zwischen je zwei aufeinanderfolgenden Schichten. (4) Horizontale Koordinatenzuweisung und Kantenführung (Abschnitt 3.5) Die im zweiten Schritt eingefügten künstlichen Knoten erzeugen möglicherweise Kantenknicke im Layout. Die horizontale Position der Knoten wird z.B. so bestimmt, dass die Anzahl dieser Knicke minimiert wird. Jeder Knoten bekommt hier also eine xKoordinate. Die Kanten werden dann geradlinig oder polygonal eingezeichnet. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 86 3.2 Entfernen von Kreisen Wie erzeugen wir aus einem Graphen G einen azyklischen gerichteten Graphen? Falls G ungerichtet ist, so kann man die Kanten von G offenbar so richten, dass der entstehende gerichtete Graph azyklisch ist. Falls G gerichtet ist und gerichtete Kreise enthält, so wollen wir diese durch möglichst wenige Kanten zerstören. Dieses Problem entspricht offenbar dem Problem M IN F EED BACK A RC S ET. Gegeben: Gesucht: M IN F EEDBACK ARC S ET Ein gerichteter Graph G = (V, E). Eine möglichst kleine Teilmenge Ef ⊆ E, so dass (V, E − Ef ) azyklisch ist. In unserem Beispiel aus Abbildung 3.1 müssen zwei Kanten entfernt werden, damit der Graph azyklisch wird, siehe Abbildung 3.2. Abbildung 3.2: |Ef | = 2 bzw. |Ea | = 21. Dieses Problem ist mit dem Problem M AX ACYCLIC S UBDIGRAPH verwandt. Gegeben: Gesucht: M AX ACYCLIC S UBDIGRAPH Ein gerichteter Graph G = (V, E). Eine möglichst große Menge Ea ⊆ E, so dass (V, Ea ) azyklisch ist. Abbildung 3.2 zeigt einen gerichteten Graphen mit |Ea | = 21. Da wir weiterhin wissen wollen, ob zwei Knoten adjazent sind, drehen wir die Richtung der Kanten in E − Ea um. Der resultierende Graph ist dann stets azyklisch, siehe Abbildung 3.3. Zeichnen von Graphen · Wintersemester 2015/16 87 Abbildung 3.3: Umdrehen der Kanten aus E − Ea liefert einen azyklischen Graphen Die Probleme M IN F EEDBACK A RC S ET und M AX ACYCLIC S UBDIGRAPH sind beide NP-schwer. Es gibt jedoch schnelle heuristische Algorithmen1, welche abschätzbar gute Lösungen für diese Probleme liefern. Wir stellen nun einige dieser Heuristiken vor und setzen voraus, dass der betrachtete gerichtete Graph keine gerichteten Kreise der Länge 2, d.h. Kreise der Form (u, v), (v, u) enthält. Falls wir einen solchen Kreis vorfinden, löschen wir beide Kanten aus dem Graph, wenden einen der folgenden Algorithmen an und fügen anschliessend zwischen u und v zwei Kanten in gleicher Richtung in den Graph ein, so dass keine gerichteten Kreise entstehen. Wir betrachten hier nur gerichtete Graphen ohne Loops. Algorithmus 1 Das Problem M AX ACYCLIC S UBDIGRAPH ist äquivalent zu dem M IN U NWEIGHTED L INEAR O RDERING Problem. Gegeben: Gesucht: M IN U NWEIGHTED L INEAR O RDERING Ein gerichteter Graph G = (V, E). Eine Ordnung der Knoten o : V 7→ {1, . . . , |V |}, so dass die Anzahl der Kanten (u, v) mit o(u) > o(v) möglichst klein ist. Damit besteht eine einfache Heuristik für das M AX ACYCLIC S UBDIGRAPH Problem darin, eine beliebige, z.B. mit Breitensuche oder Tiefensuche bestimmte Ordnung o für die Knoten zu wählen und alle Kanten (u, v) mit o(u) > o(v) zu löschen bzw. die alle Kanten (u, v) mit o(u) < o(v) auszuwählen. 1 Der Begriff Heuristik kommt aus dem Griechischen und bedeutet finden oder entdecken. Archimedes rief vor über 2000 Jahren: ,,Heureka“ (deutsch: Ich habs gefunden). In der Informatik bezeichnet man als Heuristik eine Methode, welche mit Hoffnung auf Erfolg aber nicht mit Garantie auf Erfolg zur Lösung eines Problems eingesetzt wird. Ein heuristischer Algorithmus besteht aus der algorithmischen Umsetzung einer Heuristik. Diese Algorithmen nutzen oft spezielle Annahmen, Faustregeln, Schätzungen, Probieren, Raten oder Zufallsentscheidungen. 88 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 1: Ea = ∅; 2: bestimme z.B. mit DFS eine Ordnung o : V 7→ {1, . . . , |V |} 3: für alle (u, v) ∈ E tue { 4: if o(u) < o(v) 5: then Ea = Ea ∪ {(u, v)} Dies geht schnell, kann aber z.B. bei einem gerichteten Weg zu einer leeren Menge Ea führen. Algorithmus 2 Der folgende Greedy-Algorithmus löscht an jedem Knoten entweder alle einlaufenden oder alle auslaufenden Kanten. 1: Ea = ∅; 2: für alle v ∈ V tue { 3: if |δ + (v)| ≥ |δ − (v)| 4: then Ea = Ea ∪ δ + (v) 5: else Ea = Ea ∪ δ − (v) 6: lösche δ(v) aus G } Satz 3.4 (Berger und Shor 1990) Es sei G = (V, E) ein gerichter Graph. (1.) Der in Algorithmus 2 bestimmte gerichtete Graph (V, Ea ) ist azyklisch. (2.) |Ea | ≥ 21 |E| (3.) Algorithmus 2 bestimmt Ea in linearer Zeit. ohne Beweis Algorithmus 3 Der dritte Algorithmus nutzt aus, dass eine Quelle bzw. Senke nicht auf einem gerichteten Kreis liegen kann. Damit reicht es für solche Knoten δ + (v) bzw. δ − (v) anstatt δ(v) zu entfernen. Wir setzen hier voraus, dass G schwach zusammenhängend ist, d.h., dass der G zugrunde liegende ungerichtete Graph zusammenhängend ist. Zeichnen von Graphen · Wintersemester 2015/16 89 1: Ea = ∅; 2: while G ist nicht leer do { 3: while G hat eine Senke v do { 4: Ea = Ea ∪ δ − (v) 5: entferne v und δ − (v) aus G } 6: entferne alle isolierten Knoten aus G 7: while G hat eine Quelle v do { 8: Ea = Ea ∪ δ + (v) 9: entferne v und δ + (v) aus G} 10: if G ist nicht leer then { 11: wähle einen Knoten v aus G mit maximalem |δ + (v)| − |δ − (v)|; 12: Ea = Ea ∪ δ + (v) 13: entferne v und δ(v) aus G} 14: } Satz 3.5 (Eades 1993) Es sei G = (V, E) ein gerichter Graph ohne gerichtete Kreise der Länge zwei. (1.) Der in Algorithmus 3 bestimmte gerichtete Graph (V, Ea ) ist azyklisch. (2.) |Ea | ≥ |E| 2 + |V | 6 (3.) Algorithmus 3 bestimmt Ea in linearer Zeit. ohne Beweis Wir betrachten nun stets azyklische gerichtete Graphen (DAGs). 3.3 Schichteneinordnung Es sei G = (V, E) ein azyklischer gerichteter Graph und L = {L1 , . . . , Lh } eine Partition (disjunkte Zerlegung) von V , d.h. V = L1 ∪ . . . ∪ Lh . Wir nennen L eine Schichtung (Schichteneinordnung) von G, falls für jede gerichtete Kante (u, v) ∈ E gilt u ∈ Li , v ∈ Lj ⇒ i > j. Die Mengen Li werden dann als Schichten (Ebenen, Levels) bezeichnet. Graphen, die eine Schichtung besitzen, bezeichnen wir als geschichtete Graphen. 90 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 L L 4 3 L 2 L 1 Abbildung 3.4: Schichtung des Beispiels aus Abbildung 3.1 Beobachtung 3.6 Jeder azyklische gerichtete Graph besitzt eine Schichtung. Abbildung 3.4 zeigt eine Schichtung des Beispiels aus Abbildung 3.1. Die Anzahl der nichtleeren Mengen h einer Schichtung L bezeichnen wir als die Höhe der Schichtung. Den Wert max1≤i≤h |Li | bezeichnen wir als die Breite der Schichtung. Die Länge einer Kante (u, v) ∈ E in einer Schichtung L mit u ∈ Li und v ∈ Lj ist die Differenz i − j. Eine einfache Schichtung ist eine Schichtung, so dass alle Kanten (u, v) ∈ E die Länge 1 haben. Bei einfachen Schichtungen verlaufen die Kanten also nur zwischen benachbarten Schichten. In den Folgeschritten nach der Schichteneinordnung (Abschnitt 3.4) benötigt man oft eine einfache Schichtung für den gegebenen Graphen. Aus einer beliebigen Schichtung L kann man durch Einfügen von künstlichen Knoten auf Kanten mit Länge k > 1 eine einfache Schichtung L′ gewinnen. Dazu ersetzen wir jede Kante (u, v) mit Länge k > 1 durch einen Weg p = (u = v1 , . . . , vk = v) der Länge k, d.h durch einen Weg mit k Kanten. Auf jede Schicht zwischen der Schicht von u und der Schicht von v wird ein künstlicher Knoten auf p platziert, siehe Abbildung 3.5. Abbildung 3.5: Eine einfache Schichtung mit künstlichen Knoten Die Anzahl der künstlichen Knoten soll aus mehreren Gründen möglichst gering seien. Die Laufzeit der nachfolgenden Schritte hängt mit von der Anzahl der künstlichen Knoten Zeichnen von Graphen · Wintersemester 2015/16 91 ab. Die Zeichnung wird an den Positionen der künstlichen Knoten möglicherweise Kantenknickpunkte besitzen. Viele künstliche Knoten auf einer Kante erzeugen lange Kanten im Layout. In Abschnitt 3.3.3 betrachten wir einen Algorithmus zur Minimierung der Anzahl der künstlichen Knoten. Wir geben nun Algorithmen zum Finden einer Schichtung L in gerichteten azyklischen Graphen G = (V, E) an. Hier erhält jeder Knoten u ∈ V , über die Schicht Li in welcher er positioniert wird, die y-Koordinate y(u) = i. 3.3.1 Längster-Pfad-Schichtung Man kann eine Schichteneinordnung mit minimaler Höhe für einen gerichteten Graphen G = (V, E) berechnen, indem man beachtet, dass die Länge eines längsten gerichteten Weges eine untere Schranke für die Höhe einer Schichteneinordnung ist. Eine Schichteneinordnung mit genau dieser unteren Schranke als Höhe kann man wie folgt finden. 1. Platziere alle Senken von G auf Schicht L1 . 2. Für die restlichen Knoten u ∈ V kann die Schicht y(u) wie folgt bestimmt werden y(u) = max{i | v ∈ N + (u) und y(v) = i} + 1. Mit Hilfe einer Modifikation einer topologischen Sortierung2 kann man diese Schichtung in linearer Zeit bestimmen. Hierzu nutzt man eine FIFO Queue Q, welche mit den Knoten u mit outdeg(u) = 0 initialisiert wird. Man startet mit i = 1, entfernt alle Knoten aus v ∈ Q, fügt diese in Schicht Li ein und löscht alle Kanten von einem Knoten aus N − (v) zu Knoten v, d.h. alle Kanten in δ − (v). Bekommt ein Knoten u ∈ N − (v) bei diesem Löschen von Kanten den Ausgangsgrad 0, so wird u hinten in Q eingefügt. Wenn alle alten Knoten aus Q abgearbeitet sind, wird i um eins erhöht und die neuen Knoten werden zu den alten. Die Laufzeit dieser Methode beträgt O(|V | + |E|). Der Nachteil besteht darin, dass die Breite der Schichteinordnung nicht betrachtet wird. 3.3.2 Schichtung mit fester Breite Für eine gegebene Breite w ≥ 3 ist es NP-schwer eine Schichtung mit minimaler Höhe zu finden (Reduktion von M ULTIPROCESSOR S CHEDULING P ROBLEM (MSP)). Wir wollen Näherungslösungen für dieses Problem angeben. 2 Eine topologische Sortierung eines azyklischen gerichteten Graphen kann man erhalten, indem man schrittweise alle Senken hinten in der Sortierung platziert, die einlaufenden Kanten dieser Knoten löscht wodurch neue Senken entstehen können, die dann vor die letzten platziert werden, usw. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 92 Ein einfacher Greedy-Ansatz Eine einfache Greedy-Strategie zum Finden eines Layouts mit vorgegebener Breite platziert die Knoten der Reihe nach in Schichten mit möglichst kleinem Index. Beispiel 3.7 Es sei w = 2 und G ein gerichteter Graph mit n2 isolierten Knoten und einem gerichteten Weg aus n2 Knoten, siehe Abbildung 3.6 (a). Die Greedy-Strategie könnte die isolierten Knoten auf die ersten n4 Schichten platzieren. Dies würde zusammen mit dem gerichteten Weg aus n2 Knoten eine Höhe von 3n ergeben, siehe Abbildung 3.6 (b). Eine 4 optimale Lösung ist in Abbildung 3.6 (c) gezeichnet und hat nur n2 Schichten. (a) gerichteter Graph (b) Greedy Schichtung (c) optimale Schichtung Abbildung 3.6: Eine einfache Greedy-Strategie Coffman-Graham-Schichtungsmethode Das Problem bei obiger Greedy-Strategie ist, dass im Beispiel 3.7 der lange Weg des Graphen nicht früh genug berücksichtigt wird. Dieses Problem versucht der Algorithmus von Coffman und Graham [CG72] zu beheben. Dazu geht man in zwei Phasen vor. In der ersten Phase ordnet man die Knoten mit einer Funktion π : V 7→ {1, . . . , |V |} bezüglich ihrer Distanz zu den Quellen des Graphen. In der zweiten Phase ordnet man die Knoten den Schichten zu. Knoten mit großer Distanz zu einer Quelle werden auf den unteren Schichten platziert. Zeichnen von Graphen · Wintersemester 2015/16 93 Definition 3.8 (Lexikographische Ordnung auf Teilmengen von N) Es seien S, T ⊆ N endliche Teilmengen der Menge der natürlichen Zahlen. Das maximale Element einer Menge X ⊆ N bezeichnen wir kurz mit max(X). Wir definieren S ≺ T, falls • S = ∅ und T 6= ∅ oder • S 6= ∅ und T 6= ∅ und max(S) < max(T ) oder • S 6= ∅ und T 6= ∅ und max(S) = max(T ) und S − {max(S)} ≺ T − {max(T )} Beispiel 3.9 (Lexikographische Ordnung auf Teilmengen von N) • ∅ ≺ {1}, ∅ ≺ {2, 3, 4} • {1, 2, 3, 4} ≺ {4, 5}, {1, 2, 3, 4, 5, 6, 7} ≺ {8} • {1, 2, 5} ≺ {1, 3, 5}, {1, 2, 9} ≺ {3, 9}, {1, 11, 12} ≺ {5, 11, 12}, {2} ≺ {1, 2} Wir geben nun die Coffman-Graham-Schichtungsmethode an, welche zu einem gegebenen gerichteten azyklischen Graphen und einer Zahl w eine Schichtung mit Breite höchstens w und abschätzbarer Höhe bestimmt. Der Algorithmus von Coffman und Graham (CG-Algorithmus) erwartet als Eingabe einen reduzierten gerichteten Graphen, d.h. einen gerichteten Graphen ohne transitive Kanten, und eine Breite w. Die Entfernung von transitiven Kanten ist keine Einschränkung, da die Endknoten dieser Kanten nicht entfernt werden und somit die Breite der Schichtung nicht geändert wird. Der Eingabegraph habe n Knoten. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: for all v ∈ V do π(v) = n + 1 for i = 1 to n do { wähle v ∈ V mit π(v) = n + 1 und bzgl. ≺ minimaler Menge {π(u) | u ∈ N − (v)} π(v) = i } k=1 // k aktuelle Schicht U =V // U Menge der noch unpositionierten Knoten while U 6= ∅ do { if |Lk | < w und es gibt ein u ∈ U mit N + (u) ⊆ L1 ∪ L2 ∪ . . . ∪ Lk−1 then { wähle ein solches u mit π(u) maximal; Lk = Lk ∪ {u}; U = U − {u} Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 94 13: 14: 15: } else k = k + 1 } Beispiel 3.10 (CG-Schichtung) Wir betrachten den Graphen mit n = 12 Knoten V = {a, . . . , l} in Abbildung 3.7. a b c d e f g h i j k l Abbildung 3.7: Beispiel zum CG-Algorithmus 1. Phase • Für alle v ∈ V : π(v) = 13 v π(v) {π(u) | u ∈ N − (v)} a 13 ∅ b 13 ∅ c 13 {13} d 13 {13} e 13 {13} f 13 {13} g 13 {13} h 13 {13} i 13 {13} j 13 {13} k 13 {13} l 13 {13} Für Quellen q ist initial {π(u) | u ∈ N − (q)} = ∅ und für nicht Quellen x ist initial {π(u) | u ∈ N − (x)} = {n + 1}. • Zuerst werden alle Quelle markiert a und b sind Quellen: π(a) = 1 und π(b) = 2 a 1 ∅ v π(v) {π(u) | u ∈ N − (v)} b 2 ∅ c 13 {1} d 13 {1, 2} e 13 {2} f 13 {2} g 13 {13} h 13 {13} i 13 {13} j 13 {13} k 13 {13} l 13 {13} • π(c) = 3 (Knoten c hat die minimale Menge) v π(v) {π(u) | u ∈ N − (v)} a 1 ∅ b 2 ∅ c 3 {1} d 13 {1, 2} e 13 {2} f 13 {2} g 13 {3, 13} h 13 {3, 13} i 13 {13} j 13 {13} k 13 {13} l 13 {13} Zeichnen von Graphen · Wintersemester 2015/16 95 • π(e) = 4 (Knoten e hat die minimale Menge) v π(v) {π(u) | u ∈ N − (v)} a 1 ∅ b 2 ∅ c 3 {1} d 13 {1, 2} e 4 {2} f 13 {2} g 13 {3, 13} h 13 {3, 4, 13} i 13 {4} j 13 {4, 13} h 13 {3, 4, 13} i 13 {4} j 13 {4, 5} k 13 {13} l 13 {13} • π(f ) = 5 (Knoten f hat die minimale Menge) v π(v) {π(u) | u ∈ N − (v)} a 1 ∅ b 2 ∅ c 3 {1} d 13 {1, 2} e 4 {2} f 5 {2} g 13 {3, 13} k 13 {13} l 13 {13} • π(d) = 6 (Knoten d hat die minimale Menge) v π(v) {π(u) | u ∈ N − (v)} a 1 ∅ b 2 ∅ c 3 {1} d 6 {1, 2} e 4 {2} f 5 {2} g 13 {3, 6} h 13 {3, 4, 6} i 13 {4} j 13 {4, 5} k 13 {13} l 13 {13} g 13 {3, 6} h 13 {3, 4, 6} i 7 {4} j 13 {4, 5} k 13 {13} l 13 {13} • π(i) = 7 (Knoten i hat die minimale Menge) v π(v) {π(u) | u ∈ N − (v)} a 1 ∅ b 2 ∅ c 3 {1} d 6 {1, 2} e 4 {2} f 5 {2} • π(j) = 8 (Knoten j hat die minimale Menge) v π(v) {π(u) | u ∈ N − (v)} a 1 ∅ b 2 ∅ c 3 {1} d 6 {1, 2} e 4 {2} f 5 {2} g 13 {3, 6} h 13 {3, 4, 6} i 7 {4} j 8 {4, 5} k 13 {13} l 13 {8, 13} h 13 {3, 4, 6} i 7 {4} j 8 {4, 5} k 13 {9} l 13 {8, 13} h 10 {3, 4, 6} i 7 {4} j 8 {4, 5} k 13 {9} l 13 {8, 10} • π(g) = 9 (Knoten g hat die minimale Menge) v π(v) {π(u) | u ∈ N − (v)} a 1 ∅ b 2 ∅ c 3 {1} d 6 {1, 2} e 4 {2} f 5 {2} g 9 {3, 6} • π(h) = 10 (Knoten h hat die minimale Menge) v π(v) {π(u) | u ∈ N − (v)} a 1 ∅ b 2 ∅ c 3 {1} d 6 {1, 2} e 4 {2} f 5 {2} g 9 {3, 6} Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 96 • π(k) = 11 (Knoten k hat die minimale Menge) und es bleibt noch π(l) = 12 v π(v) {π(u) | u ∈ N − (v)} a 1 ∅ b 2 ∅ c 3 {1} d 6 {1, 2} e 4 {2} f 5 {2} g 9 {3, 6} h 10 {3, 4, 6} i 7 {4} j 8 {4, 5} k 11 {9} l 12 {8, 10} 2. Phase für w = 3 k U 1 {a, b, c, d, e, f, g, h, i, j, k, l} 1 {a, b, c, d, e, f, g, h, i, j, k} 1 {a, b, c, d, e, f, g, h, i, j} 2 {a, b, c, d, e, f, g, h, j} 2 {a, b, c, d, e, f, g, j} 2 {a, b, c, d, e, f, j} 3 {a, b, c, d, e, f } 3 {a, b, c, e, f } 3 {a, b, c, e} 4 {a, b, c} 4 {a, b} 5 {a} u l k i h g j d f e c b a L1 {l} {l, k} {l, k, i} {l, k, i} {l, k, i} {l, k, i} {l, k, i} {l, k, i} {l, k, i} {l, k, i} {l, k, i} {l, k, i} L2 {h} {h, g} {h, g, j} {h, g, j} {h, g, j} {h, g, j} {h, g, j} {h, g, j} {h, g, j} L3 a b d f e h g j l k i L5 {d} {d, f } {d, f, e} {d, f, e} {c} {d, f, e} {c, b} {d, f, e} {c, b} {a} Damit erhalten wir die in Abbildung 3.8 gezeigte Schichtung. c L4 Abbildung 3.8: Schichtung zum CG-Algorithmus Zeichnen von Graphen · Wintersemester 2015/16 97 Satz 3.11 (Lam, Sethi 1977) Es sei hmin die minimale Höhe einer Schichtung mit Breite w. Dann gilt für die Höhe der CG-Schichtung h ≤ (2 − 2 )hmin . w ohne Beweis Damit liefert der CG-Algorithmus für w ≤ 2 eine optimale Lösung. 3.3.3 Schichtung mit Minimierung der Anzahl der künstlichen Knoten Man kann in polynomieller Zeit eine Schichtung bestimmen, welche minimal viele künstliche Knoten verwendet. Die y-Koordinate eines Knotens u in einem azyklischen gerichteten Graphen G = (V, E) bezeichnen wir mit y(u). Es gelten die folgenden zwei Bedingungen: (1.) y(u) ∈ N für alle Knoten u ∈ V (2.) y(u) − y(v) ≥ 1 für alle Kanten (u, v) ∈ E Die Funktion y : V 7→ N definiert durch Li = {u ∈ V | y(u) = i} eine Schichtung Ly für G. Wir bezeichnen mit f die Summe aller um eins reduzierten Kantenlängen in dieser Schichtung. X f= (y(u) − y(v) − 1) (u,v)∈E Dann entspricht f zugleich der Anzahl der künstlichen Knoten in der durch y definierten Schichtung Ly . Damit haben wir das Schichtungsproblem umformuliert auf die Wahl geeigneter yKoordinaten, so dass f unter den Bedingungen (1.) und (2.) minimiert wird. Dieses lineare Programm kann in polynomieller Zeit mittels Netzwerkflusstechniken gelöst werden. 3.4 Kreuzungsminimierung In diesem Abschnitt wollen wir einen gerichteten Graphen, für welchen wir bereits eine einfache Schichtung bestimmt haben, mit möglichst wenigen Kantenkreuzungen zeichnen. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 98 Die Anzahl der Kantenkreuzungen hängt nicht von den x-Koordinaten der Knoten sondern nur von der Ordnung der Knoten innerhalb der Schichten ab. Damit besteht unser Problem darin, eine geeignete Permutation der Knoten jeder Schicht zu bestimmen. Dieses Problem scheint zwar einfacher zu seien, als x-Koordinaten für die Knoten zu bestimmen, ist aber schon für zwei Schichten schwer. Gegeben: Frage: 2-S CHICHTEN -K REUZUNGSPROBLEM Ein gerichteter Graph G mit einer Schichtung {L1 , L2 } und eine Zahl k ∈ N. Können die Knoten in L1 und L2 so angeordnet werden, dass es zwischen den beiden Schichten höchstens k Kantenkreuzungen gibt? Das 2-S CHICHTEN -K REUZUNGSPROBLEM ist NP-vollständig. Wir geben einige Heuristiken zur Kreuzungsminimierung an. 3.4.1 Layer-by-Layer-Sweep Methode Die Layer-by-Layer-Sweep Methode geht wie folgt vor. 1. Wähle eine Knotenreihenfolge für die Knoten in Schicht L1 . 2. Wiederhole solange sich die Anzahl der Kantenkreuzungen vermindern lässt. (a) Für i = 2, . . . , h wird die Knotenreihenfolge in Schicht Li−1 festgehalten und die Knotenreihenfolge in Schicht Li so bestimmt, dass die Anzahl der Kantenkreuzungen von Kanten mit Endpunkten in Schicht Li−1 und Li minimiert wird. (b) Für i = h, . . . , 2 wird die Knotenreihenfolge in Schicht Li festgehalten und die Knotenreihenfolge in Schicht Li−1 so bestimmt, dass die Anzahl der Kantenkreuzungen von Kanten mit Endpunkten in Schicht Li−1 und Li minimiert wird. Offenbar ist es sinnvoll das folgende Teilproblem zu betrachten. Gegeben sei eine feste Ordnung für die Knoten in Schicht Li−1 . Bestimme eine Ordnung für die Knoten in Schicht Li , so dass die Anzahl der Kantenkreuzungen zwischen Li−1 und Li minimal ist. Dieses Problem bezeichnet man auch als das 2-S CHICHTEN -K REUZUNGSPROBLEM MIT EINER FESTEN S CHICHT, welches NP-schwer ist. Die Knotenpositionen für die Schichten L1 und L2 geben wir jeweils durch eine Funktion x1 bzw. x2 an, d.h. xi (u) gibt die Position eines Knotens u ∈ Li , i = 1, 2 an. Zeichnen von Graphen · Wintersemester 2015/16 99 Die Anzahl der Kantenkreuzungen in einer durch die Reihenfolgen x1 und x2 bestimmten Zeichnung sei cross(G, x1 , x2 ). Die minimale mögliche Anzahl von Kantenkreuzungen bezüglich der mit x1 angeordneten Knoten der Schicht L1 sei opt(G, x1 ). Dann gilt opt(G, x1 ) = min x2 Anordnung von L2 cross(G, x1 , x2 ). Damit kann man das 2-S CHICHTEN -K REUZUNGSPROBLEM S CHICHT wie folgt als Konstruktionsproblem formulieren. MIT EINER FESTEN 2-S CHICHTEN -K REUZUNGSPROBLEM MIT EINER FESTEN S CHICHT Gegeben: Ein gerichteter Graph mit einer Schichtung {L1 , L2 } und eine Ordnung x1 für L1 . Ausgabe: Eine Ordnung x2 von L2 , so dass opt(G, x1 ) = cross(G, x1 , x2 ). Es seien u, v ∈ L2 . Dann ist die Anzahl der Kreuzungen von Kanten, welche mit u und v inzident sind nur von den Positionen von u und v abhängig und nicht von den anderen Knoten aus L2 . Dies führt auf die Definition der Kreuzungszahl. Die Kreuzungszahl cuv ist die Anzahl der Kreuzungen zwischen Kanten, welche mit u inzident sind und Kanten, welche mit v inzident sind, falls u in L2 links von v positioniert wird. Definition 3.12 (Kreuzungszahl) Es sei G = (V, E) gerichteter Graph mit einer Schichtung {L1 , L2 } und x1 eine feste Knotenordnung für die Schicht L1 . • Für zwei Knoten u, v ∈ L2 , so dass u in L2 links von v positioniert wird, ist cuv die Anzahl der Paare (u, w), (v, x) ∈ E mit x1 (w) > x1 (x). • Für alle Knoten u aus L2 ist cuu = 0. L p q r s 2 L 1 Abbildung 3.9: Beispiel zur Kreuzungszahl Beispiel 3.13 (Kreuzungszahl) Wir betrachten den gerichteten geschichten Graphen in Abbildung 3.9. (Alle Kanten verlaufen von L2 nach L1 .) In der folgenden Tabelle geben wir die Kreuzungszahlen cuv für alle Paare (u, v) ∈ L22 = L2 × L2 an. Hierbei ist x1 die Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 100 gezeichnete Knotenordnung für L1 . Diese Tabelle bezeichnen wir auch als Kreuzungsmatrix. p q r s p 0 2 1 1 q 5 0 6 3 r 6 9 0 6 s 2 3 2 0 Die Kreuzungszahlen können zur Berechnung von cross(G, x1 , x2 ) und für eine untere Schranke von opt(G, x1 ) eingesetzt werden. Lemma 3.14 Es sei G = (V, E) ein gerichteter Graph mit einer Schichtung {L1 , L2 } und x1 und x2 Knotenordnungen für die Schichten L1 bzw. L2 , dann gilt X cross(G, x1 , x2 ) = cuv x2 (u)<x2 (v) und opt(G, x1 ) ≥ X {u,v}⊆L2 min{cuv , cvu }. Beweis. Die erste Behauptung folgt aus den Definitionen. Für die zweite Behauptung beachte man, dass jede Anordnung von L2 (auch eine optimale) entweder x2 (u) < x2 (v) oder x2 (v) < x2 (u) erfüllt. Satz 3.15 Es sei G = (V, E) ein gerichteter Graph mit einer Schichtung {L1 , L2 } und x1 eine Knotenordnung für die Schicht L1 . Dann können die Kreuzungszahlen cuv für alle Paare (u, v) ∈ L22 , d.h. die gesamte Kreuzungsmatrix, in Zeit O(|L2 |2 · |E|) bestimmt werden. Beweis. Übungsaufgabe Satz 3.16 (Sander 1994) Es sei G = (V, E) ein gerichteter Graph mit einer Schichtung {L1 , L2 } und x1 eine Knotenordnung für die Schicht L1 . Dann können die Kreuzungszahlen cuv für alle Paare (u, v) ∈ L22 , d.h. die gesamte Kreuzungsmatrix, in Zeit O(|E| + |C|) bestimmt werden (|C|=Anzahl der Kantenkreuzungen). ohne Beweis 3.4.2 Sortiermethoden Die Aufgabe beim 2-Schichten-Kreuzungsproblem mit einer festen Schicht besteht in der Sortierung der Knoten in L2 , so dass die Kantenkreuzungen zwischen L1 und L2 minimiert werden. Zeichnen von Graphen · Wintersemester 2015/16 101 Greedy-Switch Heuristik Es sei G = (V, E) ein gerichteter Graph mit einer Schichtung {L1 , L2 } und x1 eine Knotenordnung für die Schicht L1 . Für zwei aufeinanderfolgende Knoten u und v in L2 erhöht sich durch das Vertauschen von u und v die Anzahl der Kantenkreuzungen um cvu − cuv . Analog zu Bubblesort, durchläuft man eine beliebig gewählte Startordnung für L2 solange von links nach rechts bis sich durch das Vertauschen von aufeinanderfolgenden Knoten keine Verringerung der Kantenkreuzungen mehr erzielen lässt, d.h. bis für alle aufeinanderfolgenden Knoten u, v die Ungleichung cuv ≤ cvu gilt. 1. Wähle eine beliebige Ordnung für die Knoten in L2 2. Durchlaufe die Knotenordnung in L2 von links nach rechts. Falls für zwei aufeinanderfolgende Knoten u, v gilt cuv > cvu , dann vertausche die beiden Knoten in der Reihenfolge. Dies wird gemacht, bis sich die Anzahl der Kantenkreuzungen nicht weiter erniedrigt. Da sich durch das Vertauschen zweier Knoten in L2 die Kreuzungsmatrix nicht ändert, muß diese nicht mehrfach berechnet werden. Satz 3.17 Die Greedy-Switch Heuristik kann bei gegebener Kreuzungsmatrix mit einer Laufzeit aus O(|L2 |2 ) realisiert werden. Split Heuristik In der nächsten Heuristik wählen wir ein Pivotelement p ∈ L2 und platzieren die Knoten u 6= p ∈ L2 links von p, falls cup < cpu und sonst rechts von p. Die linken und rechten Seiten von p werden rekursiv angeordnet. Dieses Vorgehen ist aus dem Sortierverfahren Quicksort bekannt. Satz 3.18 Die Split Heuristik kann bei gegebener Kreuzungsmatrix mit einer Laufzeit aus O(|L2 |2 ) realisiert werden. Greedy-Insert Heuristik Fixiere im nächsten Schritt einen Knoten aus L2 , welcher mit seinen inzidenten Kanten mit den inzidenten Kanten der bisher gewählten Knoten von L2 die wenigsten Kreuzungen erzeugt. Das Vorgehen ist offenbar analog zum Sortierten durch Auswählen. Satz 3.19 Die Greedy-Insert Heuristik kann bei gegebener Kreuzungsmatrix mit einer Laufzeit aus O(|L2 |2 ) realisiert werden. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 102 Die vorgestellten Sortiermethoden zur Anordnung der Knoten in L2 basieren u.a. auf der Berechnung der Kreuzungsmatrix und haben damit keine lineare Laufzeit. Im nächsten Abschnitt betrachten wir Methoden ohne Kreuzungsmatrix mit linearer Laufzeit. 3.4.3 Barycenter und Median Methoden Die am häufigsten angewendeten Lösungsansätze für das 2-Schichten-Kreuzungsproblem sind Varianten der Barycenter Heuristik. Barycenter Heuristik Intuitiv kann man vermuten, dass man wenige Kantenkreuzungen erhält, wenn man Knoten nahe bei ihren Nachbarn platziert. 1. Die Position von Knoten v ∈ L2 wird über die durchschnittliche Position seiner Nachbarn in L1 gewählt. X 1 Barycenter(v) = x1 (u) outdeg(v) u∈N (v) (Für Knoten v mit outdeg(v) = 0 definieren wir Barycenter(v) = 0.) 2. Zur Bestimmung der Position x2 (v) für v ∈ L2 werden die Knoten in L2 nach ihrem Barycenter Wert sortiert. Haben zwei Knoten in L2 den gleichen Barycenter Wert, so werden diese in beliebiger Reihenfolge nebeneinander platziert. Die Anzahl der Kantenkreuzungen der Barycenter Methode für einen gerichteten Graphen G mit einer Schichtung {L1 , L2 } und eine Knotenordnung x1 der Schicht L1 sei Barycenter(G, x1 ). Beispiel 3.20 (Barycenter Heuristik) Wir betrachten den Graph in Abbildung 3.10. (Alle Kanten verlaufen von L2 nach L1 .) Die dort gezeichnete Knotenordnung x2 von L2 liefert offenbar 12 Kantenkreuzungen. Nach der Barycenter Heuristik ergeben sich die folgenden x2 -Werte. v Barycenter(v) x2 (v) a 8/3 2 b c d 2 4 4 1 3 4 e 9/2 5 Damit müssen die Positionen von a und b in der Reihenfolge von L2 vertauscht werden, siehe Abbildung 3.11. Nun hat man nur noch 11 Kantenkreuzungen. Satz 3.21 Die Barycenter Heuristik kann in Zeit O(|L2 | · log(|L2 |)) realisiert werden. Zeichnen von Graphen · Wintersemester 2015/16 a L b c 103 d e 2 L 1 1 2 3 4 5 6 Abbildung 3.10: Beispiel zur Barycenter Heuristik (vorher) b L a c d e 2 L 1 1 2 3 4 5 6 Abbildung 3.11: Beispiel zur Barycenter Heuristik (nachher) Median Heuristik 1. Für jeden Knoten v ∈ L2 definiert man Median(v) = Median der x-Positionen der Nachbarn von v auf Schicht L1 Hierbei ist der Median von x-Positionen wie folgt definiert. Die Nachbarn von Knoten v ∈ L2 seien v1 , . . . , vj mit x1 (v1 ) < x1 (v2 ) < . . . < x1 (vj ), dann ist die Position Median(v) definiert als x1 (v⌈ j ⌉ ). Falls v ∈ L2 keine Nachbarn hat, so definieren wir 2 Median(v) = 0. 2. Zur Bestimmung der Position x2 (v) für v ∈ L2 werden die Knoten in L2 nach ihrem Median Wert sortiert. Falls zwei Knoten u und v den gleichen Median Wert haben und einer einen ungeraden und der andere einen geraden Knotengrad, dann wird der Knoten mit ungeradem Grad links von dem Knoten mit geradem Grad platziert. Falls beide Knoten einen geraden oder beide einen ungeraden Knotengrad haben, so kann die Reihenfolge der Knoten beliebig gewählt werden. Diese merkwürdigen Regeln sind z.B. für den Beweis der Abschätzung in Satz 3.23 wichtig. Die Anzahl der Kantenkreuzungen der Median Methode für einen gerichteten Graphen G mit einer Schichtung {L1 , L2 } und eine Knotenordnung x1 der Schicht L1 sei Median(G, x1 ). Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 104 Beispiel 3.22 (Median Heuristik) Wir betrachten nochmal den Graph in Abbildung 3.10. Die angegebene Knotenordnung x2 von L2 lieferte 12 Kantenkreuzungen. Nach der Median Heuristik ergeben sich die folgenden x2 -Werte. a b c d e v Median(v) 3 2 4 3 3 x2 (v) 2 1 5 3 4 Damit müssen die Knoten in L2 in der Reihenfolge b, a, d, e, c positioniert werden, siehe Abbildung 3.12. Nun hat man immernoch 12 Kantenkreuzungen. b L a d e c 2 L 1 1 2 3 4 5 6 Abbildung 3.12: Beispiel zur Median Heuristik (nachher) Den umfangreichen Beweis für den folgenden Satz lassen wir hier aus. Satz 3.23 Es sei G = (V, E) ein gerichteter Graph mit einer Schichtung {L1 , L2 } und x1 eine Anordnung für die Knoten in L1 . Dann gilt Median(G, x1 ) ≤ 3 · opt(G, x1 ). ohne Beweis Für Graphen mit niedrigem Knotengrad kann man bessere Schranken zeigen. Satz 3.24 Es sei G = (V, E) ein gerichteter Graph mit einer Schichtung {L1 , L2 } und x1 eine Anordnung für die Knoten in L1 und jeder Knoten in L2 hat einen Grad höchstens 3. Dann gilt Median(G, x1 ) ≤ 2 · opt(G, x1 ). ohne Beweis Satz 3.25 Die Median Heuristik kann in Zeit O(|L2 | · log(|L2 |)) realisiert werden. Sowohl die Barycenter Heuristik als auch die Median Heuristik finden eine Zeichnung ohne Kantenkreuzungen, falls es eine solche gibt. Zeichnen von Graphen · Wintersemester 2015/16 105 Satz 3.26 Es sei G = (V, E) ein gerichteter Graph mit einer Schichtung {L1 , L2 } und x1 eine Anordnung für die Knoten in L1 . Falls opt(G, x1 ) = 0, dann gilt Barycenter(G, x1 ) = Median(G, x1 ) = 0. Beweis. Übungsaufgabe. Andererseits liefern beide Heuristiken im Allgemeinen keine optimalen Lösungen. Satz 3.27 (1.) Für jede natürliche Zahl k ≥ 2 gibt es einen gerichteten Graphen Gk = (V, E) mit einer Schichtung {L1 , L2 } für Gk mit |L1 | = k 2 + k − 1 und |L2 | = 2 und eine Anordnung x1 für L1 , so dass p Barycenter(Gk , x1 ) ∈ Ω( |L1 |). opt(Gk , x1 ) (2.) Für jede natürliche Zahl k gibt es einen gerichteten Graphen Gk = (V, E) mit einer Schichtung {L1 , L2 } für Gk mit |L1 | = 4k + 2 und |L2 | = 2 und eine Anordnung x1 für L1 , so dass 1 Median(Gk , x1 ) ≥ 3 − O( ). opt(Gk , x1 ) |L1 | Beweis. (1.) Es sei Gk der Graph in Abbidung 3.13 mit L2 = {u, v} und k 2 + k − 1 Knoten in L1 . Es gilt dann nach der Definition von Gk , dass Barycenter(u) = k1 (1 + (k 2 + 1) + . . . + (k 2 + k − 1)) Pk−1 = k1 (1 + (k − 1) · k 2 + i=1 i) k−1 1 2 = k +k −k+ 2 = k1 + k 2 − k2 − 21 < k 2 für k ≥ 2 = Barycenter(v). Also zeichnet man Gk nach der Barycenter Heuristik wie in Abbidung 3.13(links) mit k−1 Kantenkreuzungen. Besser und damit optimal wäre jedoch erst v und dann u in L2 zu platzieren (wie in Abbidung 3.13(rechts)), pda man dann nur eine Kantenkreuzung 2 erhält. Da |L1 | = k + k − 1 gilt, ist k ∈ Ω( |L1 |) und p Barycenter(Gk , x1 ) k−1 = ∈ Ω( |L1 |). opt(Gk , x1 ) 1 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 106 u L 2 v v L 2 L u L 1 1 2 k −1 1 2 k −1 k −1 1 k −1 Abbildung 3.13: Zu Beweis von Satz 3.27(1.) (2.) Es sei Gk der Graph in Abbidung 3.14 mit L2 = {u, v} und 4k + 2 Knoten in L1 . Es gilt dann nach der Definition von Gk , dass Median(u) = 2k + 1 < 2k + 2 = Median(v). Also zeichnet man Gk nach der Median Heuristik wie in Abbidung 3.14(links) mit 2k(k + 1) + k 2 Kantenkreuzungen. Besser und damit optimal wäre jedoch erst v und dann u in L2 zu platzieren (wie in Abbidung 3.14(rechts)), da man dann nur (k + 1)2 Kantenkreuzung erhält. Da |L1 | = 4k + 2 gilt, ist k ∈ Θ(|L1 |)) und Median(Gk ,x1 ) opt(Gk ,x1 ) = = = ≥ = = = u L 2 v 2k(k+1)+k 2 (k+1)2 3k 2 +2k k 2 +2k+1 3k+2 für k > k+2+ k1 3k+2 k+3 3k+9 7 − k+3 k+3 3 − O( k1 ) 3 − O( |L11 | ). v L 2 L 0 u L 1 1 k k +1 k +1 k k k +1 Abbildung 3.14: Zu Beweis von Satz 3.27(2.) k +1 k Zeichnen von Graphen · Wintersemester 2015/16 107 3.4.4 Exakte Verfahren zur Kreuzungsminimierung Es sei G = (V, E) mit V = {u1 , . . . , un } ein gerichteter Graph mit einer Schichtung {L1 , L2 } und x1 bzw. x2 eine feste Knotenanordnung für L1 bzw. L2 . Um eine Knotenanordnung x∗2 für L2 zu bestimmen, welche die Anzahl der Kantenkreuzungen minimiert, kodieren wir jede mögliche Knotenanordnung x2 für L2 durch einen |L2 | binären Vektor x ∈ {0, 1}( 2 ) , dessen Einträge xui uj für i < j definiert sind als 1, falls x2 (ui ) < x2 (uj ) xui uj = 0, falls x2 (ui ) > x2 (uj ) (Jede Knotenanordnung für L2 lässt sich durch einen solchen Vektor beschreiben, aber nicht jeder solcher Vektor definiert eine Knotenanordnung für L2 . Mit einer unten beschriebenen Zusatzbedingung (1.) kann man jedoch sichern, dass ein solcher Vektor eine Knotenanordnung für L2 definiert.) Aus Lemma 3.14 folgt dann X cu i u j cross(G, x1 , x2 ) = x2 (ui )<x2 (uj ) X = cu i u j + i<j,x2 (ui )<x2 (uj ) = X cui uj xui uj + i<j = X i<j P X i<j X cu j u i i<j,x2 (uj )<x2 (ui ) cuj ui (1 − xui uj ) (cui uj − cuj ui )xui uj + X cu j u i i<j Da der Wert i<j cuj ui eine Konstante ist, können wir das 2-Schichten-Kreuzungsproblem wie folgt formulieren. Minimiere die Zielfunktion X z= (cui uj − cuj ui )xui uj i<j bezüglich der Nebenbedingungen (1.) 0 ≤ xui uj + xuj uk − xui uk ≤ 1 für alle Tripel i < j < k verschiedener Knoten aus L2 (2.) xui uj ∈ {0, 1} für alle Paare i < j verschiedener Knoten aus L2 Die erste Nebenbedingung garantiert, dass der Vektor x wirklich eine Ordnung auf den Knoten in L2 definiert. Der optimale Wert z ∗ der Zielfunktion P entspricht noch nicht dem optimalen Wert der Kantenkreuzungen, welcher durch z ∗ + i<j cuj ui bestimmt ist. Das ganzzahlige lineare Programm kann für kleine Graphen in vertretbarer Zeit gelöst werden. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 108 3.5 Horizontale Koordinatenzuweisung Betrachten wir nun die Bestimmung der x-Koordinaten. An den Positionen der künstlichen Knoten können Kantenknickpunkte im Layout auftreten. Wir wollen die Anzahl dieser Knicke durch die Wahl der x-Koordinaten minimieren. (Vermeidung des ,,Spaghetti-Effekts“). Die im Schritt ,,Kreuzungsminimierung“ gefundene Knotenordnung innerhalb der Schichten soll jedoch erhalten bleiben. Es sei p = (v1 , v2 , . . . , vk ) ein gerichteter Weg in G und v2 , . . . , vk−1 künstliche Knoten. Für Knoten vi bezeichne x(vi ) die x-Koordinate von vi . Wir können die horizontale Koordinatenzuweisung wie folgt als ein Optimierungsproblem beschreiben. 3.5.1 Minimierung der Knickpunkte der Kanten Um möglichst wenige Kantenknickpunkte zu erhalten, werden die Kanten mit künstlichen Knoten möglichst geradlinige positioniert. Falls die Knoten auf dem Weg p alle auf einer Geraden gezeichnet werden, dann gilt für 2 ≤ i ≤ k − 1 x(vi ) − x(v1 ) = i−1 (x(vk ) − x(v1 )). k−1 (3.1) Damit definieren wir für jeden solchen Weg p zu einer Kante (v1 , vk ) von G vor dem Einfügen der künstlichen Knoten g(p) = k−1 X i=2 (x(vi ) − ai )2 , wobei die gewünschte Position ai = i−1 (x(vk ) − x(v1 )) + x(v1 ) k−1 des künstlichen Knoten vi durch Umstellung von Gleichung (3.1) entsteht. Um die Kanten möglichst gerade zu zeichnen, minimieren wir X g(p) p für alle Wege p zu künstlichen Knoten bezüglich den Nebenbedingungen x(w) − x(z) ≥ δ (3.2) Zeichnen von Graphen · Wintersemester 2015/16 109 für alle Knotenpaare w, z in der gleichen Schicht, wobei w rechts von z liegt. Die Bedingungen (3.2) garantieren, dass die im Schritt ,,Kreuzungsminimierung“ gefundene Ordnung der Schichten erhalten bleibt. Weiterhin gilt durch diese Bedingungen ein horizontaler Mindestand von δ für jede Schicht. Die Lösung dieses Optimierungsproblems kann die Breite der Zeichnung beeinflussen. Man kann sogar zeigen, dass es Schichtenzeichnungen gibt, welche eine exponentiell große Fläche benötigen, falls alle Kanten geradlinig gezeichnet werden. Falls die Breite der Zeichnung von Bedeutung ist, so kann man weitere Bedingungen aufstellen, welche die x-Koordinaten der Knoten einschränken. 3.5.2 Vertikale-Kanten Ansatz Um alle Kanten möglichst vertikal zu zeichnen und die Ordnungen der Knoten innerhalb der Schichten einzuhalten, muss man die Funktion X (u,v)∈E (x(u) − x(v))2 bezüglich der Nebenbedingungen (3.2) minimieren. Hierbei steht E für Kanten zwischen echten sowie auch zwischen künstlichen Knoten. Beide quadratischen Programme können für kleine Graphen in vertretbarer Zeit mit Standardtechniken gelöst werden. 3.5.3 Knotenpositionierung mit Prioritätswerten Um die Wichtigkeit einiger Kanten auszudrücken, führt man zwei Funktionen ω und Ω ein. Hierbei ist ω ein vorgegebener Parameter für die Wichtigkeit einer Kante. Der Parameter Ω wird innerhalb des Zeichenverfahrens für lange Kanten hoch gewählt. Um die Kantenknicke der künstlichen Knoten zu verhindern, setzt man z.B. Ω(u, v) = 8, falls beide Endknoten der Kante (u, v) künstliche Knoten sind, Ω(u, v) = 2, falls nur ein Endknoten der Kante (u, v) ein künstlicher Knoten ist und Ω(u, v) = 1, sonst. Will man die Kanten möglichst vertikal zeichnen, so sieht eine Zielfunktion mit Prioritätswerten wie folgt aus. Minimiere X Ω(u, v)ω(u, v)|x(u) − x(v)| (u,v)∈E bezüglich der Nebenbedingungen (3.2). Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 110 3.5.4 Kantenpositionierung Die Kanten werden für eine definierte Schichtung L wie folgt gezeichnet. • Kanten der Länge 1 werden geradlinig zwischen die beiden Endknoten gezeichnet. • Kanten der Länge k > 1 werden polygonal gezeichnet, so dass alle Positionen der eingefügten künstlichen Knoten der Kante auf dem Kantenzug liegen. Die künstlichen Knoten selbst werden nun entfernt. Wenn der Abstand δ zwischen zwei aufeinanderfolgenden Knoten einer Schicht breit genug gewählt wird, gibt es so keine unnötigen Überschneidungen zwischen Knoten und Kanten. 3.6 Übungsaufgaben Aufgabe 3.1 Beweisen Sie Lemma 3.1. Aufgabe 3.2 Beweisen Sie Lemma 3.2. Aufgabe 3.3 Beweisen Sie Lemma 3.3. Aufgabe 3.4 Geben Sie für den gerichteten Graph G = (V, E) aus Abbildung 3.15 eine möglichst große Menge Ea ⊆ E an, so dass (V, Ea ) azyklisch ist. Bestimmen Sie die Menge Ea mit (a) Algorithmus 1 (Die Ordnung o sei über die angegebene Knotennummern i mit o(i) = i gegeben.) (b) Algorithmus 2 (c) Algorithmus 3 aus Abschnitt 3.2. 1 2 5 4 7 3 6 8 9 Abbildung 3.15: Ein gerichteter Graph. Zeichnen von Graphen · Wintersemester 2015/16 111 Aufgabe 3.5 Bestimmen Sie für den gerichteten Graphen G in Abbildung 3.16 eine Schichtung mit Hilfe (a) Längster-Pfad-Schichtung (b) Coffman-Graham-Schichtung mit Breite höchstens 2. Hinweis Bestimmen Sie zunächst die transitive Reduktion von G. Transformieren Sie die gefundenen Schichtungen durch Einfügen von künstlichen Knoten jeweils in eine einfache Schichtung. 7 15 3 8 10 11 5 4 12 6 13 9 2 1 14 Abbildung 3.16: Gerichteter Graph Aufgabe 3.6 Geben Sie einen gerichteten Graphen G und eine natürliche Zahl w an, so dass die Coffman-Graham-Schichtung von G mit Breite höchstens w nicht die minimale Höhe erreicht. Aufgabe 3.7 Geben Sie die Kreuzungszahlen cuv für alle Paare (u, v) ∈ L22 des gerichteten geschichteten Graphen aus Abbildung 3.17 an. Die Knotenreihenfolge x1 von L1 sei die gezeichnete Anordnung. L e f g 2 L 1 Abbildung 3.17: Übung zur Kreuzungszahl Aufgabe 3.8 Zeigen Sie Satz 3.15. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 112 Aufgabe 3.9 Bestimmen Sie für den geschichtenen gerichteten Graphen in Abbildung 3.18 nach der Layer-by-Layer-Sweep Methode eine Darstellung mit möglichst geringer Anzahl von Kantenkreuzungen. Lösen Sie das 2-Schichten-Kreuzungsproblem mit einer festen Schicht mittels der (a) Greedy-Switch Heuristik (b) Split Heuristik (c) Greedy-Insert Heuristik (d) Barycenter Heuristik (e) Median Heuristik Vergleichen Sie die Anzahl der Kantenkreuzungen in den fünf Ergebnissen. 1 6 2 7 3 4 8 9 12 13 5 10 11 Abbildung 3.18: Übung zur Kreuzungsminimierung Aufgabe 3.10 Beweisen Sie Satz 3.26. Aufgabe 3.11 Wenden Sie die Hierachischen Methode an, um eine Zeichnung für den C4 = ({v1 , v2 , v3 , v4 }, {(v1 , v2 ), (v2 , v3 ), (v3 , v4 ), (v4 , v1 )}) zu bestimmen. Kapitel 4 Kräftebasierte Zeichenverfahren 4.1 Modell Wir betrachten nun kräftebasierte Verfahren zum Zeichnen von ungerichteten Graphen. Die Grundidee besteht in der Betrachtung eines physikalischen Kräftemodells. • Knoten = b elektrisch geladene Partikel, die sich gegenseitig abstoßen • Kanten = b Federn (englisch: springs), die den Abstoßkräften entgegenwirken. Durch Kanten verbundene Knoten ziehen sich also durch Federn an. Gesucht sind Positionen der Partikel im R2 , so dass sich ein Zustand minimaler Energie ergibt, d.h. dass die Summe der Kräfte an jedem Partikel möglichst Null betragen soll. Die Positionen der Partikel in diesem Zustand definieren die Knotenpositionen, welche zusammen mit geradlinigen Kanten die Zeichnung des gegebenen Graphen ergeben. Abbildung 4.1: Kräftebasierte Verfahren Wir erläutern nun verschiedene zweidimensionale kräftebasierte Ansätze für ungerichtete Graphen G = (V, E). Wir identifizieren dabei Knoten und Kanten mit ihren physikalischen Entsprechungen. Zunächst betrachten wir die auf die Knoten wirkenden Kräfte genauer. Kräfte sind sogenannte vektorielle Größen, welche durch ihre Stärke und Richtung eindeutig bestimmt sind. 113 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 114 Zur Darstellung von Kräften eignen sich Vektoren, welche eine Richtung und eine Länge besitzen. Anschaulich kann ein Vektor durch einen Pfeil dargestellt werden, der einen Startpunkt mit einem Endpunkt verbindet. Die Richtung des Vektors entspricht dabei der Pfeilrichtung und die Länge des Vektors der Pfeillänge. Zwei Pfeile, die gleichlang, parallel und gleichorientiert sind, beschreiben den gleichen Vektor. Somit kann jede Kraft F als ein Pfeil mit Länge und Richtung der Kraft dargestellt werden, welcher den Startpunkt im Ursprung hat. Ein solcher Pfeil ist durch Angabe der Koordinaten des Endpunktes eindeutig bestimmt. Die Kraft auf einen festen Knoten v ∈ V hängt von den Positionen pv = (x(v), y(v)) ∈ 2 R aller Knoten v ∈ V ab und setzt sich zusammen aus den Rückstoßkräften der anderen Knoten und der Federkräfte der mit v inzidenten Kanten, d.h. X X F (pv ) = Rückstoßkraft(pu , pv ) + Federkraft(pu , pv ). u∈V −{v} u∈N (v) Für einen Punkt pv = (x(v), y(v)) ∈ R2 sei p kpv k = x(v)2 + y(v)2 die Euklidische Norm von pv . Für einen Differenzvektor pv − pu , d.h. einer anziehenden (Feder)Kraft an v, definieren wir seine Länge als d(pu , pv ) = kpv − pu k. Analog sei für einen Differenzvektor pu − pv , d.h für eine abstoßende (Rückstoß)Kraft an v, seine Länge d(pu , pv ) = kpu − pv k. pv −pu pu −pv Durch d(p bzw. d(p erhält man einen normalisierten Differenzenvektor (Einu ,pv ) u ,pv ) heitsvektor). Zur Wahl der Rückstoßkraft und Federkraft: • Die Rückstoßkraft zwischen den Knoten u und v ist umgekehrt proportional zum Quadrat der Distanz von u und v (Inverses Quadrat-Gesetz). Man kann also z.B. R pu − pv Rückstoßkraft(pu , pv ) = · , 2 d(pu , pv ) d(pu , pv ) wählen, wobei R eine Rückstoßkonstante (Stärke der elektischen Abstoßung zwischen den Knoten) ist. • Die Federkraft der Kante {u, v} ∈ E folgt dem Hookeschen Gesetz, d.h. sie ist proportional zur Differenz von u und v und der Länge ℓ{u,v} der Feder zwischen u und v (dem gewünschten Abstand der Knoten im Layout). Man kann also z.B. pv − pu Federkraft(pu , pv ) = S{u,v} · (d(pu , pv ) − ℓ{u,v} ) · d(pu , pv ) wählen, wobei S{u,v} ein Steife-Parameter für die Feder ist. Je steifer die Feder ist, desto größer ist die Tendenz zur Ideallänge ℓ{u,v} der Kante. Zeichnen von Graphen · Wintersemester 2015/16 115 Algorithmus Kräftebasierte Verfahren (Spring Embedder Algorithmen) versuchen die Knotenpositionen zu bestimmen, für welche das physikalische Modell einen Zustand er→ − reicht, so dass F (pv ) = 0 für alle v ∈ V gilt. Hierzu geht man meistens wie folgt vor. • Beginne mit einer beliebigen (zufälligen) Position pv = (x(v), y(v)) für die Knoten v ∈V. • Iteriere – Berechne F (pv ) für alle Knoten v ∈ V . – Ändere die Positionen pv = (x(v), y(v)) ∈ R2 durch pv = pv + µF (pv ), wobei die Schrittweite µ eine kleine Zahl ist, die entweder vorgegeben wird oder dynamisch in Abhängigkeit von der Anzahl der bisher durchgeführten Iterationen gewählt wird. • bis die Änderung von pv klein genug ist Die Art der Wahl von µ, ein Abbruchkriterium und ob man alle Änderungen der Positionen sequentiell oder parallel ausführt sind einige der zu festzulegenden Punkte bei einem speziellen kräftebasierten Ansatz. Die so bestimmten Knotenpositionen definieren die Zeichnung. 4.2 Algorithmus von Tutte Die älteste kräftebasierte Zeichenvariante stammt von Tutte (1960), welche mit R = 0 (keine abstoßenden Kräfte mehr), Se = 1 und ℓe = 0 (keine Federn) für alle Kanten e ∈ E als Spezialfall von obiger Funktion F (pv ) definiert werden kann. F (pv ) wird ersetzt durch P P FTutte (pv ) = Rückstoßkraft(p , p ) + u v u∈N (v) Federkraft(pu , pv ) P Pu∈V −{v} pu −pv pv −pu R · + = S · (d(pu , pv ) − ℓ{u,v} ) · d(p u∈V u ,pv ) P−{v} d(pu ,pv )2 d(pu ,ppvv)−pu u∈N (v) {u,v} = 0 + u∈N (v) d(pu , pv ) · d(pu ,pv ) P = u∈N (v) (pv − pu ). Das Problem ist hier, dass pv = (0, 0) für alle v ∈ V einen stabilen Zustand F (pv ) = (0, 0) für alle v ∈ V liefert, was aber keiner guten Zeichnung entspricht. Dieses Problem behebt man, indem man die Position von mindestens drei festen Knoten V0 ⊂ V als Ecken eines konvexen Polygons fixiert. Die Positionen der freien Knoten in V1 = V − V0 werden 116 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 so bestimmt, so dass FTutte (pv ) = (0, 0) für alle v ∈ V1 . Damit gilt für pv = (x(v), y(v)) mit v ∈ V1 X (x(v) − x(u)) = 0 (4.1) u∈N (v) und X u∈N (v) (y(v) − y(u)) = 0. (4.2) Für v ∈ V0 ∪ V1 sei • N0 (v) = N(v) ∩ V0 , die Menge der Nachbarn von v in V0 und • N1 (v) = N(v) ∩ V1 , die Menge der Nachbarn von v in V1 . Dann folgt aus (4.1) für alle v ∈ V1 X x(v) = u∈N (v) X x(u) u∈N (v) Die linke Seite formen wir um und auf der rechten Seite teilen wir N(v) in N0 (v) und N1 (v) auf. X X deg(v)x(v) = x(u) + x(u) u∈N0 (v) u∈N1 (v) Auf der rechten Seite sind die Positionen der Knoten für u ∈ N0 (v) bereits bekannt. Um dies zu verdeutlichen, bezeichnen wir die Postition eines festen Knotens w ∈ V0 mit (x∗ (w), y ∗(w)) und bringen die Summe über die unbekannten Positionen auf die linke Seite. Es gilt für alle v ∈ V1 deg(v)x(v) − X x(u) = u∈N1 (v) X x∗ (w) (4.3) y ∗ (w) (4.4) w∈N0 (v) Analog erhält man aus (4.2) für alle v ∈ V1 die Gleichung deg(v)y(v) − X u∈N1 (v) y(u) = X w∈N0 (v) Durch (4.3) und (4.4) erhalten wir zwei Gleichungssysteme mit jeweils |V1 | Gleichungen und |V1 | vielen Unbekannten auf den linken Seiten. Die Position der freien Knoten wird hierdurch so bestimmt, dass jeder freie Knoten im Schwerpunkt seiner Nachbarn liegt. Zeichnen von Graphen · Wintersemester 2015/16 v5 117 v6 v1 v2 v4 v3 v7 v8 Abbildung 4.2: Graph zu Beispiel 4.1 Beispiel 4.1 Es sei G der Graph mit acht Knoten V = {v1 , . . . , v8 } und den acht Kanten {v1 , v2 }, {v2 , v3 }, {v3 , v4 }, {v4, v1 }, {v1 , v5 }, {v2 , v6 }, {v3 , v7 }, {v4 , v8 }, siehe Abbildung 4.1. Die Menge der freien Knoten sei V1 = {v1 , v2 , v3 , v4 } und die festen Knoten V0 = {v5 , v5 , v7 , v8 } haben die Positionen pv5 pv6 pv7 pv8 = = = = (0, 1) (1, 1) (1, 0) (0, 0) Zur Bestimmung der Positionen der freien Knoten muss man zwei Gleichungssysteme mit vier Unbekannten x(v1 ), x(v2 ), x(v3 ), x(v4 ), bzw. y(v1 ), y(v2), y(v3 ), y(v4) lösen. (1.) Das erste Gleichungssystem für die Unbekannten x(v1 ), x(v2 ), x(v3 ), x(v4 ) lautet: 3 · x(v1 ) − x(v2 ) − x(v4 ) 3 · x(v2 ) − x(v1 ) − x(v3 ) 3 · x(v3 ) − x(v2 ) − x(v4 ) 3 · x(v4 ) − x(v1 ) − x(v3 ) = = = = 0 1 1 0 (Der Faktor 3 stammt jeweils aus dem Knotengrad von v ∈ V1 und die rechte Seite aus der bekannten x-Koordinate des einen Nachbars von v ∈ V1 in V0 .) Die Lösung lautet offenbar x(v1 ) = x(v4 ) = 1/3 und x(v2 ) = x(v3 ) = 2/3. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 118 (2.) Das zweite Gleichungssystem für die Unbekannten y(v1 ), y(v2 ), y(v3), y(v4 ) lautet: 3 · y(v1) − y(v2 ) − y(v4) 3 · y(v2) − y(v1 ) − y(v3) 3 · y(v3) − y(v2 ) − y(v4) 3 · y(v4) − y(v1 ) − y(v3) = = = = 1 1 0 0 (Der Faktor 3 stammt wieder jeweils aus dem Knotengrad von v ∈ V1 und die rechte Seite aus der bekannten y-Koordinate des einen Nachbars von v ∈ V1 in V0 .) Die Lösung lautet offenbar y(v3 ) = y(v4 ) = 1/3 und y(y1) = y(v2 ) = 2/3. (3.) Somit lauten die Koordinaten der vier freien Punkte pv1 pv2 pv3 pv4 = = = = (1/3, 2/3) (2/3, 2/3) (2/3, 1/3) (1/3, 1/3), welche die in Abbildung 4.3 gezeigte Zeichnung liefern. v5 v8 v6 v1 v2 v4 v3 v7 Abbildung 4.3: Zeichnung nach Tuttes Algorithmus zu Beispiel 4.1 4.3 Algorithmus von Kamada und Kawai Kamada und Kawai (1989) simulieren in ihrem Ansatz graphentheoretische Distanzen durch Kräfte. Sie konstruieren für einen zusammenhängenden Graphen G = (V, E) eine Zeichnen von Graphen · Wintersemester 2015/16 119 Darstellung, so dass der Abstand d(pu , pv ) = kpu − pv k möglichst gut der Länge dist(u, v) eines kürzesten Weges zwischen u und v in G entspricht. Hierzu nutzen Kamada und Ka|V | wai Federn zwischen allen 2 Knotenpaaren, so dass die Kraft zwischen zwei Knoten u und v beschrieben werden kann als FederkraftKK (pu , pv ) = Suv · (d(pu , pv ) − dist(u, v)). Die Steife-Parameter der Federn werden so gewählt, dass diese stark sind für Knoten, welche in G eng beieinander liegen und mit steigendem Abstand dist(u, v) quadratisch abklingen durch S , Suv = dist(u, v)2 wobei S eine Konstante ist. Die potentielle Energie der Feder zwischen u und v ist E(u, v) = S d(pu , pv ) ( − 1)2 2 dist(u, v) Die potentielle Energie der gesamten Zeichnung bei Federn zwischen allen tenpaaren ist S X d(pu , pv ) ( − 1)2 . η= 2 u6=v dist(u, v) |V | 2 Kno- Notwendige Bedingungen für eine minimale Gesamtenergie sind ∂η ∂η = 0 und = 0 für alle v ∈ V, ∂x(v) ∂y(v) also dass die partiellen Ableitungen von η nach nach jeder Variablen Null ergibt. Dies führt auf 2|V | nichtlineare Gleichungen. Es gibt schnelle Approximationen zur Lösung dieser Systeme. Die beiden vorgestellten Algorithmen werden auch aus Energiebasierte Verfahren bezeichnet, da sich hier eine Zeichnung durch eine Energiefunktion ergibt. 4.4 Algorithmus von Eades Der Spring-Embedder-Algorithmus (englisch: spring embedder) von Eades (1984) nutzt ein Modell mit Federkraft mit logarithmischen Term. Damit wird auf weit entfernte Knoten eine schwächere Kraft ausgeübt. Wähle RückstoßkraftEades (pu , pv ) pu − pv R · 2 d(pu , pv ) d(pu , pv ) Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 120 und FederkraftEades (pu , pv ) = S{u,v} · log( d(pu , pv ) pv − pu )· . ℓ{u,v} d(pu , pv ) Eades schlägt vor: • Steife-Parameter S{u,v} = 0.2 • natürlichen Kantenlänge ℓ{u,v} = 1.0 • Rückstoßkonstante R = 1.0 • Schrittweite µ = 0.1 4.5 Algorithmus von Fruchterman und Reingold Fruchterman und Reingold (1991) ersetzen Rückstoßkraft(pu , pv ) durch RückstoßkraftFR (pu , pv ) = ℓ2{u,v} pu − pv d(pu , pv ) d(pu , pv ) · und Federkraft(pu , pv ) durch FederkraftFR (pu , pv ) = d(pu , pv )2 pv − pu · ℓ{u,v} d(pu , pv ) Um eine schnellere Konvergenz zu erzielen, wählt man hier eine überproportionale Kraftzunahme mit der Distanz. 4.6 Algorithmus von Frick, Ludwig und Mehldau Frick, Ludwig und Mehldau (1995) wählen Kräfte, welche ohne Quadratwurzeln berechnet werden können durch RückstoßkraftFLM (pu , pv ) = und FederkraftFLM (pu , pv ) = wobei Φ(v) = 1 + hungskraft besitzen. deg(v) 2 ℓ2{u,v} d(pu , pv )2 · (pu − pv ) d(pu , pv )2 · (pv − pu ) ℓ2{u,v} · Φ(v) dafür sorgt, dass Knoten mit hohem Grad weniger Anzie- Zeichnen von Graphen · Wintersemester 2015/16 121 4.7 Übungsaufgaben Aufgabe 4.1 Geben Sie Kräfte für ein zweidimensionales kräftebasiertes Layoutverfahren an, die geeignet sind, um (a) einen Knoten in der Nähe des Ursprungs (0, 0) zu halten, (b) einen Knoten in der Nähe einer vorgegebenen Position zu halten, (c) einen Knoten in der Nähe der x-Achse zu platzieren, (d) eine Kante parallel zur y-Achse auszurichten. Aufgabe 4.2 Betrachten Sie den Graphen G = (V, E) in Abbildung 4.4. Zeichnen Sie den Graphen nach dem Algorithmus von Tutte. Gehen Sie wie in Beispiel 4.1 vor. Die Menge der freien Knoten sei V1 = {v0 , v1 , v2 , v3 , v4 } und die festen Knoten V0 = {v5 , v5 , v7 , v8 } haben die Positionen pv5 = (0, 1) pv6 = (1, 1) pv7 = (1, 0) pv8 = (0, 0) v5 v6 v2 v1 v4 v8 v0 v3 v7 Abbildung 4.4: Übung zum Algorithmus von Tutte Aufgabe 4.3 Zeichnen Sie den Weg P3 = ({v1 , v2 , v3 }, {{v1 , v2 }, {v2 , v3 }}) (a) so dass ein Spring-Embedder-Algorithmus keine Änderung an den Knotenpositionen vornimmt, (b) so dass ein Spring-Embedder-Algorithmus Änderungen an den Knotenpositionen vornimmt. 122 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 Kapitel 5 Zeichnen von planaren Graphen 5.1 Eigenschaften planarer Graphen 5.1.1 Definition und Einbettungen Definition 5.1 (planar) Ein Graph G = (V, E) ist planar, falls es eine injektive Abbildung Π der Knoten und Kanten von G auf die Ebene gibt, so dass die folgenden Bedingungen erfüllt sind. (1.) Jedem Knoten u ∈ V wird ein Punkt (x(u), y(u)) ∈ R2 zugeordnet. (2.) Jede Kante {u, v} ∈ E wird auf eine stetige Kurve abgebildet, welche die Bilder von u und v miteinander verbindet. (3.) Die Bilder zweier verschiedener Kanten dürfen nur die Bilder der gemeinsamen Endknoten gemeinsam haben. Jede Zeichnung einer solchen Abbildung Π heißt planare Einbettung. Ein Graph ist also planar, wenn er eine planare Einbettung besitzt. Jede planare Zeichnung im Sinne von Definition 1.1 ist also eine planare Einbettung. Umgekehrt gilt dies nicht, da in einer planaren Einbettung die Kantenführung nicht genau festgelegt ist. Abbildung 5.1 zeigt eine planare Einbettung eines planaren Graphen. Die Art der Kantenführung wird in der Definition der planaren Einbettung nicht festgelegt. Es gibt jedoch stets eine geradlinige Zeichnung. Satz 5.2 (Wagner 1936) Jeder planare Graph hat eine geradlinige Zeichnung ohne Kantenkreuzungen. ohne Beweis Abbildung 5.2 zeigt eine planare Einbettung mit geradliniger Kantenführung. 123 124 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 Abbildung 5.1: Eine planare Einbettung. Abbildung 5.2: Eine planare Einbettung. Jede planare Einbettung eines planaren Graphen zerlegt die Ebene in zusammenhängende Bereiche, welche man als Flächen (Gebiete, Facetten oder Länder) bezeichnet. Eine Fläche ist also ein von Kanten begrenzter Bereich in einer planaren Einbettung, in welcher keine Knoten liegen. In jeder planaren Einbettung gibt es genau eine unbeschränkte Fläche, die sogenannte äußere Fläche. Die restlichen Flächen heißen auch innere Flächen. Die planare Einbettung in Abbildung 5.3 hat 4 Flächen (3 innere und 1 äußere). innere Flächen äußere Fläche Abbildung 5.3: Eine planare Einbettung und deren Flächen Für eine Fläche f einer planaren Einbettung eines planaren Graphen sei ℓ(f ) die Länge des Randes, d.h. die Anzahl der Kanten auf dem Rand von f . Hierbei werden Kanten, welche beide Seiten auf dem Rand von f haben, doppelt gezählt. Lemma 5.3 Für jede planare Einbettung eines planaren Graphen G = (V, E) mit Flächenmenge F gilt X ℓ(f ) = 2|E|. f ∈F Zeichnen von Graphen · Wintersemester 2015/16 125 Beweis. Jede Kante liegt an genau zwei Flächen oder kommt zweimal auf dem Rand einer Fläche vor. Als Datenstruktur für planare Einbettungen eignen sich Knoten-Uhrzeigerlisten. Für jeden Knoten werden hier die Nachbarn im Uhrzeigersinn beginnend beim Nachbarn mit kleinstem Index durchlaufen. v1 e1 f4 e6 f1 e5 v3 v2 f3 e3 v4 f2 e7 v5 e4 e8 e2 v6 Abbildung 5.4: Eine planare Einbettung Beispiel 5.4 (Knoten-Uhrzeigerlisten) Die Knoten-Uhrzeigerlisten für die planare Einbettung in Abbildung 5.4 lauten wie folgt. P = {P (v1 ), P (v2), P (v3 ), P (v4 ), P (v5), P (v6 )} mit P (v1 ) P (v2 ) P (v3 ) P (v4 ) P (v5 ) P (v6 ) = = = = = = ( ( ( ( ( ( v3 , v4 , v1 , v2 , v1 , v2 , v5 v6 v4 , v6 , v3 , v5 , ) ) v5 v3 v6 v4 ) ) ) ) Für eine planare Einbettung sind die Flächen-Uhrzeigerlisten wie folgt definiert. Für jede innere Fläche werden die Knoten auf dem Rand im Uhrzeigersinn beginnend beim Knoten mit kleinstem Index durchlaufen. Für die äußere Fläche werden die Knoten auf dem Rand gegen den Uhrzeigersinn beginnend beim Knoten mit kleinstem Index durchlaufen. Beispiel 5.5 (Flächen-Uhrzeigerlisten mit Knoten) Die Flächen-Uhrzeigerlisten mit Knoten für die planare Einbettung in Abbildung 5.4 lauten wie folgt. P = {P (f1 ), P (f2), P (f3 ), P (f4)} mit P (f1 ) P (f2 ) P (f3 ) P (f4 ) = = = = ( ( ( ( v1 , v3 , v2 , v1 , v3 , v4 , v6 , v5 , v5 v6 , v4 v6 , ) v5 ) ) v2 , v4 , v3 ) Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 126 Gelegentlich werden in Flächen-Uhrzeigerlisten anstelle der Knoten auch die Kanten auf dem Rand für innere Flächen im Uhrzeigersinn beginnend bei der Kante mit kleinstem Index durchlaufen. Für die äußere Fläche werden die Kanten auf dem Rand gegen den Uhrzeigersinn beginnend bei der Kante mit kleinstem Index durchlaufen. Beispiel 5.6 (Flächen-Uhrzeigerlisten mit Kanten) Die Flächen-Uhrzeigerlisten mit Kanten für die planare Einbettung in Abbildung 5.4 lauten wie folgt. P = {P (f1 ), P (f2), P (f3 ), P (f4)} mit P (f1 ) P (f2 ) P (f3 ) P (f4 ) = = = = ( ( ( ( e1 , e2 , e3 , e1 , e6 , e7 , e8 , e2 , e7 e5 , e4 e3 , ) e8 ) ) e4 , e5 , e6 ) Offenbar ist eine planare Einbettung durch die Angabe von Knoten-Uhrzeigerlisten oder Flächen-Uhrzeigerlisten nicht eindeutig bestimmt. Dies zeigt die zweite planare Einbettung für den Graph aus Abbildung 5.4 in Abbildung 5.5, welche die gleiche KnotenUhrzeigerlisten und Flächen-Uhrzeigerlisten liefert. e5 v4 e8 e4 v2 f3 v6 f4 e6 f1 e7 v1 e1 e3 e2 v3 v5 f2 Abbildung 5.5: Eine weitere planare Einbettung für den Graph aus Abbildung 5.4 Zwei planare Einbettungen für einen planaren Graphen mit gleichen Knoten-Uhrzeigerlisten oder Flächen-Uhrzeigerlisten heißen kombinatorisch äquivalent. Jede planare Einbettung für einen planaren Graphen zu vorgegebenen Knoten-Uhrzeigerlisten oder FlächenUhrzeigerlisten heißt kombinatorische Einbettung. Ein planarer Graph kann exponentiell viele verschiedene kombinatorische Einbettungen besitzen. Der Graph mit n Knoten in Abbildung 5.6 hat (n − 2)! viele kombinatorische Einbettungen. Viele Optimierungsprobleme, welche die Menge aller kombinatorischen Einbettungen eines Graphen betrachten, sind NP-schwer. 5.1.2 Eulersche Polyederformel Wir geben nun den Eulerschen Polyedersatz (auch als Eulersche Polyederformel bekannt) an, welcher einen Zusammenhang zwischen der Anzahl der Kanten, Knoten und Flächen in planaren Graphen liefert. Zeichnen von Graphen · Wintersemester 2015/16 127 v1 v3 v4 v5 ... vn v2 Abbildung 5.6: Ein planarer Graph kann viele kombinatorische Einbettungen besitzen Satz 5.7 (Eulerscher Polyedersatz) Es sei G = (V, E) ein zusammenhängender planar eingebetteter Graph mit Flächenmenge F . Dann gilt |V | + |F | − |E| = 2. Beweis. Es sei G = (V, E) ein zusammenhängender planar eingebetteter Graph mit Flächenmenge F . Wir beweisen die Aussage induktiv über die Anzahl der Flächen |F |. Falls G genau |F | = 1 Fläche besitzt, so ist G aufgrund des Zusammenhangs ein Baum, d.h. |E| = |V | − 1 und damit gilt |V | + |F | − |E| = 2. Es sei nun G = (V, E) ein Graph mit |F | ≥ 2 Flächen und die Behauptung gelte für alle zusammenhängenden planar eingebetteten Graphen mit höchstens |F | − 1 Flächen. Da |F | ≥ 2 gilt, ist G kein Baum. Es gibt also einen Kreis {v1 , v2 }, {v2 , v3 }, . . . , {vn , v1 } ∈ E in G. Durch Löschen einer Kante {vi , vi+1 } aus diesem Kreis, erhalten wir einen Graphen mit |F | − 1 Flächen und |E| − 1 Kanten. Nach Induktionsvoraussetzung gilt: |V | + (|F | − 1) − (|E| − 1) = 2 und damit |V | + |F | − |E| = 2. Die planare Einbettung des planaren Graphen in Abbildung 5.3 erfüllt mit 4 Flächen, 8 Kanten und 6 Knoten offenbar die Eulersche Formel. Bemerkung 5.8 (1.) Die Eulersche Formel gilt nicht für unzusammenhängende Graphen. Für Graphen mit k Zusammenhangskomponenten gilt |V | − |E| + |F | = k + 1. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 128 (2.) Damit haben alle planaren Einbettungen eines planaren Graphen gleich viele Flächen. Korollar 5.9 Ein zusammenhängender planarer Graph ohne Kreise hat n − 1 Kanten. Beweis. Setze in Satz 5.7 |F | = 1. Ein zusammenhängender Graph ohne Kreis heißt Baum und ist offenbar immer planar. Während allgemeine Graphen mit n Knoten bis zu n(n−1) Kanten haben, können pla2 nare Graphen nur linear in der Knotenanzahl viele Kanten haben, d.h. planare Graphen können nicht beliebig dicht seien. Lemma 5.10 Es sei G = (V, E) ein zusammenhängender planarer Graph mit |V | ≥ 3. Dann gilt: (1.) |E| ≤ 3 · |V | − 6 P (2.) v∈V (6 − deg(v)) ≥ 12 Beweis. (1.) Es sei G ein planarer Graph mit einer planaren Einbettung mit Flächenmenge F . Da G mindestens 3 Knoten hat und zusammenhängend ist, gilt ℓ(f ) ≥ 3 für jede Fläche f ∈ F und damit gilt X ℓ(f ) ≥ 3|F |. (5.1) f ∈F Mit Lemma 5.3 und (5.1) folgt dann 2|E| Lemma 5.3 = X f ∈F (5.1) ℓ(f ) ≥ 3|F |. Wir formen die Eulersche Polyederformel um und erhalten: |F | = 2 + |E| − |V | und durch Multiplikation mit 3 erhalten wir 3|F | = 6 + 3|E| − 3|V |. Dies setzten wir in (5.2) ein und erhalten: 2|E| ≥ 6 + 3|E| − 3|V | und damit folgt die Behauptung: |E| ≤ 3 · |V | − 6 (5.2) Zeichnen von Graphen · Wintersemester 2015/16 129 (2.) In Übungsaufgabe 1.1 haben wir gezeigt, dass X deg(v) = 2|E|. v∈V Damit folgt P v∈V (6 − deg(v)) = (1.) 6|V | − 2|E| ≥ 6|V | − 2(3|V | − 6) = 12 Eine wichtige Rolle bei der Charakterisierung von planaren Graphen spielen vollständige und vollständig bipartite Graphen. Ein Graph heißt vollständig, falls je zwei Knoten durch eine Kante verbunden sind. Einen vollständigen Graphen mit n Knoten bezeichnet man kurz mit Kn . Kn = ({v1 , . . . , vn }, {{vi , vj } | 1 ≤ i < j ≤ n}) Ein Graph heißt vollständig bipartite, falls es eine Partition der Knotenmenge in zwei Mengen V1 und V2 gibt, so dass jeder Knoten aus V1 mit allen Knoten aus V2 verbunden ist und es keine Kanten zwischen zwei Knoten aus V1 und keine Kanten zwischen zwei Knoten aus V2 gibt. Einen vollständigen bipartiten Graphen mit einer Partition in zwei Mengen der Größe n bzw. m bezeichnet man kurz mit Kn,m . Kn,m = ({v1 , . . . , vn } ∪ {w1 , . . . , wm }, {{vi , wj } | 1 ≤ i ≤ n, 1 ≤ j ≤ m}) Abbildung 5.7: Der K5 Korollar 5.11 Der K5 ist nicht planar. Beweis. Der K5 ist zusammenhängend und hat 5 Knoten und 10 Kanten. Widerspruch zu Lemma 5.10(1). Um die Nichtplanarität des K3,3 zu zeigen, benötigt man eine genauere Abschätzung für dreiecksfreie Graphen, d.h. Graphen ohne Kreise mit 3 Knoten als Teilgraphen. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 130 Lemma 5.12 Es sei G = (V, E) ein dreiecksfreier zusammenhängender planarer Graph. Dann gilt: |E| ≤ 2 · |V | − 4 Beweis. Übungsaufgabe 5.2 Abbildung 5.8: Der K3,3 Korollar 5.13 Der K3,3 ist nicht planar. Beweis. Der K3,3 ist zusammenhängend und dreiecksfrei und hat 6 Knoten und 9 Kanten. Widerspruch zu Lemma 5.12. Lemma 5.14 Es sei G = (V, E) ein planarer Graph mit |V | ≥ 3. Sei Ni die Anzahl der Knoten vom Grad i in G. Dann gilt 6·N0 +5·N1 +4·N2 +3·N3 +2·N4 +N5 ≥ N7 +2·N8 +3·N9 +. . .+(∆(G)−6)·N∆(G) +12. Beweis. Es gilt n = 5.10 gilt, folgt P∆(G) i=0 Ni und 2m = P∆(G) ∆(G) 6· X i=0 i=0 i · Ni . Da 6n ≥ 2m + 12 nach Lemma ∆(G) Ni ≥ X i=0 i · Ni + 12 Lemma 5.15 Jeder planare Graph hat einen Knoten vom Grad höchstens 5. Beweis. Wenn alle Knoten den Grad mindestens 6 hätten, folgt mit Lemma 5.14 ein Widerspruch. Es ist nun wichtig zwischen Graphen mit und ohne möglichen Mehrfachkanten (multiple Kanten) und Schleifen (Loops) zu unterscheiden. (Graphen ohne Mehrfachkanten und Schleifen nennt man auch einfache Graphen.) Lemma 5.10(1) und 5.12 gelten nur für einfache Graphen. Im folgenden Abschnitt treten Graphen mit Mehrfachkanten auf. Zeichnen von Graphen · Wintersemester 2015/16 131 5.1.3 Duale Graphen Definition 5.16 (Dualgraph) Es sei G = (V, E) ein planarer Graph mit einer festen planaren Einbettung und F die Menge der Flächen von G bzgl. dieser Einbettung. Wir definieren den geometrischen Dualgraph (kurz Dualgraph) G∗ = (V ∗ , E ∗ ) zu G wie folgt. Zu jeder Fläche aus F gibt es genau einen Knoten in V ∗ und zu jeder Kante e ∈ E gibt es genau eine duale Kante e∗ ∈ E ∗ , welche die beiden Knoten aus V ∗ verbindet, welche den Flächen aus F entsprechen, an welche e angrenzt. Beispiel 5.17 (Dualgraph) Abbildung 5.9 zeigt eine planare Einbettung eines planaren Graphen G und den dadurch definierten Dualgraphen G∗ . Abbildung 5.9: Ein planarer Graph G (schwarz) und sein Dualgraph G∗ (rot) Bemerkung 5.18 (1.) Der Dualgraph G∗ zu einem planaren Graphen G kann Mehrfachkanten und Loops enthalten. G∗ besitzt genau dann Mehrfachkanten, wenn es zwei benachbarte Flächen gibt, welche mehr als eine begrenzende Kante gemeinsam haben. G∗ enthält genau dann einen eine Schleife, wenn G eine Brücke enthält. (2.) Offensichtlich ist G∗ wieder planar und es gilt (G∗ )∗ = G. Hierbei muss jedoch G∗ mit seiner aus G gewonnenen Einbettung betrachtet werden. (3.) Zu einem planaren Graphen G kann es mehrere Dualgraphen geben, da G möglichweise mehrere verschiedene Einbettungen besitzt. Lemma 5.19 Es sei G = (V, E) ein planarer Graph mit einer festen Einbettung und F die Menge der Flächen von G bzgl. dieser Einbettung. Der zugehörige Dualgraph G∗ hat dann |F | Knoten, |E| Kanten und |V | Flächen. 132 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 5.1.4 Charakterisierung planarer Graphen Definition 5.20 (Unterteilung und Minor) Es sei G = (V, E) ein Graph. Eine Unterteilung (Subdivision) von G entsteht durch das Ersetzen {u, v} ∈ E von Kanten durch Wege (s1 = u, s2, . . . , sk−1, sk = v). Ein Minor von G entsteht durch das Verschmelzen von adjazenten Knoten. Satz 5.21 (Kuratowski 1930) Ein Graph ist genau dann planar, wenn er keine Unterteilung des K5 oder des K3,3 als Teilgraph enthält. ohne Beweis Abbildung 5.10: Unterteilungen des K5 und des K3,3 Satz 5.22 (Wagner 1937) Ein Graph ist genau dann planar, wenn er weder den K5 noch den K3,3 als Minor enthält. ohne Beweis 5.1.5 Knotenfärbung planarer Graphen Definition 5.23 (k-Knotenfärbung) Sei k ∈ N. Eine k-Knotenfärbung eines ungerichteten Graphen G = (V, E) ist eine Abbildung ψ : V → {1, . . . , k}, wobei 1, . . . , k die Farben repräsentieren. Eine k-Färbung ψ von G heißt legal, falls ψ(u) 6= ψ(v) für jede Kante {u, v} in E gilt. G heißt k-färbbar, falls es eine legale k-Färbung von G gibt. Die Mengen {v ∈ V | ψ(v) = i}, 1 ≤ i ≤ k, heißen die Farbklassen von G. Alternativ kann man den Begriff der k-Färbbarkeit wie folgt charakterisieren: Ein Graph G = (V, E) ist genau dann k-färbbar, wenn V in k unabhängige Mengen U1 , . . . , Uk partitioniert werden kann, also genau dann, wenn gilt: S (1.) ki=1 Ui = V , (2.) (∀i, j ∈ {1, . . . , k}) [i 6= j =⇒ Ui ∩ Uj = ∅] und (3.) für jedes i ∈ {1, . . . , k} ist Ui eine unabhängige Menge in G. Jedes Ui entspricht einer Farbklasse. Satz 5.24 Jeder planare Graph kann in polynomieller Zeit mit 6 Farben gefärbt werden. Zeichnen von Graphen · Wintersemester 2015/16 133 Beweis. Übungsaufgabe 5.5. Viel aufwendiger ist der relativ junge Beweis zur 4-Färbbarkeit planarer Graphen. Satz 5.25 (Robertson, Sanders, Seymour, Thomas 1996) Jeder planare Graph kann mit 4 Farben gefärbt werden. Der Beweis zu diesem Satz kann auch in einen Algorithmus zur Berechnung einer 4Färbung umgewandelt werden, welcher eine Laufzeit von O(|V |2 ) hat. Aufgrund einer Fallunterscheidung mit 633 Fällen, ist der Algorithmus praktisch nicht realisierbar. 5.1.6 Planaritätstests und Einbettungsberechnung Der erste Linearzeitalgorithmus zum Testen der Planarität wurde bereits 1976 gefunden. Satz 5.26 (Booth, Luecker 1976) Zu einem gegebenen Graphen G mit n Knoten kann man in Zeit O(n) testen, ob G planar ist. ohne Beweis Seitdem gibt es zahlreiche weitere Algorithmen. Satz 5.27 (Moyer, Myrvold 2004) Zu einem gegebenen Graphen G mit n Knoten kann man in Zeit O(n) testen, ob G planar ist und im positiven Fall auch eine planare Einbettung bestimmen. ohne Beweis 5.2 Planarisierung, Augmetierung und Gradbeschränkung von Graphen Um die Methoden zum Zeichnen von planaren Graphen auch auf nichtplanare Graphen anzuwenden, beschreiben wir hier Ansätze, die einen nichtplanaren Graphen G in einen planaren Graphen G′ transformieren. Weiterhin haben Zeichenverfahren für planare Graphen oft noch weitere Voraussetzungen wie k-facher Zusammenhang mit k = 2 oder k = 3 und Beschränkungen des Knotengrades meist zwischen 4 und 8. 5.2.1 Planarisierungsmethode Einen nicht planaren Graphen kann man wie folgt mit Hilfe von Algorithmen zum Zeichnen von planaren Graphen zeichnen. (1.) Bestimme einen planaren Teilgraphen GP von G, indem möglichst wenige Kanten aus G gelöscht werden. 134 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 (2.) Konstruiere eine planare Einbettung für den Graph GP . (3.) Die gelöschten Kanten werden so wieder eingefügt, dass möglichst wenige Kantenkreuzungen entstehen. (4.) Ersetze die Kantenkreuzungen durch künstliche Knoten und erhalte so einen planaren Graph G′ . (5.) Zeichne G′ mit einem Algorithmus für planare Graphen. (6.) Entferne die künstlichen Knoten. Die Schritte werden nun näher erläutert. Bemerkung 5.28 (1.) Das Problem einen möglichst großen planaren Teilgraphen zu finden, entspricht offenbar dem Problem M IN P LANAR E DGE R EMOVAL. M IN P LANAR E DGE R EMOVAL Gegeben: Ein ungerichteter Graph G = (V, E). Gesucht: Eine möglichst kleine Menge E ′ ⊆ E, so dass (V, E − E ′ ) planar ist. M IN P LANAR E DGE R EMOVAL ist NP-schwer. Wir geben nun einen Greedy-Algorithmus an, welcher zu einem gegebenen Graphen G = (V, E) einen maximalen planaren Teilgraphen GP = (V, F ) bestimmt, d.h. einen Teilgraphen zu dem keine Kante aus G mehr hinzugefügt werden kann, ohne die Planarität zu zerstören. (1) F = ∅ (2) for all e ∈ E do (3) if GP [V, F ∪ {e}] is planar then (4) GP = (V, F ∪ {e}) Der Algorithmus kann mit einer Methode zum Testen der Planarität in Zeit O(|V |·|E|) realisiert werden. Das Optimierungsproblem M IN P LANAR E DGE R EMOVAL lässt sich als ein lineares Programm formulieren. Nach dem Satz von Kuratowski (Satz 5.21) ist ein Graph genau dann planar, wenn er weder eine Unterteilung des vollständigen Graphen Knoten K5 noch eine Unterteilung des vollständigen bipartiten Graphen K3,3 enthält. Zeichnen von Graphen · Wintersemester 2015/16 135 Wir ordnen nun jeder Teilmenge F der Kantenmenge E eines gegebenen Graphen G = (V, E) einen |E|-dimensionalen charakteristischen Vektor χF ∈ {0, 1}E zu, dessen Komponenten mit den Kanten e ∈ E indiziert sind und setzen 1, falls e ∈ F, χF (e) = 0, falls e 6∈ F. Dann sind die charakteristischen Vektoren aller planaren Teilgraphen von G genau die ganzzahligen Lösungen x ∈ RE des folgenden Ungleichungssystems X e∈K 0 ≤ xe ≤ 1 für alle e ∈ E (5.3) xe ≤ |K| − 1 für alle K ⊆ E, (5.4) wobei K die Kantenmenge einer als Teilgraph von G auftretenden Unterteilung eines K3,3 oder K5 definiert. Die zu maximierende Zielfunktion X xe (5.5) e∈E und die Ganzzahligkeitsbedingung xe ∈ N für alle e ∈ E (5.6) liefern dann ein ganzzahliges lineares Optimierungsproblem, da die Ungleichungen die verbotenen Kuratowski Graphen ausschliessen. Läßt man die Ganzzahligkeitsbedingungen weg, so entsteht ein lineares Optimierungsproblem, dessen optimaler Zielfunktionswert eine obere Schranke für die Anzahl der Kanten in einem planaren Teilgraphen von G ist. (2.) Möglich nach Abschnitt 5.1.6 (3.) Das Problem die gelöschten Kanten wieder in den Graphen einzufügen und möglichst wenige Kantenkreuzungen zu erzeugen ist schwer. Es gibt Näherungsansätze, die dies über kürzeste Wege im Dualgraphen lösen. (4.) Ersetze jede Kantenkreuzung zwischen einem Kantenpaar ({u1 , v1 }, {u2 , v2 }) durch einen Knoten w und vier Kanten {w, u1}, {w, u2}, {w, v1}, {w, v2}, Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 136 u 1 u u 2 u 1 2 w v 2 v v 1 2 v 1 Abbildung 5.11: Ersetze Schnittpunkte durch Knoten siehe Abbildung 5.11. Der so konstruierte Graph G′ wird als der planarisierte Graph von G bezeichnet. (5.) Zwei Algorithmen sind in Abschnitt 5.4 und Kapitel 6 angegebenen. 5.2.2 Augmentierung des Zusammenhangs Es gibt effiziente Algorithmen zur Vergrößerung (Augmentierung) des Zusammenhangs auf k = 2 und k = 3 von Graphen durch Hinzufügen von möglichst wenigen Kanten. Zu beachten ist hierbei jedoch, dass das Hinzufügen der Kanten zur Erhöhung des Zusammenhangs die Planarität nicht zerstören soll. Dieses Problem kann durch Ergänzung des in Abschnitt 5.2.1 angegebenen linearen Programms formuliert werden. Dazu vervollständigen wir unseren Eingabegraphen G = (V, E) mit n Knoten durch Hinzunahme aller fehlenden Kanten zum vollständigen Graphen Kn = (V, En ). Den Ausschluss des K5 und des K3,3 haben wir in Abschnitt 5.2.1 formuliert. Für k-Zusammenhang ist es hinreichend, zu fordern, dass der Graph nach Entfernen von k − 1 beliebigen Knoten immer noch zusammenhängend ist, und das ist der Fall, wenn zwischen jeder Knotenteilmenge im Restgraphen und deren Komplement wenigstens eine Kante verläuft. Für Y ⊆ V bezeichnen wir mit G − Y den Graphen, der aus G durch Entfernung aller Knoten in Y und der zu diesen inzidenten Kanten resultiert. Für W ⊆ V − Y sei dann δG−Y (W ) die Menge der Kanten, die in G − Y die Knotenmenge W mit ihrem Komplement verbindet. Die Ungleichungen lauten dann X xe ≥ 1 für alle Y ⊆ V, |Y | = k − 1, W ⊆ V − Y (5.7) e∈δKn −Y (W ) Die zu maximierende Zielfunktion X e∈E xe − X xe (5.8) e∈En −E sorgt nun dafür, dass viele Kanten aus unserem ursprünglichen Graphen G = (V, E) genommen werden, aber nur wenige der neuen Kanten. Zeichnen von Graphen · Wintersemester 2015/16 137 5.2.3 Gradbeschränkung Für einige Zeichenverfahren planarer Graphen (siehe z.B. Kapitel 6) sind Knotengradbeschränkungen notwendig. Dies kann man erreichen, indem man Knoten mit hohem Grad durch Kreise ersetzt und dadurch einen maximalen Knotengrad von höchstens 3 erhält, siehe Abbildung 5.12. Abbildung 5.12: Gradbeschränkung ist z.B. für orthogonale Zeichnungen wichtig Mit den Notationen aus Abschnitt 5.2.2 kann man eine Gradbeschränkungen auf Grad l durch folgende Ungleichungen formulieren: X xe ≤ l für alle v ∈ V (5.9) e∈δKn ({v}) 5.3 Maximal planare Graphen und kanonische Ordnungen Definition 5.29 (maximal planar, Triangulation) Ein maximal planarer Graph ist ein planarer Graph, zu dem keine Kante mehr hinzugefügt werden kann, ohne die Planarität zu zerstören. Eine Triangulation (ein triangulierter Graph) ist ein planar eingebetteter Graph, in dem jede Fläche durch einen Kreis mit genau drei Kanten begrenzt ist. Abbildung 5.13: Ein maximal planarer Graph/eine Triangulation Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 138 Satz 5.30 Für einen Graph G = (V, E) mit |V | ≥ 3 sind folgende Aussagen äquivalent. (1.) |E| = 3|V | − 6 (2.) G ist eine Triangulation. (3.) G ist ein maximal planarer Graph. Beweis. (1) ⇔ (2) Wie im Beweis von Lemma 5.10(1.) folgt |E| = 3|V | − 6 ⇔ 2|E| = 3|F | ⇔ Jede Fläche ist durch einen Kreis mit genau 3 Kanten begrenzt. (2) ⇔ (3) Es gibt eine Fläche in F , die von mehr als drei Kanten begrenzt wird, genau dann, wenn es eine Kante e 6∈ E gibt, deren Hinzufügen die Planarität nicht zerstört. Lemma 5.31 Es sei G = (V, E) ein maximal planarer Graph mit |V | > 3. Sei Ni die Anzahl der Knoten vom Grad i in G. Dann gilt 3 · N3 + 2 · N4 + N5 − N7 − 2 · N8 − 3 · N9 − . . . − (∆(G) − 6) · N∆(G) = 12. Beweis. Knoten vom Grad 0,1,2 gibt es in maximal planaren Graphen nicht, da sonst noch mindestens eine Kante hinzugefügt werden kann, ohne die Planarität zu zerstören. Analog zu Lemma 5.14 kann man die Aussage dann zeigen. Korollar 5.32 (a) Wenn G maximal planar ist, so gibt es mindestens 4 Knoten vom Grad kleiner als 6. (b) Falls G maximal planar ist und keine Knoten vom Grad 3 oder 4 hat, so hat G mindestens 12 Knoten vom Grad 5. Weiterhin liefert Lemma 5.31 noch Eigenschaften für planare Graphen. Korollar 5.33 (a) Falls G planar und mindestens 5-fach zusammenhängend ist, so ist |V | ≥ 12. (b) Falls G planar ist, so ist G nicht 6-fach zusammenhängend. Beweis. Zeichnen von Graphen · Wintersemester 2015/16 139 (a) Da G 5-fach zusammenhängend ist, gibt es zwischen jedem Knotenpaar in G mindestens 5 knotendisjunkte Wege. Damit hat G keine Knoten vom Grad ≤ 4 und mit N3 = N4 = 0 folgt aus Lemma 5.31, dass jeder 5-fach zusammenhängende maximal planare Graph mindestens 12 Knoten hat. Angenommen es gibt einen planaren 5-fach zusammenhängenden Graphen mit höchstens 11 Knoten, so kann man aus diesem durch Einfügen von Kanten einen 5fach zusammenhängenden maximal planaren Graphen mit höchstens 11 Knoten konstruieren, Widerspruch. (b) Da ein 6-fach zusammenhängender Graph keinen Knoten vom Grad ≤ 5 hat (d.h. N3 = N4 = N5 = 0), kann es nach Lemma 5.31 keinen 6-fach zusammenhängenden maximal planaren Graphen geben. Angenommen es existiert ein planarer 6-fach zusammenhängender Graph G. Fügt man in G möglichst viele Kanten ein solange die Planarität nicht zerstört wird, so erhält man einen maximal planaren Graphen G′ , der noch 6-fach zusammenhängend ist (Da das Hinzufügen von Kanten natürlich die Zusammenhangszahl nicht erniedrigt). Widerspruch. Also gibt es auch keinen 6-fach zusammenhängenden Graphen der planar ist. Satz 5.34 Zu einem gegebenen planaren Graphen G = (V, E) kann man durch Einfügen von künstlichen Kanten in linearer Zeit eine Triangulation (V, Ê) mit E ⊆ Ê berechnen. Beweis. Übungsaufgabe 5.7 Wir definieren nun eine Knotenreihenfolge für maximal planare Graphen. Definition 5.35 (Kanonische Ordnung) Es sei G = (V, E) ein maximaler planarer eingebetteter Graph mit n Knoten. Dann wird die äußere Fläche der Einbettung durch einen Kreis mit drei Knoten u, v, w ∈ V begrenzt. Eine Knotenordnung v1 = u, v2 = v, v3 , v4 , ..., vn−1 , vn = w heißt kanonisch, falls für 4 ≤ k ≤ n die folgenden Eigenschaften gelten. (1.) Der von v1 , v2 , . . . , vk−1 induzierte Teilgraph Gk−1 ist 2-fach zusammenhängend1 und die äußere Fläche wird durch einen Kreis Ck−1 begrenzt, der die Kante {u, v} enthält. (2.) Knoten vk liegt in der äußeren Fläche von Gk−1 und seine Nachbarn in Gk−1 bilden einen Teilweg mit mindestens einer Kante des Weges Ck−1 − {u, v}. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 140 v k Weg C k −1 −{u,v} v =u G 1 v =v 2 k −1 Abbildung 5.14: Zur Kanonischen Ordnung Beispiel 5.36 (kanonische Ordnung) Abbildung 5.15 zeigt eine kanonische Ordnung in einem maximal planaren Graphen. w =7 6 4 5 3 u =1 v =2 Abbildung 5.15: Eine kanonische Ordnung in einem maximal planaren Graphen Eine kanonische Ordnung für einen maximal planaren Graphen G kann man durch schrittweises Entfernen von Knoten aus G erzeugen. Hierbei ist u.a. zu beachten, dass der verbleibende Graph 2-fach zusammenhängend bleiben muss. Deshalb darf man keinen 1 Ein ungerichteter Graph G = (V, E) ist zusammenhängend, falls es in G zwischen je zwei Knoten u, v ∈ V einen Weg gibt. G ist k-fach zusammenhängend, k ≥ 2, falls es in G zwischen je zwei Knoten u, v ∈ V , u 6= v, k einfache, paarweise knotendisjunkte Wege gibt. Paarweise knotendisjunkt bedeutet hier, dass kein Knoten des einen Wegs ein Knoten des anderen Wegs ist. Dies bezieht sich natürlich nicht auf die Endknoten u und v der Wege. Äquivalent dazu: Ein Graph mit mehr als k ≥ 0 Knoten ist genau dann k-fach zusammenhängend, wenn er nicht durch Herausnahme von höchstens k − 1 Knoten und ihren inzidenten Kanten unzusammenhängend werden kann (Satz von Menger, 1927). Zeichnen von Graphen · Wintersemester 2015/16 141 Knoten entfernen, der zu einer inneren Sehne (zwei nicht unmittelbar aufeinanderfolgende Knoten auf dem Kreis, die im Inneren adjazent sind) des äußeren Kreises inzident ist. Es gibt aber stets einen Knoten, der nicht inzident mit einer inneren Sehne des äußeren Kreises ist. Lemma 5.37 Es sei G = (V, E) ein planarer Graph mit einer planaren Einbettung, C ein Kreis in G und {u, v} eine Kante auf C. Dann existiert ein Knoten w ′ 6∈ {u, v} auf C, der nicht inzident zu einer inneren Sehne des Kreises C ist. w’ v v 4 5 v 6 v 3 v v 2 7 v v 1 8 u v Abbildung 5.16: Zum Beweis von Lemma 5.16 Beweis. Es seien v1 , . . . , vk die Knoten auf dem Kreis C, siehe Abbildung 5.16. • Falls der Kreis C keine innere Sehne hat, so erfüllt jeder Knoten in C − {u, v} die Bedingung. • Sonst sei {vi , vj } ∈ E mit j > i + 1 eine innere Sehne, welche die Endknoten eines Teilweges mit j − i > 1 Kanten in C − {u, v} verbindet, so dass es keine Sehne für einen Teilweg mit weniger als j − i Kanten gibt, siehe Abbildung 5.16. Wir wählen den Knoten w ′ = vi+1 . Dies ist korrekt: Wegen der Minimalität von j − i gibt es keine innere Sehne, die inzident zu vi+1 ist und im Bereich vi , . . . , vj endet. Wegen der Planarität der Einbettung gibt es keine innere Sehne, die inzident zu vi+1 ist und im Bereich {v1 , . . . , vk } − {vi , . . . , vj } endet. Satz 5.38 Jeder maximal planare eingebettete Graph mit n Knoten besitzt eine kanonische Ordnung, welche in Zeit O(n) gefunden werden kann. Beweis. Es sei G = (V, E) ein maximal planarer eingebetteter Graph mit n Knoten. Die äußere Fläche sei durch die drei Knoten u, v, w ∈ V definiert. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 142 • Wähle die ersten beiden Knoten der kanonischen Ordnung v1 = u und v2 = v, d.h. v1 und v2 sind durch eine Kante {v1 , v2 } verbunden, welche auf dem Rand der äußeren Fläche der Einbettung liegt. • Wir definieren nun rückwärts die restlichen Knoten vn , . . . , v3 der kanonische Ordnung für G. Es sei Gk−1 der Teilgraph von G nach Entfernung von Knoten vk . Wähle vn = w als den dritten Knoten auf dem Rand der äußeren Fläche der Einbettung. Es ist also Gn−1 der Teilgraph von G nach Entfernung von Knoten w. Da G maximal planar ist, definieren die Nachbarn von vn einen Kreis Cn−1, der die Kante {u, v} enthält und die äußere Fläche von Gn−1 definiert. w u Cn−1 v Abbildung 5.17: Zum Beweis von Satz 5.38 • Für k = n, . . . , 4 sei nun vk bereits gefunden und Gk−1 erfülle die Bedingungen (1) und (2) aus Definition 5.35. Sei Ck−1 der die äußere Fläche von Gk−1 begrenzende Kreis. Wir wenden Lemma 5.37 auf Ck−1 in Gk−1 und die Kante {v1 , v2 } an. Das Lemma liefert dann ein w ′ ∈ Ck−1, welches nicht inzident zu einer inneren Sehne von Ck−1 ist. Für vk−1 = w ′ erfüllt Gk−2 die Bedingungen (1) und (2) aus Definition 5.35. 5.4 Geradlinige Zeichnungen planarer Graphen Wir betrachten den sogenannten shift-Algorithmus zum geradlinigen Zeichnen eines planaren Graphen. Idee Der Algorithmus besteht aus vier Phasen. (1.) Herstellung einer Triangulierung durch Einfügen von künstlichen Kanten (Abschnitt 5.3) Zeichnen von Graphen · Wintersemester 2015/16 143 (2.) Berechnung einer kanonischen Ordnung (Abschnitt 5.3) (3.) Berechnung der Koordinaten (Satz 5.39) (4.) Löschen der künstlichen Kanten Satz 5.39 (de Fraysseix, Pach, Pollack 1990, [dFPP90]) Jeder planare Graph G = (V, E) mit n Knoten hat eine geradlinige planare Gitterzeichnung mit Breite höchstens (2n − 4) und Höhe höchstens (n − 2). Diese Zeichnung kann in Zeit O(n) gefunden werden. Beweis. Wir geben eine geradlinige planare Gitterzeichnung für einen planaren Graphen G = (V, E) an, d.h. wir bestimmen Koordinaten p(v) = (x(v), y(v)) ∈ N2 für alle Knoten v ∈ V . Die Knoten werden hierzu in kanonischer Ordnung in den Graphen eingefügt, indem eine ausgewählte Menge bereits positionierter Knoten nach rechts verschoben wird. Die Manhattan Distanz von zwei Punkten p1 = (x1 , y1) und p2 = (x2 , y2 ) ist d(p1 , p2 ) = |x1 − x2 | + |y1 − y2 |. Beobachtung 5.40 Sind p1 = (x1 , y1 ) und p2 = (x2 , y2) zwei Punkte auf einem Gitter und ist ihre Manhattan Distanz eine gerade Zahl, so hat der Schnittpunkt s(p1 , p2 ) der Geraden durch p1 mit Steigung 1 und der Geraden durch p2 mit Steigung −1 die ganzzahligen Koordinaten 1 s(p1 , p2 ) = (x1 − y1 + x2 + y2 , −x1 + y1 + x2 + y2 ). 2 Die Beobachtung zeigen wir in Übungsaufgabe 5.8. Nach den ersten beiden Phasen nehmen wir nun an, dass G maximal planar ist und eine kanonische Ordnung v1 , . . . , vn für G bekannt ist. Wir definieren nun schrittweise Koordinaten p(v) = (x(v), y(v)) und Knotenmengen L(v) für alle Knoten v ∈ V . • Wir beginnen mit der Initialisierung für die ersten drei Knoten der kanonische Ordnung (Abbildung 5.18). p(v1 ) = (0, 0) p(v2 ) = (2, 0) p(v3 ) = (1, 1) L(v1 ) = {v1 } L(v2 ) = {v2 } L(v3 ) = {v3 } Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 144 v 3 v 1 v 2 Abbildung 5.18: Initialisierung • Im Schritt k ≥ 4 (Schritt k = 3 entspricht der Initialisierung) sei der Teilgraph Gk−1 von G bereits kreuzungsfrei gezeichnet, so dass die folgenden drei Eigenschaften gelten (Abbildung 5.19). (E1) p(v1 ) = (0, 0) und p(v2 ) = (2(k − 1) − 4, 0) (E2) Ist Ck−1 = (v1 = w1 , w2 , . . . , wm−1 , wm = v2 ) der Kreis aus der kanonischen Ordnung, so gilt x(w1 ) < x(w2 ) < . . . < x(wm−1 ) < x(wm ). (E3) Alle gezeichneten Kanten (p(wi ), p(wi+1 )), 1 ≤ i ≤ m − 1 haben die Steigung 1 oder -1. w 3 w m −1 w 2 v =w 1 1 G k −1 v =w 2 m Abbildung 5.19: Drei Eigenschaften (E1)-(E3) im Schritt k ≥ 4 Im Schritt k ≥ 4 muss nun Knoten vk und die Kanten zwischen vk und Gk−1 geeignet gezeichnet werden, so dass die drei Eigenschaften (E1)-(E3) für den Graphen Gk erhalten bleiben. Die Nachbarn von vk auf Ck−1 seien wp , wp+1, . . . , wq−1 , wq . Wir wollen vk im Schnittpunkt s(wp , wq ) positionieren (aufgrund von (E3) gilt hier mit Beobachtung 5.40, dass s(wp , wq ) ∈ N2 ). Dies erlaubt jedoch nicht immer eine geradlinige und planare Kantenführung zwischen vk und seinen Nachbarn wie Abbildung 5.20 zeigt. Zeichnen von Graphen · Wintersemester 2015/16 145 v k wq −1 wq w wp +1 3 wp w 2 w m −1 G k −1 v =w v =w 1 1 2 m Abbildung 5.20: Einfügen von vk in Gk−1 Um nun die Kanten zwischen vk und seinen Nachbarn geradlinig und planar zeichnen zu können, führen wir in jedem Schritt eine Verschiebung der bereits positionierten Knoten wj , j ≥ p + 1 und darunterliegenden Knoten, die wir uns in den Mengen L(wj ) merken, aus. – Für alle v ∈ – Für alle v ∈ Sm i=q L(wi ) verschieben wir mit x(v) = x(v) + 2 Sq−1 i=p+1 L(wi ) verschieben wir mit x(v) = x(v) + 1 – p(vk ) = s(wp , wq ) Koordinaten für vk Sq−1 Sq−1 L(wi ) = L(wi ) Menge für vk (für p + 1 = q sei i=p+1 – L(vk ) = {vk } ∪ i=p+1 ∅) v k wq −1 wq w wp +1 3 w 2 v =w 1 1 wp w m −1 G k −1 v =w 2 m Abbildung 5.21: Nach der Verschiebung in Gk−1 für Knoten vk Durch die angegebenen Verschiebungen sind die Eigenschaften (E1)-(E3) für Gk erfüllt. Man kann zeigen, dass die Zeichnung auch nach der Verschiebung kreuzungsfrei bleibt, was nicht so ganz offensichtlich ist. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 146 • Nach Schritt k = n gilt nach (E1). p(v1 ) = (0, 0) p(v2 ) = (2(n − 1) − 4 + 2, 0) = (2n − 4, 0) p(vn ) = s(p(v1 ), p(v2 )) = (n − 2, n − 2) Damit haben wir eine Breite von 2n−4 und Höhe von n−2 gezeigt, siehe Abbildung 5.22. (n−2,n−2) G n (2n−4,0) (0,0) Abbildung 5.22: Graph Gn im Beweis von Satz 5.39 Beispiel 5.41 Es soll eine geradlinige planare Gitterzeichnung für den Graphen G in Abbildung 5.23 konstruiert werden. v v v 3 4 2 v 5 v 6 v 1 v 7 Abbildung 5.23: Graph zu Beispiel 5.41 Die Knoten von G sind bereits in einer kanonischen Ordnung v1 , . . . , v7 für G markiert. Nach dem Beweis von Satz 5.39 erhält das Ergebnis in Abbildung 5.24, siehe Übungsaufgabe 5.9. Bemerkung 5.42 nochmals. 1. Satz 5.39 beweist offenbar den schon lange bekannten Satz 5.2 Zeichnen von Graphen · Wintersemester 2015/16 147 (5,5) v 7 v 6 v 5 v 4 v 3 v 1 (0,0) v 2 (10,0) Abbildung 5.24: Planare geradlinige Zeichnung zum Graph in Beispiel 5.41 2. Es gibt maximal planare Graphen mit n Knoten, für welche eine planare geradlinige Gitterzeichnung d stets eine Breite und Höhe von mindestens 32 n − 1 besitzt. Konstruiere dazu G aus n3 verschachtelten Dreiecken und Kanten zur Triangulierung wie in Abbildung 5.25. Dann hat das innere Dreieck die Breite und Höhe mindestens 1. Jedes weitere Dreieck erhöht die Breite und Höhe um mindestens 2. Damit gilt für den gesamten Graph Breite(d(G)) ≥ 1 + 2( 2 2 n − 1) = n − 1 und Höhe(d(G)) ≥ n − 1 3 3 3 Abbildung 5.25: Ein maximal planarer Graph mit geradliniger planarer Gitterzeichnung mit Breite und Höhe von mindestens 23 n − 1 3. Die Aussage aus Satz 5.39 wurde bereits mehrfach verbessert, siehe Tabelle 5.1. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 148 ⌊ 23 (n (2n − 4) × (n − 2) − 1)⌋ × 4⌊ 32 (n − 1)⌋ − 1 ⌈ 34 n⌉ × ⌈ 23 n⌉ (2n − 5) × (2n − 5) (n − 2) × (n − 2) [dFPP90] [CN98] [Bra08] [Sch90] [Sch90] shift shift shift realizer realizer Tabelle 5.1: Breite und Höhe von geradlinigen Zeichnungen für planare Graphen mit n Knoten 5.5 Übungsaufgaben Aufgabe 5.1 Abbildung 5.13 zeigt eine nicht geradlinige planare Zeichnung eines planaren Graphen G. Geben Sie eine geradlinige planare Zeichnung für G an, die nach Satz 5.2 existieren muß. Kann man für G auch eine planare orthogonale Zeichnung angeben? Aufgabe 5.2 Zeigen Sie Lemma 5.12. Hinweis Gehen Sie ähnlich vor wie im Beweis von Lemma 5.10(1.) Aufgabe 5.3 Konstruieren Sie für jede natürliche Zahl n ≥ 4 einen zusammenhängenden planaren Graphen Gn mit n Knoten und eine planare Einbettung Π für G, so dass G mit mit Π zu seinem Dualgraphen G∗n isomorph2 ist. Aufgabe 5.4 (a) Man gebe für die Graphen, die man erhält, wenn man aus dem K5 bzw. dem K3,3 eine Kante entfernt, den geometrisch dualen Graphen an. (b) Ein Graph G heisst selbstdual, wenn er ein Dual besitzt, welches isomorph zu G ist. Geben Sie einen selbstdualen Graphen mit mindestens 5 Knoten an. (c) Zeigen Sie, dass für selbstduale Graphen mit n Knoten und m Kanten stets m = 2n−2 gilt. (d) Geben Sie einen Graphen an, der zwei Duale besitzt, die nicht isomorph sind. Aufgabe 5.5 Beweisen Sie Satz 5.24. Hinweis Nutzen Sie Lemma 5.15. Aufgabe 5.6 Ein planarer Graph G ist außenplanar, falls es eine planare Einbettung für G gibt, so dass alle Knoten auf dem Rand der gleichen (oBdA der äusseren) Fläche liegen. Es sei G = (V, E) ein Graph und G′ = (V ∪ {u}, E ∪ {{u, v} | v ∈ V }) 2 Die Isomorphie zwischen Graphen wurde in Abschnitt 1.2.1 definiert. Zeichnen von Graphen · Wintersemester 2015/16 149 entsteht aus G, indem ein neuer Knoten u 6∈ V zu G hinzugefügt wird und mit allen Knoten aus G durch eine Kante verbunden wird. Zeigen Sie, dass G genau dann außenplanar ist, wenn G′ planar ist. Aufgabe 5.7 Beweisen Sie Satz 5.34. Hinweis Fügen Sie fehlende Kanten hinzu und achten Sie darauf, dass die Planarität erhalten bleibt und keine Multikanten im Graphen bleiben. Aufgabe 5.8 Beweisen Sie Beobachtung 5.40. Zeigen Sie dazu, dass die angegebenen Koordinaten für s(p1 , p2 ) korrekt sind und dass diese stets ganzzahlig sind. Aufgabe 5.9 Bestimmen Sie schrittweise die Koordinaten (x(v), y(v)) und L(v)-Mengen der 7 Knoten v ∈ V einer planaren geradlinigen Zeichnung des Graphen G = (V, E) in Beispiel 5.41. Aufgabe 5.10 Zeichnen Sie den Graphen G = (V, E) in Abbildung 5.26 mit dem shiftAlgorithmus. (a) Bestimmen Sie eine Triangulierung G′ von G durch Einfügen von künstlichen Kanten. (b) Bestimmen Sie eine kanonische Ordnung für den Graphen G′ . (c) Bestimmen Sie schrittweise die Koordinaten (x(v), y(v)) und L(v)-Mengen der Knoten v ∈ V einer planaren geradlinigen Zeichnung des Graphen G′ . Geben Sie die Zeichnung an. (d) Geben Sie die Zeichnung nach dem Löschen der künstlichen Kanten an. Abbildung 5.26: Übung zum shift-Algorithmus 150 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 Kapitel 6 Flüsse und orthogonale Zeichnungen Viele Zeichenalgorithmen für planare Graphen basieren auf Netzwerkflusstechniken. In einer planaren polygonalen Zeichnung erfüllen die Winkel zwischen den Kanten an einem Knoten bzw. einem Kantenknickpunkt geometrische Eigenschaften, welche sich einfach durch ein Netzwerkflussmodell beschreiben lassen. Hierbei werden Winkel als Ware aufgefasst, welche an den Knoten produziert und in den Flächen verbraucht wird. In einer orthogonalen Zeichnung (englisch: orthogonal drawing) ist jede Kante ein Linienzug, dessen Segmente ausschließlich vertikal oder horizontal verlaufen. Ein Punkt, in welchem sich ein vertikales und ein horizontales Liniensegment treffen, heißt Kantenknickpunkt (englisch: bend). Die Anzahl der Kantenknickpunkte soll möglichst gering seien. Abbildung 6.1: Zwei planare orthogonale Zeichnungen eines Graphen mit 9 bzw. mit (minimalen) 6 Kantenknicken. Da nur Graphen mit maximalem Knotengrad 4 eine planare orthogonale Zeichnung besitzen können, betrachten wir hier nur solche Graphen. Ein planarer Graph mit maximalem Knotengrad 4 heißt auch 4-planar. 151 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 152 Gegeben: Gesucht: M IN B END O RTHOGONAL D RAWING Ein 4-planarer Graph G. Eine orthogonale Zeichnung für G mit minimaler Anzahl von Kantenknickpunkten. Das Problem M IN B END O RTHOGONAL D RAWING ist NP-schwer. Einfacher wird es, wenn man eine planare Einbettung für den Eingabegraphen fixiert. M IN B END O RTHOGONAL D RAWING FOR FIXED E MBEDDING Gegeben: Ein 4-planarer Graph G mit einer planaren Einbettung. Gesucht: Eine orthogonale Zeichnung mit minimaler Anzahl von Kantenknickpunkten, welche die gegebene planare Einbettung erhält. Das Problem M IN B END O RTHOGONAL D RAWING FOR FIXED E MBEDDING kann mittels Netzwerkflusstechniken in polynomieller Zeit gelöst werden. Dieses Ergebnis ist die zentrale Idee beim Zeichnen von Graphen nach dem Topology-shape-metricsVerfahren, welches aus den folgenden fünf Phasen besteht. (1.) Planarisierung / Bestimmung der Topologie. Falls G nicht planar ist, werden zunächst künstliche Knoten für die Kantenschnittpunkte eingefügt. (Abschnitt 5.2.1) Falls G planar ist, so wird eine planare Einbettung für G bestimmt. (Abschnitt 5.1.6) (2.) Orthogonalisierung / Bestimmung der Form. Es wird aus der im ersten Schritt bestimmten Einbettung eine orthogonale Darstellung H für G mit möglichst wenigen Kantenknicken bestimmt. (Abschnitt 6.3) (3.) Es wird durch Einfügen von künstlichen Kanten und Knoten eine normalisierte orthogonale Darstellung H ′ konstruiert, in welcher jede Fläche eine Rechtecktform besitzt. (Abschnitt 6.4) (4.) Kompaktierung / Bestimmung der Kantenlängen. Es werden Koordinaten für die Knoten und Kantenknickpunkte für H ′ bestimmt, so dass die Längen der Kantensegmente möglichst gering sind. (Abschnitt 6.5) (5.) Entferne die künstlichen Kanten und Knoten und erhalte eine orthogonale Zeichnung für G. Abbildung 6.2 zeigt die fünf Phasen. Zeichnen von Graphen · Wintersemester 2015/16 (1.) (2.) (3.) 153 (4.) (5.) Abbildung 6.2: Phasen des Topology-shape-metrics-Verfahrens 6.1 Winkel in orthogonalen Zeichnungen Es dei d eine planare orthogonale Zeichnung eines planaren Graphen G mit einer planaren Einbettung. Es treten zwei Typen von Winkeln in d auf. • Winkel zwischen zwei Kanten, die einen Endknoten gemeinsam haben, heißen Knotenwinkel. • Winkel an Kantenknicken (also Winkel, die sich aus zwei aufeinanderfolgenden Kantensegmenten der gleichen Kante bilden) heißen Knickwinkel. Zur genauen Angabe eines Winkels ist oft auch die betrachtete Fläche der Einbettung zu benennen. Die folgenden zwei Eigenschaften sind leicht zu verifizieren. Lemma 6.1 In einer planaren orthogonalen Zeichnung ist die Summe der Knotenwinkel um jeden Knoten genau 360 Grad. 90 Grad 180 Grad 90 Grad Abbildung 6.3: Summe der Knotenwinkel ist 360 Grad Lemma 6.2 In einer planaren orthogonalen Zeichnung ist die Summe der Knotenwinkel und Knickwinkel in einer inneren Fläche f genau 180(p − 2), wobei p die Anzahl der Winkel ist. Falls f die äußere Fläche ist, so ist die Summe genau 180(p + 2). 154 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 90 90 90 270 90 180 90 Abbildung 6.4: Summe der Knoten- und Knickwinkel ist 180(p − 2) bzw. 180(p + 2) 6.2 Orthogonale Repräsentation und Eigenschaften Eine orthogonale Repräsentation (orthogonale Darstellung) H eines Graphen beschreibt zusätzlich zur Topologie auch die Form einer planaren orthogonalen Zeichnung, d.h. sie ist eine Erweiterung der kombinatorischen Einbettung mit Flächen-Uhrzeigerlisten mit Kanten. In einer orthogonalen Repräsentation werden jedoch keine Angaben über die Längen der Kantensegmente gemacht, wie es in einer orthogonalen Zeichnung der Fall ist. Definition 6.3 (orthogonale Repräsentation) Es sei G ein planarer Graph mit einer planaren orthogonalen Zeichnung, welche die Flächenmenge F definiert. Eine orthogonale Repräsentation (orthogonale Darstellung) H ist eine Menge von zirkulären im (gegen den) Uhrzeigersinn sortierten Listen H(f ) für alle inneren (äußeren) Flächen f ∈ F . Ein Element r ∈ H(f ) ist ein Tripel (er , sr , ar ) mit • er ist eine f begrenzende Kante, • sr ist ein Binärstring und beschreibt die Form der Kante er . Das k-te Bit in sr beschreibt den k-ten Knick auf er in Fläche f . Für einen 90-Knick schreiben wir 0 und für einen 270-Knick schreiben wir 1. • ar ∈ {90, 180, 270, 360} ist eine ganze Zahl. Sei q das auf r folgende Element in H(f ). Dann bezeichnet ar den Winkel f zwischen er und eq in Fläche f . Beispiel 6.4 (orthogonale Repräsentation) Wir geben eine orthogonale Repräsentation für die planare Einbettung des Graphen in Abbildung 6.5 an. H = {H(f0 ), H(f1 ), H(f2 )} mit H(f0 ) = ((e4 , ǫ, 270), (e2 , 1011, 90), (e1, ǫ, 270), (e5, 11, 90)) H(f1 ) = ((e1 , ǫ, 90), (e6 , ǫ, 180), (e5, 00, 90)) H(f2 ) = ((e6 , ǫ, 90), (e3 , 0, 360), (e3, 1, 90), (e2, 0010, 90), (e4, ǫ, 90)) (Jede Kante kommt in genau zwei Tripeln vor.) Zeichnen von Graphen · Wintersemester 2015/16 v2 155 v1 e1 e3 6 f1 v3 e2 v5 e e5 f0 f2 e4 v4 Abbildung 6.5: Beispiel zur orthogonalen Repräsentation Die Anzahl der Kantenknicke in einer orthogonalen Repräsentation H bezeichnen wir mit b(H). Lemma 6.5 Für eine orthogonale Repräsentation H ist 1X X |sr |, b(H) = 2 f ∈F r∈H(f ) wobei |sr | die Länge von sr bezeichnet. Satz 6.6 Eine Menge von zirkulär geordneten Listen H ist genau dann eine orthogonale Repräsentation einer planaren orthogonalen Einbettung eines 4-planaren Graphen G = (V, E), wenn folgende vier Eigenschaften erfüllt sind. (P1) H ohne die s und die a-Felder beschreibt durch Flächen-Uhrzeigerlisten mit Kanten eine kombinatorische Einbettung für G. (P2) Es seien r und q zwei verschiedene Elemente in H mit er = eq . Dann erhält man sq aus sr durch Umdrehen der Reihenfolge und Invertieren der Bits. (P3) Für einen 0-1-String s sei |s|0 und |s|1 die Anzahl der Nullen bzw. Einsen in s. Weiterhin sei für f ∈ F und r = (er , sr , ar ) ∈ H(f ) ρ(r) = |sr |0 − |sr |1 + (2 − Für jede Fläche f ∈ F gilt X r∈H(f ) ρ(r) = 4, −4, ar ). 90 falls f eine innere Fläche ist, falls f die äußere Fläche ist. (Dies besagt, dass jede Fläche ein rektilineares Polygon ist, d.h. ein Polygon, dessen Kanten sich alle in rechten Winkeln treffen.) Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 156 (P4) Für jeden Knoten v ∈ V gilt X ar = 360. er inzident mit v (Die Summe der Winkel bei v ist 360 Grad.) Beweis. klar Eine orthogonale Repräsentation beschreibt die Struktur einer planaren orthogonalen Zeichnung bis auf eine Permutation der Reihenfolge der Kantenknicke entlang der Kanten. Zwei orthogonale Zeichnungen mit der gleichen orthogonalen Repräsentation haben die gleiche Anzahl von Kantenknickpunkten, die in Lemma 6.5 angegeben ist. Umgekehrt, zeigen wir in Abschnitt 6.3, dass es zu jeder orthogonalen Repräsentation H eine planare orthogonale Zeichnung mit H als zugehöriger orthogonalen Repräsentation gibt. 6.3 Bestimmung einer knickminimalen orthogonalen Repräsentation Das Problem M IN E MBEDDING B END O RTHOGONAL D RAWING kann mittels eines kostenmininalen Flusses in einem Netzwerk in polynomieller Zeit gelöst werden. Die Ideen basieren auf der Arbeit [Tam87]. 6.3.1 Netzwerkflüsse mit minimalen Kosten Wir definieren Netzwerke und Flüsse. Definition 6.7 (Netzwerke und Flüsse) (1.) Ein Netzwerk ist ein 6-Tupel N = (V, A, b, l, u, c), mit • (V, A) ist ein gerichteter Graph. • Überschuss-/Bedarfsfunktion b : V 7→ R – u ∈ V heißt Angebotsknoten genau dann, wenn b(u) > 0. – u ∈ V heißt Nachfrageknoten genau dann, wenn b(u) < 0. – u ∈ V heißt Durchflussknoten genau dann, wenn b(u) = 0. • Kapazitätsfunktionen – l : A 7→ R+ definiert untere (englisch: lower) Schranken. Für a ∈ A ist l(a) eine untere Schranke für den Fluss auf Kante a Zeichnen von Graphen · Wintersemester 2015/16 157 – u : A 7→ R+ definiert obere (englisch: upper) Schranken. Für a ∈ A ist u(a) eine obere Schranke für den Fluss auf Kante a. • Kostenfunktion c : A 7→ R Für a ∈ A betragen die Kosten für eine Einheit Fluss auf Kante a genau c(a). (2.) Eine Funktion f : A 7→ R+ heißt Fluss für N, falls • l(a) ≤ f (a) ≤ u(a) für alle a ∈ A (Kapazitätsbeschränkung) und P P • (u,v)∈A f (u, v) − (w,u)∈A f (w, u) = b(u) für alle u ∈ V (Flusserhaltung). P (3.) Die Kosten eines Flusses f : A 7→ R+ sind cost(f ) = a∈A c(a) · f (a). (4.) Ein Fluss f für N ist minimal, wenn es keinen Fluss g für N mit geringeren Kosten gibt. Beobachtung 6.8 Für einen Fluss f : A 7→ R+ für ein Netzwerk N = (V, A, b, l, u, c) gilt aufgrund der Flusserhaltung X b(u) = 0. u∈U In einem Netzwerk betrachten wir das folgende Flussproblem. Gegeben: Gesucht: M IN C OST N ETZWERK -F LUSS Ein Netzwerk N = (V, A, b, l, u, c). Ein minimaler Fluss f : A 7→ R+ für N. Satz 6.9 Zu einem gegebenen Netzwerk N = (V, A, b, l, u, c) kann ein Fluss mit minimalen Kosten in Zeit O(|V |2 · log(|V |)) bestimmt werden. ohne Beweis Bemerkung 6.10 Folgende Spezialfälle des Problems M IN C OST N ETZWERK -F LUSS sind sehr bekannt. Hierzu zeichnet man im Netzwerk N = (V, A, b, l, u, c) zwei Knoten s ∈ V und t ∈ V als Quelle bzw. Senke aus. 1. Betrachtet man Kosten aber keine Kapazitäten und setzt b(s) = 1, b(t) = −1 und b(v) = 0 für alle v ∈ V − {s, t}, so ergibt sich das Problem einen kürzesten Weg von s nach t in (V, A) zu finden. 2. Betrachtet man Kapazitäten aber keine Kosten und setzt b(v) = 0 für alle v ∈ V (Flusserhaltung) und c(a) = 0 für alle a ∈ A, fügt eine Kante (t, s) in A mit Kosten c(t, s) = −1 und Kapazität u(t, s) = ∞ ein, so ergibt sich das Problem des maximalen s, t-Flusses (sende soviel Güter wie möglich von s nach t ohne die Kapazitätsgrenzen zu verletzen). Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 158 6.3.2 Aufbau des Netzwerkes Wir transformieren nun einen planaren Graphen G = (V, E) mit gegebener kombinatorischer Einbettung Π mit Flächenmenge F und äußerer Fläche f0 in ein Netzwerk1 NΠ = (U, A, b, l, u, c). • Knotenmenge U = UV ∪ UF mit – UV = {iv | v ∈ V } und – UF = {if | f ∈ F } Für jeden Knoten v aus G und jede Fläche f von Π definieren wir einen Knoten in U. • Angebots- und Nachfragefunktion b (siehe Abbildung 6.6) b(iv ) = 4 −2ℓ(f ) + 4, b(if ) = −2ℓ(f ) − 4, falls f = 6 f0 , falls f = f0 . für alle iv ∈ UV für alle if ∈ UF Ein Knoten iv ∈ UV (zu einem Knoten v aus G) produziert 4 Einheiten und ein Knoten if ∈ UF (zu einer Fläche f aus G) verbraucht −2ℓ(f ) + 4 bzw. −2ℓ(f ) − 4 Einheiten. 1 1 iv 1 if 2 1 1 2 1 1 1 Abbildung 6.6: Angebots- und Nachfragefunktion P b für einen KnotenPiv ∈ UV und einen Knoten if ∈ UF . Flusserhaltung an iv (links): (iv ,u)∈A f (iv , u) − (u,iv )∈A f (u, iv ) = P P 4 − 0 = 4 = b(iv ) und an if (rechts): (if ,u)∈A f (if , u) − (u,if )∈A f (u, if ) = 2 − 6 = −4 = −2 · 4 + 4 = −2ℓ(f ) + 4 = b(if ). 1 Um die Knotenmenge im Netzwerk N von der im Graphen G zu unterscheiden, nennen wir die im Netzwerk nun U . Zeichnen von Graphen · Wintersemester 2015/16 159 Bemerkung 6.11 Es gilt nach Wahl der Angebots- und Nachfragefunktion b P u∈U b(u) = = = = = P P b(iv ) + f ∈F b(if ) P 4|V | + f ∈F,f 6=f0 (−2ℓ(f ) + 4) − 2ℓ(f0 ) − 4 P 4|V | − 2 f ∈F ℓ(f ) + 4(|F | − 1) − 4 4|V | − 4|E| + 4|F | − 8 4(|V | − |E| + |F | − 2) | {z } v∈V Eulersche Formel = 4·0 = 0 Beispiel 6.12 In Abbildung 6.7 sind die Knoten u ∈ U von N und Funktionswerte b(u) für einen planar eingebetteten Graphen G mit 5 Knoten angegeben. 4 4 v2 v3 −8 4 −2 v1 f1 −14 f0 f2 4 v6 v5 v4 4 4 Abbildung 6.7: Konstruktion der Knoten des Netzwerkes NΠ • Zur Idee: – Ein Fluss im Netzwerk N entspricht den Winkeln der späteren Zeichnung. Winkel sind eine Ware, welche an den Knoten produziert und in den Flächen konsumiert wird. – Eine Flusseinheit entspricht einem 90 Grad Winkel. – Die Flusserhaltung an einem Knoten iv ∈ UV garantiert, dass die Winkelsumme bei Knoten v genau 360 Grad beträgt. – Die Flusserhaltung um einen Knoten if ∈ UF garantiert nach Lemma 6.2, dass die Fläche f als ein rektilineares Polygon gezeichnet wird. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 160 • Kantenmenge A = AV ∪ AF (A ist eine Multimenge) AV = {(iv , if ) | iv ∈ UV , if ∈ UF , es gibt zwei adjazente Kanten in der Uhrzeigerliste von v, die beide an f liegen} AV enthält also eine Kante (iv , if ), falls v ∈ V einen Winkel in f ∈ F bildet. AV ist eine Multimenge, da Knoten auf Brücken mehrere Winkel in einer Fläche bestimmen, siehe Knoten v5 in Beispiel 6.8. AF = {(if , ig ), (ig , if ) | e ∈ F trennt die Flächen f und g} AF enthält für jede Kante e ∈ E zwei Kanten (if , ig ) und (ig , if ), wobei f und g die Flächen sind, welche durch Kanten e getrennt werden (f = g ist möglich, siehe Fläche f2 in Beispiel 6.8). • Die Kapazitäts- und Kostenfunktionen l, u und c werden für alle (iv , if ) ∈ AV definiert durch l(iv , if ) = 1 u(iv , if ) = 4 c(iv , if ) = 0 • Zur Idee: Jede Flusseinheit auf einer AV -Kante entspricht einem 90 Grad Winkel zwischen zwei adjazenten Kanten. Die Knoten verteilen ihre Winkel an die Flächen. Jeder Winkel muss mindestens 90 (= 1 · 90) Grad und höchstens 360 (= 4 · 90) Grad betragen. Da dabei keine Knicke entstehen, sind die Kosten 0. • Die Kapazitäts- und Kostenfunktionen l, u und c werden für alle (if , ig ) ∈ AF definiert durch l(if , ig ) = 0 u(if , ig ) = ∞ c(if , ig ) = 1 • Zur Idee: Da im Allgemeinen nicht alle Flusseinheiten direkt von den Knoten zu den Flächen abfliessen können, was einer Zeichnung ohne Kantenknicke entspräche, müssen wir Knicke ins Flussmodell mit aufnehmen. Kann der Bedarf nicht gedeckt werden, können benachbarte Flächen Fluss austauschen. Jede solche Flusseinheit auf einer AF -Kante entspricht einem Kantenknick um 90 Grad und erhält Kosten 1. Die Summer aller Flusseinheiten auf AF -Kanten entsprechen den Kosten des Flusses und der Anzahl der Kantenknicke einer orthogonalen Zeichnung (Satz 6.15). Zeichnen von Graphen · Wintersemester 2015/16 161 4 4 v2 v3 −8 4 −2 v1 f1 f0 −14 AF f2 4 AV v6 v5 v4 4 4 Abbildung 6.8: Konstruktion der Kanten des Netzwerkes NΠ Beispiel 6.13 In Abbildung 6.8 sind die Knoten von NΠ und die Funktion b für einen planar eingebetteten Graphen G mit 5 Knoten angegeben. Satz 6.14 Für jede orthogonale Darstellung H mit zugrundeliegender planarer Einbettung Π für einen planaren Graphen G gibt es einen ganzzahligen Fluss x in NΠ , dessen Kosten cost(x) gleich Anzahl der Kantenknicke b(H) sind. Beweis. Es sei H eine orthogonale Darstellung für einen planaren Graphen G, Π die zugrundeliegende planare Einbettung und NΠ = (U, A, b, l, u, c) das oben definierte Netzwerk. Wir konstruieren den gesuchten Fluss x : A 7→ R+ wie folgt. • Jede gerichtete Kante (iv , if ) ∈ AV assoziieren wir mit genau einem Element r ∈ R(v, f ) mit R(v, f ) = {r ∈ H(f ) | er und ihre Nachfolgerkante in H(f ) sind mit v inzident}. D.h. wir assoziieren Kante (iv , if ) ∈ AV mit ihrem ,,Vörgängerelement“ r ∈ R(v, f ), siehe Abbildung 6.9. Dann setzen wir ar , 90 hierbei ist r ist das zu (iv , if ) gehörige Element aus R(v, f ). x(iv , if ) = • Für den Fluss zwischen benachbarten Flächen f und g betrachten wir die Menge der gemeinsamen Elemente R(f, g) = {r ∈ H(f ) | er ∈ Π(g)} Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 162 er (if , ig) f v ( i v, i f ) g f er u Abbildung 6.9: Zur Konstruktion des Flusses auf AV -Kanten ordnen wir jede Kante (iv , if ) ∈ AV ihrer Vorgängerkante er zu. Abbildung 6.10: Zur Konstruktion des Flusses auf AF -Kanten ordnen wir jede Kante (if , ig ) ∈ AF einer Kante er zu. und assoziieren je eine gerichtete Kante (if , ig ) mit einem r ∈ R(f, g), siehe Abbildung 6.10. Wir setzen x(if , ig ) = |sr |0 , hierbei ist r das zu (if , ig ) gehörige Element aus R(f, g). Korrektheit: • Die Funktion x ist ein Fluss. Zeige dazu, dass die Kapazitätsgrenzen und die Flusseinhaltung erfüllt sind. – Kapazitätsgrenzen: Der Fluss x an einer Kante a ∈ AV wird durch einen Winkel α ∈ {90, 180, 270, 360} bestimmt. Nach Konstruktion folgt, dass x(a) ∈ {1, 2, 3, 4}. Der Fluss an einer Kante a ∈ AF wird durch die Länge des Bitstrings bestimmt. Damit ist x(a) ∈ N und die Kapazitätsgrenzen sind erfüllt. – Flusseinhaltung: Hier müssen wir zeigen, dass für jeden Knoten i ∈ U die Differenz des abfliessenden Flusses und des einfliessenden Flusses gleich b(i) ist. Zeichnen von Graphen · Wintersemester 2015/16 163 Für iv ∈ UV gilt: P f ∈F x(iv , if ) − 0 Def. von x = Def. von R(v,f ) = = P f ∈F P ar r∈R(v,f ) 90 P P f ∈F {r∈H(f ) | er ={v,u}} P ar ar 90 er ={v,u} 90 360 90 nach (P4) = = Def. von b = 4 b(iv ) Für innere Flächen f mit if ∈ UF gilt: P P P g∈F x(if , ig ) − v∈V x(iv , if ) − h∈F x(ih , if ) P P P Def. von x ar = r∈H(f ) |sr |0 − r∈H(f ) 90 − r∈H(f ) |sr |1 P 2=2|ℓ(f )| P r∈H(f ) ar = r∈H(f ) (2 − 90 − |sr |1 + |sr |0 ) − 2|ℓ(f )| P Def. von ρ(r) = −2|ℓ(f )| + r∈H(f ) ρ(r) nach (P3) = = Def. von b −2|ℓ(f )| + 4 b(if ) Für die äußere Fläche f0 ist die Rechnung analog; am Ende steht dann −4 statt +4. • Die Kosten des Flusses x sind gleich der Anzahl der Kantenknicke b(H): b(H) Def. von b(H) = nach (P2) = Def. von x(if ,ig ) = Def. von AF = c(a)=0 für a∈AV = Def. cost(x) = 1 2 P P f ∈F f ∈F P P r∈H(f ) r∈H(f ) P P P c(a)x(a) f ∈F P g∈F a∈AF a∈A |sr | |sr |0 x(if , ig ) x(a) cost(x) Satz 6.15 Für jeden ganzzahligen Fluss x in NΠ gibt es eine orthogonale Darstellung H mit zugrundeliegender Einbettung Π. Die Kosten cost(x) sind gleich der Anzahl der Kantenknicke b(H). Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 164 Beweis. Wir konstruieren eine orthogonale Darstellung H mit Hilfe von x durch folgende Berechnung der a- und s-Felder. Wie oben assoziieren wir Elemente aus R(v, f ) mit den Kanten (iv , if ) aus AV und setzen ar = x(iv ,if ) · 90 für alle r ∈ R(v, f ). Für die s-Felder ordenen wir jedem Element r ∈ R(f, g) eine gerichtete Kante (if , ig ) aus AF zu. Dann bestimmen wir das Element q ∈ H(g) mit q 6= r und er = eq . Wir setzen sr = 0x(if ,ig ) 1x(ig ,if ) sq = 0x(ig ,if ) 1x(if ,ig ) Es bleibt zu zeigen, dass diese Definitionen die Eigenschaften (P1)-(P4) aus Satz 6.6 erfüllen. • (P1) gilt, da durch die er Felder die Einbettung Π erhalten bleibt. • (P2) ist nach Konstruktion von sr und sq erfüllt. • (P3) Für jede Fläche f ∈ F gilt P ρ(r) r∈H(f ) nach Def. von ρ(r) = nach Def. von ar ,sr = P r∈H(f ) ((2 P nach Def. von b(if ) − X r∈H(f ) (2 2ℓ(f ) − = − v∈VF | ar ) 90 + |sr |0 + |sr |1 ) x(iv ,if )·90 90 + |0x(if ,ig ) | + |1x(ig ,if ) |) X X x(iv , if ) + x(if , ig ) − x(ig , if ) g∈F {z g∈F =b(if ) = 2ℓ(f ) + (−2ℓ(f ) ± 4) = ±4 • (P4) Für jeden Knoten v ∈ V gilt P er inzident mit ar ar = P f | v∈Vf = b(iv ) · 90 = 4 · 90 = 360 x(iv , if ) · 90 } Zeichnen von Graphen · Wintersemester 2015/16 165 • Die Kosten des Flusses x sind gleich der Knickanzahl b(H). P Def. cost(x) cost(x) = a∈A P c(a)=0 für a∈AV = c(a)x(a) a∈AF c(a)x(a) P c(a)=1 für a∈AF = (f,g)∈AF Def. von sr 1 2 = Def. von b(H) = x(f, g) P P f r∈H(f ) |sr | b(H) Beispiel 6.16 (Beweis von Satz 6.15) Wir betrachten das Netzwerk NΠ in Abbildung 6.8. Ein minimaler Fluss x : A 7→ R+ in N ist in Abbildung 6.11 eingezeichnet (Kanten mit Fluss 0 fehlen) bzw. in den folgenden zwei Tabellen zusammengefasst. 3 4 2 4 v1 3 1 −8 1 f2 −2 e3 f1 1 e 2 1 f0 v3 1 e1 1 4 e4 v2 1 1 1 v6 e7 1 v5 e5 1 v4 e6 4 −14 4 4 4 3 Abbildung 6.11: Ein minimaler Fluss x : A 7→ R+ im Netzwerk NΠ aus Abbildung 6.8. x(v1 , f0 ) x(v2 , f0 ) x(v3 , f0 ) x(v4 , f0 ) x(v5 , f0 ) = = = = = 3 x(v1 , f1 ) = 1 x(v2 , f2 ) 2 x(v2 , f1 ) = 1 x(v3 , f2 ) 3 x(v5 , f1 ) = 1 x(v4 , f2 ) 3 x(v5 , f2 ) 1 x(v6 , f2 ) (Kante (v5 , f2 ) ist eine Multikante!) = = = = = 1 1 1 1 4 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 166 x(f0 , f0 ) = 0 x(f0 , f1 ) = 0 x(f0 , f2 ) = 0 x(f1 , f0 ) = 1 x(f1 , f1 ) = 0 x(f1 , f2 ) = 0 x(f2 , f0 ) = 1 x(f2 , f1 ) = 0 x(f2 , f2 ) = 0 Die Kosten des Flusses x sind X X X 1 · x(a) = x(f1 , f0 ) + x(f2 , f0 ) = 2 0 · x(a) + c(a) · x(a) = a∈A a∈AV a∈AF Mit Hilfe von x definieren wir nun wie im Beweis von Satz 6.15 eine orthogonale Darstellung H = {. . . , H(fi ) = (. . . , (er , sr , ar ), . . .), . . .}. • er -Felder: Ergeben sich mit der Kantenbezeichnung aus Abbildung 6.11 aus der betrachteten planaren Einbettung des Graphen. H(f0 ) = ((e1 , , ), (e2 , , ), (e6 , , ), (e5, , ), (e4 , , )) H(f1 ) = ((e1 , , ), (e3 , , ), (e2 , , )) H(f2 ) = ((e3 , , ), (e4 , , ), (e5 , , ), (e6, , ), (e7 , , ), (e7 , , )) • sr -Felder bestimmen sich über die Flüsse auf den AF -Kanten – e1 von f0 aus: sr = 0x(f0 ,f1 ) 1x(f1 ,f0 ) = 00 10 = ǫ und e1 von f1 aus sq = 0x(f1 ,f0 ) 1x(f0 ,f1 ) = 00 10 = ǫ – e2 von f0 aus: sr = 0x(f0 ,f1 ) 1x(f1 ,f0 ) = 00 11 = 1 und e2 von f1 aus: sq = 0x(f1 ,f0 ) 1x(f0 ,f1 ) = 01 10 = 0 – e3 von f1 aus: sr = 0x(f1 ,f2 ) 1x(f2 ,f1 ) = 00 10 = ǫ und e3 von f2 aus: sq = 0x(f2 ,f1 ) 1x(f1 ,f2 ) = 00 10 = ǫ – e4 von f0 aus: sr = 0x(f0 ,f2 ) 1x(f2 ,f0 ) = 00 10 = ǫ und e4 von f2 aus: sq = 0x(f2 ,f0 ) 1x(f0 ,f2 ) = 00 10 = ǫ – e5 von f0 aus: sr = 0x(f0 ,f2 ) 1x(f2 ,f0 ) = 00 10 = ǫ und e5 von f2 aus: sq = 0x(f2 ,f0 ) 1x(f0 ,f2 ) = 00 10 = ǫ – e6 von f0 aus: sr = 0x(f0 ,f2 ) 1x(f2 ,f0 ) = 00 11 = 1 und e6 von f2 aus: sq = 0x(f2 ,f0 ) 1x(f0 ,f2 ) = 01 10 = 0 – e7 von f2 aus: sr = 0x(f2 ,f2 ) 1x(f2 ,f2 ) = 00 10 = ǫ und e7 von f2 aus: sq = 0x(f2 ,f2 ) 1x(f2 ,f2 ) = 00 10 = ǫ Zeichnen von Graphen · Wintersemester 2015/16 167 H(f0 ) = ((e1 , ǫ, ), (e2 , 1, ), (e6, 1, ), (e5, ǫ, ), (e4 , ǫ, )) H(f1 ) = ((e1 , ǫ, ), (e3 , ǫ, ), (e2 , 0, )) H(f2 ) = ((e3 , ǫ, ), (e4 , ǫ, ), (e5 , ǫ, ), (e6 , 0, ), (e7, ǫ, ), (e7 , ǫ, )) • ar -Felder bestimmen sich über die Flüsse auf den zugeordneten AV -Kanten H(f0 ) = ((e1 , ǫ, x(v1 , f0 ) · 90), (e2 , 1, x(v5 , f0 ) · 90), {z } {z } | | 270 90 (e6 , 1, x(v4 , f0 ) · 90), (e5 , ǫ, x(v3 , f0 ) · 90), | {z } {z } | 270 270 (e4 , ǫ, x(v2 , f0 ) · 90)) {z } | 180 H(f1 ) = ((e1 , ǫ, x(v2 , f1 ) · 90), (e3 , ǫ, x(v5 , f1 ) · 90), | {z } {z } | 90 90 (e2 , 0, x(v1 , f1 ) · 90)) | {z } 90 H(f2 ) = ((e3 , ǫ, x(v2 , f2 ) · 90), (e4 , ǫ, x(v3 , f2 ) · 90), {z } {z } | | 90 90 (e5 , ǫ, x(v4 , f2 ) · 90), (e6 , 0, x(v5 , f2 ) · 90), {z } {z } | | 90 90 (e7 , ǫ, x(v6 , f2 ) · 90), (e7 , ǫ, x(v5 , f2 ) · 90)) | {z } {z } | 360 90 Die zugehörige orthogonale Zeichnung mit b(H) = 2 Kantenknicken ist in Abbildung 6.12 dargestellt. e1 v1 f1 v3 f2 e3 v5 e2 e4 v2 e7 e5 v6 f0 e6 v4 Abbildung 6.12: Orthogonale Darstellung mit zwei Kantenknicken zu Beispiel 6.16 Satz 6.17 Es gibt einen minimalen Fluss in NΠ = (U, A, b, l, u, c) mit ganzzahligen Werten. 168 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 Beweis. Da alle Kapazitäten in NΠ ganzzahlig gewählt sind, folgt die Behauptung. Satz 6.18 Die minimale Anzahl von Kantenknicken einer orthogonalen Repräsentation H mit zugrundeliegender planarer Einbettung Π ist gleich den Kosten eines kostenminimalen Flusses x in NΠ . Die Darstellung H kann aus x berechnet werden. Beweis. Die Behauptung folgt aus den Sätzen 6.14, 6.15 und 6.17. 6.3.3 Algorithmus zur Knickminimierung Gegeben sei eine planare Einbettung Π für einen Graphen G. (1.) Konstruiere das Netzwerk NΠ . (Abschnitt 6.3.2) (2.) Berechne einen kostenminimalen Fluss x in NΠ . (Satz 6.9) (3.) Konstruiere eine orthogonale Repräsentation aus dem Fluss x. (Satz 6.15) 6.4 Algorithmen zur Normalisierung Eine orthogonale Darstellung H für einen Graphen G heißt normalisiert, falls jede Fläche f durch ein Rechteck H(f ) beschrieben wird, siehe Abbildung 6.13. Abbildung 6.13: Normalisierte orthogonale Darstellung Gegeben sei nun eine orthogonale Darstellung H und gesucht ist eine normalisierte orthogonale Darstellung H ′ für H. Eine solche Darstellung H ′ kann man durch Hinzufügen von künstlichen Kanten und Knoten erzeugen. Hierzu verfeinert man die inneren und die äußere Fläche von H wie folgt [Tam87]. Zeichnen von Graphen · Wintersemester 2015/16 169 6.4.1 Verfeinerung der inneren Flächen Jede innere Fläche f ∈ F wird wie folgt modifiziert. (1.) Füge auf jedem Kantenknick auf f einen künstlichen Knoten ein und modifiziere H(f ). Abbildung 6.14: Schritt 1 zur Verfeinerung einer inneren Fläche Für jede Kante e in H(f ) definieren wir einen Wert turn(e) ∈ {0, ǫ, 1, 11}. next(e) = nächste Kante nach e auf dem Rand von H(f ) im Uhrzeigersinn 0, falls e und next(e) einen 90 Grad Winkel in f bilden ǫ, falls e und next(e) einen 180 Grad Winkel in f bilden turn(e) = 1, falls e und next(e) einen 270 Grad Winkel in f bilden 11, falls e und next(e) einen 360 Grad Winkel in f bilden Die Konkatenation der Werte turn(e) für alle e aus H(f ) liefert einen 0-1-String s(f ) für die innere Fläche f . (2.) Wir suchen in s(f ) den Teilstring ,,100“ und ersetzen diesen durch den Teilstring ,,0“. Ein solcher Teilstring beginnt an einem 270 Grad Winkel oder an einem 360 Grad Winkel, siehe Abbildung 6.15. Dann wird ein Knoten und eine Kante eingefügt und H aktualisiert. Dies wird solange fortgesetzt, bis s(f ) = 0000, d.h. bis f ein Rechteck ist. 6.4.2 Verfeinerung der äußeren Fläche Zur Verfeinerung der äußeren Fläche legen wir ein Rechteck R um den Rand der äußeren Fläche und projezieren die Ecken der äußeren Fläche auf R (Abbildung 6.18). Die dadurch entstehenden neuen inneren Flächen werden wie oben beschrieben verfeinert (Abbildung 6.19). Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 170 0 0 1 0 0 0 0 11 0 0 0 1 0 Abbildung 6.15: Ersetze den Teilstring ,,100“ durch den Teilstring ,,0“ neu! e2 e2 0 e1 0 e8 0 e0 e7 1 e 1 e14 15 e13 0 1 e12 e11 0 1 0 e10 0 e3 e6 e 0 9 e5 1 0 0 e4 0 0 e1 0 1 1 e8 0 e0 e7 1 e e14 15 e13 0 1 e12 e11 0 1 0 e10 0 e3 e6 e 0 9 e5 1 0 0 e4 Abbildung 6.16: Einmal Schritt 2 Satz 6.19 Es sei H eine orthogonale Repräsentation für einen Graphen mit n Knoten. Man kann in Zeit O(n + b(H)) eine normalisierte orthogonale Darstellung H ′ mit Fläche O((n + b(H))2 ) finden. ohne Beweis Falls wir in einer normalisierten orthogonalen Darstellung H für jede Fläche f von H den gegenüberliegenden Seiten des Rechtecks f die gleiche Länge zuordnen, so kann daraus eine korrekte orthogonale Zeichnung des Graphen bestimmt werden. Die Zuordnung der Längen für die Kantensegmente bestimmen wir im folgenden Abschnitt. 6.5 Algorithmen zur Längenbestimmung Durch die Normalisierung erhält man oft relativ große Zeichnungen. Deshalb wird oft eine Kompaktierungsphase angeschlossen. Gegeben sei nun eine normalisierte orthogonale Zeichnen von Graphen · Wintersemester 2015/16 171 e2 0 e1 0 0 0 e0 e15 e14 e13 0 e12 0 0 e11 0 0 0 0 0 0 0 0 0 0 0 e8 0 e7 0 e3 e6 e 0 9 e5 0 0 0 0 0 0 e4 0 e10 Abbildung 6.17: Nach Schritt 2 e2 e1 e8 e0 e7 e e14 15 e6 e9 e13 e12 e5 e11 e3 0 e4 e10 Abbildung 6.18: Verfeinerung der äußeren Fläche Repräsentation H und gesucht sind für alle Kanten möglichst kleine Längen, so dass die Zeichnung kompatibel mit H ist. KOMPAKTE ORTHOGONALE R EPR ÄSENTATION Gegeben: Ein planarer Graph G mit einer normalisierten orthogonalen Repräsentation H von G. Gesucht: Eine planare orthogonale Gitterzeichnung d von G mit zugehöriger orthogonalen Repräsentation H mit minimaler Höhe und Breite. Zur effizienten Lösung des Problems KOMPAKTE ORTHOGONALE R EPR ÄSENTATION konstruieren wir horizontale und vertikale Netzwerkflüsse in H. Wir legen zunächst in der gegebenen normalisierten orthogonalen Repräsentation H von G die Ausrichtung (horizontal oder vertikal) eines Kantensegmentes fest. Dadurch erhalten wir Ausrichtungen für alle Kantensegmente von H. Definiere ein horizontales Netzwerk Nhor : Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 172 e2 e1 e8 e0 e7 e e14 15 e6 e9 e13 e12 e3 e5 e11 e4 e10 Abbildung 6.19: Verfeinerung der äußeren Fläche Abbildung 6.20: Eine normalisierte orthogonale Darstellunge • Knoten des Netzwerkes: – Für jede innere Fläche f wird ein Knoten vf definiert. – Für die äußere Fläche f0 wird ein Knoten v0 definiert. • Kanten des Netzwerks: – Zu jedem horizontalen Kantensegment e, zwischen zwei inneren Flächen f und g, so dass f unter g liegt, gibt es eine gerichtete Kante (vf , vg ). (Die Kanten verlaufen also alle von unten nach oben) – Zu jedem horizontalen Kantensegment e, zwischen einer inneren Fläche f und der äußeren Fläche f0 , so dass e oben an f liegt, gibt es eine gerichtete Kante (vf , v0 ). – Zu jedem horizontalen Kantensegment e, zwischen einer inneren Fläche f und der äußeren Fläche f0 , so dass e unten an f liegt, gibt es eine gerichtete Kante Zeichnen von Graphen · Wintersemester 2015/16 173 (v0 , vf ). – Der Fluss auf der definierten Kanten entspricht dann später der optimalen Länge der Kante e. • Angebots- und Nachfragefunktion b: b(u) = 0 für alle Knoten u des Netzwerkes Nhor . • Kapazitäts- und Kostenfunktion: l(a) = 1 u(a) = ∞ c(a) = 1 für jede gerichtete Kante a des Netzwerks Nhor . Analog definiert man ein vertikales Netzwerk Nver . Hier werden die vertikalen Kanten zwischen den Flächen betrachtet. In Abbildung 6.21 bzw. 6.22 sind die Netzwerke zu der normalisierten orthogonalen Darstellung in Abbildung 6.20 angegeben. 3 2 1 1 1 1 1 2 1 1 1 2 1 2 1 1 Abbildung 6.21: Netzwerk Nhor Einfache Eigenschaften der Netzwerke Nhor und Nver fassen wir im folgenden Lemma zusammen. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 174 1 1 2 2 1 1 1 1 1 1 1 3 2 1 1 Abbildung 6.22: Netzwerk Nver Lemma 6.20 (1.) Die Netzwerke Nhor und Nver sind planar. (2.) Die Netzwerke Nhor und Nver haben O(|V |) viele Knoten. Zu einer orthogonalen Zeichnung d mit ganzzahligen Kantensegmentlängen für einen Graph G mit orthogonaler Repräsentation H kann man einen Fluss fhor : A 7→ R für Nhor und fver : A 7→ R für Nver bestimmen, indem man den Fluss einer gerichteten Kante auf die Länge des zugeordneteten Kantensegments von G setzt. P P Dann ist (v0 ,vf ) fhor ((v0 , vf )) gleich der Breite und (v0 ,vf ) fver ((v0 , vf )) gleich der Höhe der Zeichnung d(G). Weiterhin sind die Kosten des Flusses fhor gleich der Gesamtlänge aller horizontalen und die Kosten des Flusses fver gleich der Gesamtlänge aller vertikalen Kantensegmente in d(G). Die in Abbildung 6.21 bzw. 6.22 gezeigten Flüsse können somit aus der Zeichnung in Abbildung 6.23 bestimmt werden. Die umgekehrte Richtung ist ebenfalls möglich. Aus Flüssen fhor : A 7→ R für Nhor und fver : A 7→ R für Nver kann man für einen Graph G eine orthogonale Zeichnung bestimmen, indem man die Länge der Kantensegmente auf den Wert des Flusses der zugehörigen gerichteten Kante in Nhor bzw. Nver setzt. Die Flusserhaltung an den Knoten in Nhor bzw. Nver bzw. bedeutet, dass die obere und untere bzw. linke und rechte Seite jedes Rechtecks die gleiche Länge besitzt. Damit entsprechen die durch einen Fluss definierten Längen einer korrekten orthogonalen Zeichnung. Zeichnen von Graphen · Wintersemester 2015/16 175 5 4 3 2 1 0 0 1 2 3 4 5 Abbildung 6.23: Orthogonale Zeichnung mit minimaler Höhe und Breite Satz 6.21 Es sei G ein planarer Graphen mit einer normalisierten orthogonalen Darstellung H von G. Es seien Flüsse mit minimalen Kosten für die Netzwerke Nhor und Nver gegeben. Wenn wir die Länge der Kantensegmente von H auf den Wert des Flusses der entsprechenden gerichteten Kante in Nhor bzw. Nver setzen, erhalten wir eine planare orthogonale Zeichnung d(G) mit der vorgegebenen orthogonalen Repräsentation H. Die Gesamtlänge aller horizontalen Kantensegmente und die Gesamtlänge aller vertikalen Kantensegmente der Zeichnung d(G) entspricht den Kosten des Flusses in Nhor bzw. Nver . Damit kann das Problem KOMPAKTE gelöst werden. ORTHOGONALE R EPR ÄSENTATION wie folgt (1.) Bestimme die zwei Netzwerke Nhor und Nver . (2.) Berechne jeweils einen Fluss mit minimalen Kosten in Nhor und Nver . (3.) Setze die Länge jedes Kantensegments von H auf den Wert des Flusses der entsprechenden gerichteten Kante von Nhor bzw. Nver . Abbildung 6.23 zeigt das Ergebnis der drei Schritte bei Eingabe der normalisierten orthogonalen Darstellung aus Abbildung 6.20. Die Korrektheit der Methode folgt aus Satz 6.21. Die Laufzeit der Methode wird durch die Laufzeit von Schritt (2.) dominiert und ist nach Lemma 6.9 aus O(|V |2 · log(|V |)). 6.6 Übungsaufgaben Aufgabe 6.1 (a) Geben eine orthogonale Repräsentation H für die planare Einbettung des Graphen in Abbildung 6.24 an. Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 176 e2 e3 e f1 6 f2 e 7 e1 e5 e 8 f3 f0 e4 Abbildung 6.24: Übung zur orthogonalen Repräsentation (b) Überprüfen Sie, ob H die Eigenschaften (P1)-(P4) aus Satz 6.6 erfüllt. Aufgabe 6.2 Transformieren Sie den in Abbildung 6.25 gezeigten 4-planaren eingebetteten Graphen G = (V, E) in ein Netzwerk N = (U, A, b, l, u, c). v3 v1 v2 v4 v5 v6 v7 Abbildung 6.25: Übung zur Konstruktion eines Netzwerkes Aufgabe 6.3 Bestimmen Sie für den vollständigen Graphen mit 3 Knoten (K3 ) eine orthogonale planare Zeichnung mit minimal vielen Kantenknicken. Gehen Sie dazu nach dem Algorithmus in Abschnitt 6.3.3 vor. Hinweis: Berechne Sie einen kostenminimalen Fluss x in NΠ per Hand. Aufgabe 6.4 Betrachten Sie die planare orthogonale Zeichnung d(G) in Abbildung 6.26, welche die orthogonale Darstellung H definiert. (a) Verfeinern Sie die Flächen in H wie in Abschnitt 6.4 beschrieben oder per Hand, um Zeichnen von Graphen · Wintersemester 2015/16 177 eine normalisierte orthogonale Darstellung H ′ zu erhalten. (b) Bestimmen Sie eine planare orthogonale Gitterzeichnung von G mit zugehöriger orthogonalen Repräsentation H und mit minimaler Höhe und Breite. Abbildung 6.26: Übung zur Normalisierung einer orthogonalen Darstellung Aufgabe 6.5 Wir betrachten die Voraussetzungen von Satz 6.21. Es seien Flüsse mit minimalen Kosten für die Netzwerke Nhor und Nver gegeben. Die planare orthogonale Zeichnung d(G) für den Graph G enstehe, indem wir die Längen der Kantensegmente von H auf den Wert des Flusses der entsprechenden gerichteten Kante in Nhor bzw. Nver setzen. Wie kann man aus den beiden Flüssen in Nhor bzw. Nver die Gesamtlänge aller Kanten in der Zeichnung d(G) bestimmen? 178 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 Literaturverzeichnis [ABJT04] T. Akkerman, C. Buchheim, M. Jünger, and D. Teske. On the complexity of drawing trees nicely: corrigendum. Acta Informatica, 40(8):603–607, 2004. [BETT99] G. Di Battista, P. Eades, R. Tamassia, and I.G. Tollis. Graph Drawing. Prentice Hall, New Jersey, 1999. [BJL02] C. Buchheim, M. Jünger, and S. Leipert. Improving Walkers algorithm to run in linear time. In Proceedings of Graph Drawing, volume 2528 of LNCS, pages 347–364. Springer-Verlag, 2002. [Bra08] F.J. Brandenburg. Drawing planar graphs on 89 n2 area. Electronic Notes in Discrete Mathematics, 31:37–40, 2008. [CG72] E.G. Coffman and R.L. Graham. Optimal scheduling for two-processor systems. Acta lnformatica, 1(3):200–213, 1972. [Cha02] T.M. Chan. A near-linear area bound for drawing binary trees. Algorithmica, 34:1–13, 2002. [CN98] M. Chrobak and S. Nakano. Minimum-width grid drawings of plane graphs. Comput. Geom. Theory Appl., 11:29–54, 1998. [dFPP90] H. de Fraysseix, J. Pach, and R. Pollack. How to draw a planar graph on a grid. Combinatorica, 10(1):41–51, 1990. [Ead92] P. Eades. Drawing free trees. Bulletin of the Institute of Combinatorics and its Applications, 5:10–36, 1992. [JM03] M. Jünger and P. Mutzel, editors. Graph Drawing Software. Springer-Verlag, Berlin, 2003. [Knu97] D.E. Knuth. The Art of Computer Programming 1. Fundamental Algorithms. Addison-Wesley Professional, New Jersey, 1997. 179 180 Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 [KW01] M. Kaufmann and D. Wagner, editors. Drawing Graphs. Methods and Models, volume 2025 of LNCS. Springer-Verlag, Berlin, 2001. [NR03] T. Nishizeki and M. S. Rahman. Planar Graph Drawing. World Scientific Pub Co, 2003. [RT81] E. Rheingold and J. Tilford. Tidier drawing of trees. IEEE Transactions on Software Engineering, SE-7(2):223–228, 1981. [Sch90] W. Schnyder. Embedding planar graphs on the grid. In Proc. 1st ACM-SIAM Sympos. Discrete Algorithms, pages 138–148, 1990. [SR83] K.J. Supowit and E.M. Reingold. The complexity of drawing trees nicely. Acta Informatica, 18:377–392, 1983. [STT81] K. Sugiyama, S. Tagawa, and M. Toda. Methods for visual understanding of hierarchical system structures. IEEE Trans. Systems, Man, and Cybernetics, 11(2):109–125, 1981. [Tam87] R. Tamassia. On embedding a graph in the grid with the minimum number of bends. SIAM Journal on Computing, 16(3):421–444, 1987. [Tam13] R. Tamassia, editor. Handbook of Graph Drawing and Visualization. Crc Pr Inc, New York, 2013. [Wal90] J. Walker II. A node-positioning algorithm for general trees. Software-Practice and Experience, 20(7):695–705, 1990. [WS79] C. Wetherell and A. Shannon. Tidy drawings of trees. IEEE Transactions on Software Engineering, 5(5):514–520, 1979.
© Copyright 2024 ExpyDoc