Transcript
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 Ubungen ersparen. F¨ur eine erfolgreiche Teilnahme an der Veranstaltung ¨ ,,Zeichnen von Graphen“ m¨ussen Sie zus¨atzlich an den Vorlesungen und Ubungen aktiv teilnehmen. ¨ Stand der Anderungen: 5. Januar 2016 ¨ Neben dem Vorlesungsstoff enth¨alt das Skript an jedem Kapitelende auch Ubungsaufgaben zur Wiederholung des Stoffs und zur Klausurvorbereitung. Bitte melden Sie sich f¨ur die Teilnahme an dieser Vorlesung im Online-Vorlesungsverzeichnis (HISLSF) der Universit¨at unter https://lsf.verwaltung.uni-duesseldorf.de/ bis zum 23.10.2015 an.
Literaturhinweise Die B¨ucher [KW01], [BETT99], [NR03], [JM03] und [Tam13] besch¨aftigen 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 Asthetikkriterien f¨ur Zeichnungen 1.5 Problemdefinition . . . . . . . . . ¨ 1.6 Ubungsaufgaben . . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
2 Zeichnen von B¨aumen 2.1 Definitionen . . . . . . . . . . . . . . . . . . . 2.2 Zeichnen von Bin¨arb¨aumen . . . . . . . . . . . 2.2.1 Durchlaufen von Bin¨arb¨aumen . . . . . 2.2.2 Problemdefinition und Zeitkomplexit¨at 2.2.3 Inorder Zeichnung . . . . . . . . . . . 2.2.4 Linksb¨undige 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¨aren B¨aumen . . . . . . . . . 2.3.1 Algorithmus von Walker . . . . . . . . 2.3.2 Chans Algorithmus . . . . . . . . . . . 2.4 Zeichnen von allgemeinen Wurzelb¨aumen . . . 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¨aumen ohne Wurzel 2.5.1 Radiale Zeichnungen . . . . ¨ Ubungsaufgaben . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
3 Hierarchische Zeichenverfahren 3.1 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Entfernen von Kreisen . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Schichteneinordnung . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 L¨angster-Pfad-Schichtung . . . . . . . . . . . . . . . . . . . . 3.3.2 Schichtung mit fester Breite . . . . . . . . . . . . . . . . . . . 3.3.3 Schichtung mit Minimierung der Anzahl der k¨unstlichen 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¨atswerten . . . . . . . . . . . . 3.5.4 Kantenpositionierung . . . . . . . . . . . . . . . . . . . . . . . ¨ 3.6 Ubungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Kr¨aftebasierte 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 Ubungsaufgaben . . . . . . . . . . . . . . . 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¨arbung planarer Graphen . . . . . . . . . . . . . . 5.1.6 Planarit¨atstests und Einbettungsberechnung . . . . . . . . . Planarisierung, Augmetierung und Gradbeschr¨ankung von Graphen 5.2.1 Planarisierungsmethode . . . . . . . . . . . . . . . . . . . 5.2.2 Augmentierung des Zusammenhangs . . . . . . . . . . . . 5.2.3 Gradbeschr¨ankung . . . . . . . . . . . . . . . . . . . . . . Maximal planare Graphen und kanonische Ordnungen . . . . . . . Geradlinige Zeichnungen planarer Graphen . . . . . . . . . . . . . ¨ Ubungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . .
6 Flusse ¨ und orthogonale Zeichnungen 6.1 Winkel in orthogonalen Zeichnungen . . . . . . . . . . . . . . . 6.2 Orthogonale Repr¨asentation und Eigenschaften . . . . . . . . . 6.3 Bestimmung einer knickminimalen orthogonalen Repr¨asentation 6.3.1 Netzwerkfl¨usse 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¨achen . . . . . . . . . . . . 6.4.2 Verfeinerung der a¨ ußeren Fl¨ache . . . . . . . . . . . . . 6.5 Algorithmen zur L¨angenbestimmung . . . . . . . . . . . . . . . ¨ 6.6 Ubungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . .
. . . . . . . . . . .
. . . . . . . . .
. . . . . . . . . . .
. . . . . . . . .
. . . . . . . . . . .
. . . . . . . . .
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 u¨ ber Algorithmen, Probleme, Komplexit¨atsklassen, Laufzeitabsch¨atzungen und Effizienz haben. Bei Bedarf wiederholen Sie die Definitionen. Algorithmen sind schrittweise Verfahren zum L¨osen von Problemen, welche mecha” nisch“ ausgef¨uhrt werden k¨onnen, zum Beispiel auch durch einen Computer. Die einzelnen Schritte sind verst¨andlich 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¨ahlprobleme. Kompexit¨atsklassen sind Mengen von Problemen, deren L¨osung bez¨uglich eines Komplexit¨atsmaßes (wie zum Beispiel Zeit- oder Platzbedarf) und eines Algorithmentyps (wie zum Beispiel Determinismus oder Nichtdeterminismus) etwa denselben algorithmischen Aufwand erfordert, eine vorgegebene Komplexit¨atsschranke also nicht u¨ berschreitet. Klassen zur Messung des Zeitbedarfs von Entscheidungsproblemen sind u.a. P, NP, NPC. Laufzeitabsch¨atzungen von Algorithmen gibt man h¨aufig in der O-Notation, Ω-Notation oder Θ-Notation an. Zur Absch¨atzung von Laufzeiten, die sich u¨ ber Rekursionsgleichungen formulieren lassen, ist das Mastertheorem oft hilfreich. Effizienz von Algorithmen definiert man u¨ ber die Gen¨ugsamkeit bez¨uglich Laufzeit und Speicherplatz, welche sie zur L¨osung eines festgelegten Problems ben¨otigen. Je geringer die Laufzeit und der Speicherplatz sind, desto h¨oher 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¨ur 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¨achlich in der Definition der Kantenmenge unterscheiden. Die beiden folgenden Varianten werden jedoch am h¨aufigsten verwendet. 1. In einem gerichteten Graphen (englisch: digraph, als Abk¨urzung 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¨ussen 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¨ahnen. Grunds¨atzlich kann ein ungerichteter Graph auch als ein gerichteter Graph dargestellt werden, indem f¨ur 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¨ur ungerichtete Graphen auch das ungerichtete Graphenmodell zu verwenden. Die ,,Gleichheit“ von Graphen wird wie bei allen komplexen Strukturen u¨ 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¨atzlich, dass E ′ alle Kanten aus E enth¨alt, 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¨ohnlicher 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¨ur den durch V ′ ⊆ V in G induzierten Teilgraphen. Es folgen einige weitere Begriffe u¨ ber Graphen, die sowohl f¨ur gerichtete als auch f¨ur 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¨ur 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¨at einer Menge S (also die Anzahl ihrer Elemente) bezeichnen wir mit |S|. Die Gr¨oß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¨aher eingehen. B¨aume unterteilen wir u.a. in die folgenden Typen, siehe Abschnitt 2.1. B¨aume sind ungerichtete zusammenh¨angende kreisfeie Graphen Wurzelb¨aume sind B¨aume mit einer ausgezeichneten Wurzel geordnete Wurzelb¨aume sind Wurzelb¨aume mit einer Ordnung auf den Kindern jeden Knotens bin¨are Wurzelb¨aume sind geordnete Wurzelb¨aume mit h¨ochstens 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¨ur 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¨uhrt werden k¨onnnen, 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¨agen: A[u][v] =
0, 1,
falls (u, v) 6∈ E, falls (u, v) ∈ E.
Die Speicherung eines Graphen mit n Knoten als Adjazenzmatrix ben¨otigt Θ(n2 ) Platz, unabh¨angig davon, ob der Graph sehr viele oder nur sehr wenige Kanten hat. Algorithmen, die als interne Datenstruktur eine Adjazenzmatrix verwenden, ben¨otigen 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¨uglich der Best-case-Zeitkomplexit¨at) Ω(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¨ur viele Graphenprobleme Ω(n2 ) nicht unterschreiten. Adjazenzlisten sind eine geeignetere Datenstruktur f¨ur 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¨onnen im Fall gerichteter Graphen getrennt von den aus u auslaufenden Kanten gespeichert werden. Zeichnungen von Graphen erh¨alt 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¨ur 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¨ur 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¨ur jeden Knoten v ∈ V ist d(v) = (x(v), y(v)) und d ist f¨ur 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¨ur einen gezeichneten gerichteten Graphen. • F¨ur 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¨oherdimensionale Zeichnungen (im R3 f¨ur 3-D Modelle und im R4 f¨ur Folgen von 3-D Bildern, Videosequenzen) betrachtet. In Abh¨angigkeit 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¨ussen 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¨ur 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¨ogliche 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¨urfen, siehe Abbildung 1.8.
Abbildung 1.8: Gitterzeichnung • Aufw¨artsgerichtete Zeichnung (englisch: upward drawing): Eine Aufw¨artszeichnung 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¨aumen ist die Richtung von oben nach unten u¨ blich.) • Planare aufw¨artsgerichtete Zeichnung (englisch: planar upward drawing): Eine Aufw¨artszeichnung 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¨artsgerichtete 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¨aren Baumes, so dass die Zeichnungen der beiden Teilb¨aume jedes Knotens durch eine horizontale oder vertikale Linie getrennt werden k¨onnen, 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 Asthetikkriterien fur ¨ Zeichnungen Um die G¨uter einer Zeichnung eines Graphen zu bewerten, betrachtet man h¨aufig folgende Kriterien. (1.) Ben¨otigte Fl¨ache F¨ur Zeichnungen in der Ebene definiert man die Fl¨ache (Platzverbrauch) wie folgt. Definition 1.2 (Breite, H¨ohe und Fl¨ache einer Zeichnung) Die Breite einer Darstellung d(G) f¨ur einen Graphen G, kurz Breite(d(G)), ist die Differenz aus der gr¨oßten genutzten x-Koordinate und der kleinsten genutzten x-Koordinate. Die H¨ohe einer Darstellung d(G), kurz H¨ohe(d(G)), ist die Differenz aus der gr¨oßten genutzten y-Koordinate und der kleinsten genutzten y-Koordinate. Die Fl¨ache (englisch: area) einer Zeichnung d(G) eines Graphen G auf einem ganzzahligen Gitter ist das Produkt aus der Breite und der H¨ohe von d(G). Die Fl¨ache eines Graphen G auf einem ganzzahligen Gitter ist die kleinste Fl¨ache, welche durch eine Zeichnung von G m¨oglich ist.
Zeichnen von Graphen · Wintersemester 2015/16
17
Abbildung 1.13: HV-Zeichnung eines bin¨aren Baumes Anders ausgedr¨uckt, ist die Fl¨ache einer Zeichnung die Fl¨ache 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¨ache einer Zeichnung) In Abbildung 1.14 sind zwei Zeichnungen des K4 mit Fl¨ache 4 bzw. 8 angegeben.
Abbildung 1.14: Zwei Zeichnungen des K4 mit Fl¨ache 4 bzw. 8.
Die ben¨otige Fl¨ache soll m¨oglichst klein seien. (2.) Anzahl der Kantenkreuzungen (englisch: edge crossings) Die Anzahl der Kantenkreuzungen in einer Zeichnung soll m¨oglichst gering seien, d.h. der Graph soll m¨oglichst planar gezeichnet werden. Die minimale Anzahl an Kantenkreuzungen, die bei einer geradlinigen Zeichnung f¨ur einen Graphen G m¨oglich ist, heißt auch Kreuzungszahl von G. (3.) Anzahl der Kantenknickpunkte Die Anzahl der Kantenknicke (englisch: bends) soll m¨oglichst gering seien. (4.) Anzahl der Schnitte zwischen nichtinzidenten Kanten und Knoten Die Anzahl der Schnitte zwischen nichtinzidenten Kanten und Knoten soll m¨oglichst gering seien.
Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016
18 (5.) L¨ange der Kanten
Die L¨ange der Kanten soll m¨oglichst klein und m¨oglichst gleich groß seien. (6.) Richtung der Kanten Die (gerichteten) Kanten sollen m¨oglichst in die selbe Richtung zeigen. (7.) Verteilung der Knoten Die Knoten sollen m¨oglichst gleich verteilt seien. (8.) Verh¨altnis von H¨ohe und Breite des Layouts Das Verh¨altnis von H¨ohe zu Breite eines Layouts soll m¨oglichst eins betragen. (9.) Winkelaufl¨osung Definition 1.4 (Winkelaufl¨osung) Bei geradlinigen Zeichnungen eines Graphen G definiert man die Winkelaufl¨osung (englisch: angular resolution) ρ(G) einer Zeichnung als den kleinsten Winkel, der durch zwei geradlinigen Kanten gebildet wird, die einen Endknoten gemeinsam haben. Die Winkelaufl¨osung eines Graphen G ist die maximale Winkelaufl¨osung, die durch eine Zeichnung von G m¨oglich ist. Die Winkelaufl¨osung einer Zeichnung soll m¨oglichst 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¨alt, so soll dies auch im Layout erkennbar seien. • Ordnung Sind z.B. bei B¨aumen die Kinder eines Knotens geordnet, so soll dies auch in der Zeichnung realisiert werden. Im Allgemeinen ist es nicht m¨oglich zwei dieser Kriterien gleichzeitig zu optimieren. In Abbildung 1.15 sind drei Zeichnungen des vollst¨andigen 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 Asthetikkriterien 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¨oglich. • Gegeben ein gerichteter Graph G, entscheide ob G aufw¨artsplanar ist, d.h, ob es eine aufw¨artsgerichtete 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¨ache 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¨ur 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¨anen, Flugrouten, Internetverbindungen und Stammb¨aumen. Formal betrachteten wir das folgende Konstruktionsproblem.
Gegeben: Ausgabe:
G RAPHDRAWING Ein Graph G = (V, E). Eine Zeichnung von G, so dass eine Menge von ¨ Asthetikkriterien erf¨ullt ist.
¨ Die Art der Zeichnung und die zu erf¨ullenden Asthetikkriterien sind anwendungsabh¨angig, 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 Ubungsaufgaben 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¨ahlten Asthetikkriterien sind in den sechs Zeichnungen eines W¨urfels in Abbildung 1.16 besonders gut oder besonders schlecht erf¨ullt?
Abbildung 1.16: Sechs Zeichnungen eines W¨urfels. Aufgabe 1.3 Wir bezeichnen einen vollst¨andigen Graphen mit n Knoten kurz mit Kn . Kn = ({v1 , . . . , vn }, {{vi , vj } | 1 ≤ i < j ≤ n})
Geben Sie f¨ur den K3 , K4 und K5
(a) eine geradlinige Gitterzeichnung (b) eine orthogonale Gitterzeichnung mit m¨oglichst geringer Fl¨ache an. Welche Breite, H¨ohe und Fl¨ache ben¨otigen Ihre Zeichnungen?
Kapitel 2 Zeichnen von B¨aumen ,,How shall we draw a tree?“ fragte 1970 schon Donald Knuth [Knu97].
2.1 Definitionen Wir betrachten folgende verschiedene Typen von B¨aumen. 1. Ein ungerichteter kreisfreier Graph ist ein Wald. Ein zusammenh¨angender Wald ist ein Baum (englisch: tree). In einem Wald werden die Knoten vom Grad 1 Bl¨atter genannt, die u¨ brigen Knoten heißen innere Knoten.1 Beispiel 2.1 (Wald, Baum) Abbildung 2.1 zeigt einen Wald, bzw. zwei B¨aume.
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¨anger) eines Knoten s (und s ist ein Kind (Nachfolger) von v), falls v der unmittelbare Vorg¨anger von s auf dem Weg von der Wurzel von T zu s ist. Zwei Knoten heißen Geschwisterknoten, falls sie den gleichen Vorg¨angerknoten haben. In einem Wurzelbaum heißen die Knoten ohne Nachfolger Bl¨atter und die u¨ brigen Knoten innere Knoten.2 F¨ur einen Wurzelbaum T = (V, E) mit Wurzel w definieren wir f¨ur jeden Knoten v ∈ V 0 falls v = w Tiefe(v) = 1 + Tiefe(Vater(v)) sonst und die H¨ohe des Wurzelbaumes T als H¨ohe(T ) = max Tiefe(v). v∈V
F¨ur 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¨ohe(T ), d.h. S0 = {w}, S1 = N(w), . . . . Damit kann kann jeder Wurzelbaum als ein geschichteter Graph aufgefasst werden. Zwei Wurzelb¨aume T und T ′ mit Wurzel w und w ′ sind isomorph, falls T und T ′ isomorph bzgl. einer Abbildung f sind, welche zus¨atzlich f (w) = w ′ erf¨ullt. 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¨ochstens k Kinder hat, so heißt T ein k-n¨arer Baum. Hat jeder innere Knoten v h¨ochstens k = 2 Kinder, so nennen wir den geordneten Wurzelbaum auch Bin¨arbaum oder bin¨arer 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¨ur einen Bin¨arbaum 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¨aume k¨onnen auch als gerichtete B¨aume 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¨arer Wurzelbaum heißt vollst¨andig, falls jeder innere Knoten genau k Nachfolger hat und alle Bl¨atter die gleiche Tiefe besitzen.
Zwei geordnete Wurzelb¨aume T und T ′ mit Wurzel w und w ′ sind isomorph, falls die Wurzelb¨aume T und T ′ isomorph bzgl. einer Abbildung f sind, welche zus¨atzlich f¨ur jeden inneren Knoten die Ordnung der Kinder erh¨alt. Beispiel 2.3 (Bin¨arer Wurzelbaum) Abbildung 2.2 zeigt einen vollst¨andigen bin¨aren Wurzelbaum mit Wurzel w und H¨ohe 3. Der Knoten v ist der Vater (Vorg¨anger) 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¨andiger bin¨arer Wurzelbaum mit Wurzel w und H¨ohe drei.
Die Spielgelung eines geordneten Wurzelbaumes erh¨alt man, indem man die Reihenfolge der Kinder jedes inneren Knotens invertiert.
Zusammenfassung B¨aume
Abschnitt
B¨aume
ungerichtete zusammenh¨angende kreisfeie Graphen
2.5
Wurzelb¨aume
B¨aume mit ausgezeichneter Wurzel
2.4
geordnete b¨aume
Wurzel-
Wurzelb¨aume mit einer Ordnung auf den Kindern jeden Knotens
2.3
bin¨are Wurzelb¨aume
geordnete Wurzelb¨aume mit h¨ochstens zwei Kindern an jedem Knoten
2.2
Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016
24
2.2 Zeichnen von Bin¨arb¨aumen Wir betrachten zun¨achst das Zeichenproblem f¨ur bin¨are B¨aume. 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¨arb¨aumen Zum Zeichnen von Bin¨arb¨aumen ist es oft wichtig, dass man die Knoten der B¨aume in einer geeigneten Reihenfolge besucht. Drei bekannte Durchlaufreihenfolgen der Knoten in bin¨aren B¨aumen 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¨utzliche Durchlaufreihenfolge f¨ur die Knoten in Bin¨arb¨aumen 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¨uge 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¨ange v ′ an Q an; if v hat ein rechtes Kind v ′ then h¨ange 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¨at Zu einem gegebenen bin¨aren Baum T = (V, E) mit Wurzel w suchen wir eine geradlinige Zeichnung in der Ebene, so dass m¨oglichst viele der folgenden Kriterien erf¨ullt 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¨agt, 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¨oß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 u¨ ber seinen Kindern platziert. (B5) Die Kanten kreuzen sich nicht, d.h. es wird eine planare Zeichnung gefordert. (B6) Isomorphe Teilb¨aume werden bis auf Verschiebung gleich gezeichnet. (B7) Ein bin¨arer 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¨ullen, reduziert sich das Zeichenproblem auf die Bestimmung der x-Koodinate der Knoten, so dass unter den obigen Kriterien die Breite der Darstellung m¨oglichst 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¨ussen. 3. (B5) folgt bei geradlinigen Zeichnungen aus (B1)-(B3). 4. (B6) bedeutet formal, dass je zwei isomorphe Wurzelb¨aume 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¨aume (B6) nicht erf¨ullen. Rechts ist (B6) erf¨ullt, aber die Gitterbreite um eins gr¨oßer.
Zeichnen von Graphen · Wintersemester 2015/16
27
Abbildung 2.7: Ein Baum mit minimaler Breite und mit (B6). Um Komplexit¨atsaussagen f¨ur das Finden von Zeichnungen mit m¨oglichst kleiner Breite bin¨arer B¨aume anzugeben, betrachteten wir das folgende Konstruktionsproblem.
Gegeben: Ausgabe:
B INARY T REE D RAWING Ein bin¨arer Baum T = (V, E) und b ∈ N. Eine Zeichnung von T mit Breite h¨ochstens b, so dass ¨ eine Menge von Asthetikkriterien erf¨ullt ist.
Supowit und Reingold haben in [SR83] gezeigt, dass man einen Bin¨arbaum unter den Bedingung (B1)-(B6) mit minimaler Breite in polynomieller Zeit zeichnen kann. Hierzu ben¨otigt man alle isomorphen Teilb¨aume mit mindestens zwei Knoten. Bemerkung 2.5 (Bestimmen isomorpher Teilb¨aume) F¨ur einen Bin¨arbaum T = (V, E) kann man die isomorphen Teilb¨aume 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¨aume T (u) und T (v), u, v ∈ V sind nun isomorph, wenn sie die gleiche Kodierung besitzen.3 (3.) Wir sortieren f¨ur die inneren Knoten u aus T die Kodierungen der Teilb¨aume T (u) lexikographisch. In dieser Folge stehen nun die Kodierungen isomorpher Teilb¨aume hintereinander. ¨ Nach Ubungsaufgabe 2.4 charakterisiert ein Inorder- und ein Preorderdurchlauf einen Bin¨arbaum eindeutig. 3
Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016
28
Beispiel 2.6 (Bestimmen isomorpher Teilb¨aume) Wir wollen die isomorphen Teilb¨aume mit mindestens zwei Knoten in dem bin¨aren 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¨aume
(1.) Die Knoten sind in Inorder durchnummeriert. (2.) Die Knotenanzahlen nu der Teilb¨aume T (u) stehen u¨ ber den Knoten. Die Preorderreihenfolge f¨ur 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¨ur die Kriterien (B1)-(B6) in polynomieller Zeit gel¨ost werden. Beweis. Das Problem B INARY T REE D RAWING mit den Kriterien (B1)-(B6) kann f¨ur einen bin¨aren Baum T = (V, E) mit Knotenmenge V = {v1 , . . . , vn } als ein lineares Programm formuliert werden. Wir definieren f¨ur jeden Knoten vi ∈ V eine Variable x(vi ), welche der x-Koordinate von Knoten vi entspricht. Weiterhin definiert man zwei zus¨atzliche Variablen L und R f¨ur 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¨ur alle vi ∈ V • x(vi ) ≥ L f¨ur alle vi ∈ V • ((B1) wird durch geeignete y-Koordinaten erf¨ullt.) • x(rechtes Kind(vi )) − x(vi ) ≥ 1 f¨ur alle vi ∈ V , die ein rechtes Kind haben x(vi ) − x(linkes Kind(vi )) ≥ 1 f¨ur alle vi ∈ V , die ein linkes Kind haben ⇒ (B2) wird erf¨ullt.
• x(vj ) − x(vi ) ≥ m f¨ur 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¨ullt. • x(rechtes Kind(vi )) − x(vi ) = x(vi ) − x(linkes Kind(vi )) f¨ur alle vi ∈ V , die ein linkes und rechtes Kind haben ⇒ (B4) wird erf¨ullt. • ((B1), (B2) und (B3) implizieren, dass (B5) erf¨ullt wird.) • x(rechtes Kind(vji )) − x(vji ) = x(rechtes Kind(vji+1 )) − x(vji+1 ) f¨ur jede Menge {vj1 , . . . , vjk } von Wurzeln paarweise isomorpher Teilb¨aume (vgl. Bemerkung 2.5.) mit mindestens zwei Knoten und einer Wurzel mit nichtleerem rechten Kind und f¨ur 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¨ur jede Menge {vj1 , . . . , vjk } von Wurzeln paarweise isomorpher Teilb¨aume mit mindestens zwei Knoten und einer Wurzel mit leerem rechten Kind und f¨ur alle 1 ≤ i ≤ k − 1. Da Teilb¨aume isomorpher Teilb¨aume isomorph sind, werden alle isomorphen Teilb¨aume vollst¨andig u¨ berpr¨uft. ⇒ (B6) wird erf¨ullt. Da wir hier kontinuierliche Koordinaten verwenden, sind f¨ur die Variablen reelle Werte zul¨assig und das obige lineare Programm kann in polynomieller Zeit gel¨ost 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¨ur die Kriterien (B1)-(B6) und (B8) ist NP-vollst¨andig. Beweis. Die Zugeh¨origkeit des Problems zu NP folgt, da man mit einem linearen Programm wie in Beweis von Satz 2.7 f¨ur gegebene x-Koordinaten die Bedingungen und die Breite der Zeichnung in polynomieller Zeit verifizieren kann. Die NP-h¨arte 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¨ullbar?
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¨ur das Zeichenproblem, so dass die Formel F genau dann erf¨ullbar ist, wenn der bin¨are 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¨aume zu Literalen, welche den Wahrheitswert falsch besitzen mit Breite 7 und Teilb¨aume zu Literalen, welche den Wahrheitswert wahr besitzen, sogar mit Breite 6 gezeichnet werden k¨onnen. Der Baum T setzt sich in Abh¨angigkeit von F aus Variablenb¨aumen T (xk ), Literalb¨aumen T (yi,j ) und Klauselb¨aumen 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¨ur alle 0 ≤ m ≤ k − 1 hat qm als einziges Kind den Koten qm+1 und f¨ur 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¨ater 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¨ur 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¨ur 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¨allen 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¨ater noch zur Verbindung von Klauselb¨aumen ben¨otigt. 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¨alt den Wert l = 3(i−1)+j. Hierdurch sind zwei Literalb¨aume niemals isomorph.
3. Der Klauselbaum T (Fi ) zu Klausel Fi = (yi,1 ∨ yi,2 ∨ yi,3) enth¨alt die drei Literalb¨aume T (yi,1), T (yi,2) und T (yi,3 ) als Teilb¨aume, 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¨aume 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¨ullte Raute, die Wurzelknoten der drei Literalb¨aume sind als weiß gef¨ullte Quadrate und die Wurzelknoten der Variablenb¨aume sind als weiß gef¨ullte 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¨ur yi,j = xk Nun k¨onnen 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¨aren, wie f¨ur 1 ≤ i ≤ m−1 die Klauselb¨aume 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¨ochstens 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¨ange sicher u¨ bertroffen und ein Weg der bei c startet, wird durch einen Weg ab b mit 3m+2 Knoten in der L¨ange sicher u¨ 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¨ame sind als weiß gef¨ullte Rauten, die Wurzelknoten der drei Literalb¨aume sind als weiß gef¨ullte Quadrate und die Wurzelknoten der Variablenb¨aume sind als weiß gef¨ullte Kreise dargestellt. Die Zeichnung entspricht der folgenden erf¨ullenden 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¨ullbar 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¨ahlt. 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¨ullbar 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¨aumen die gem¨aß ihres Wahrheitswertes bzgl. β passende Zeichnung aus obigen Abbildungen w¨ahlen.
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¨ur 1 ≤ k ≤ n zeichnen wir in d den Variablenbaum T (xk ) f¨ur β(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¨ur alle 1 ≤ i ≤ m und 1 ≤ j ≤ 3 zeichnen wir mit d den Literalbaum T (yi,j ) f¨ur yi,j = xk , d.h. eine nicht komplementierte Variable, f¨ur β(xk ) = 1 wie in Abbildung 2.11 (a) und f¨ur β(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¨ur β(xk ) = 1 wie in Abbildung 2.12 (b) und f¨ur β(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¨aume. F¨ur 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¨onnen wir diese drei Wurzeln so nahe beieinander platzieren wie wir wollen, ohne dabei Kriterium (B4) (Zentrieren von Vaterknoten u¨ 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¨oglich 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¨ullt. Analog platzieren wir die Wurzel von T (yi,3) m¨oglichst 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¨ullt 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¨aume 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¨ur jeden Klauselbaum Breite(d(T (Fi ))) ≤ 7 + 7 + 6 + 2 + 2 = 24. Wir wollen die Klauselb¨aume in T so platzieren, dass die Breite von T gleich der Breite des breitesten Klauselbaumes ist. Dies k¨onnen wir wegen der L¨ange (n + 6 Knoten) und Flexibilit¨at 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¨onnen wir f¨ur 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¨alt. 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¨ur eine erf¨ullbare Formel F . (⇐) Angenommen T hat eine Zeichnung d(T ) mit Bedingungen (B1)-(B6) und (B8) und Breite(d(T )) ≤ 24. Wir definieren eine erf¨ullende Belegung β : {x1 , . . . , xn } → {0, 1} f¨ur 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¨ur jedes k ∈ {1, . . . , n} wohldefiniert, da f¨ur 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¨ur 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¨ahlten 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¨allen Breite3 (d(T (yi,j ))) = 7.
Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016
38
Angenommen die oben definierte Belegung β erf¨ullt die Formel F nicht, dann gibt es eine Klausel Fi , welche von β nicht erf¨ullt 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¨ullt die Formel F . Bemerkung 2.12 Im unkorrigierten Beweis von Supowit und Reingold von 1983 wurden isomorphe Teilb¨aume unterschiedlich gezeichnet. • Isomorphe Teilb¨aume in Literalb¨aumen zu negierten Literalen wurden unterschiedlich gezeichnet. • Weiterhin wurden zu in mehreren Klauseln auftretenden Literale die Literalb¨aume zusammen mit den ein bzw. zwei Kanten u¨ ber deren Wurzeln durch die Konstruktion der Klauselb¨aume unterschiedlich gezeichnet, obwohl diese isomorph sind. Das Einf¨uhren der Zick-Zack-Wege unter den mit c markierten Knoten in Literalb¨aumen behebt diese Fehler jedoch. Satz 2.13 (Supowit, Reingold 1983) Das Problem B INARY T REE D RAWING f¨ur die Kriterien (B1)-(B6) und (B8) ist f¨ur b = 24 NP-vollst¨andig. Beweis. Im Beweis von Satz 2.8 kann b = 24 gew¨ahlt werden. F¨ur ein Optimierungsproblem Π und eine Instanz I des Problemes bezeichnet man mit OP T (I) den Wert einer optimalen L¨osung von Π bei Eingabe von I. Ein Approximationsalgorithmus A f¨ur Π ist ein Algorithmus, der eine zul¨assige L¨osung f¨ur Π liefert. Der Wert der L¨osung von A bei Eingabe von I wird mit A(I) bezeichnet. Ein Approximationsalgorithmus A f¨ur Π hat eine relative G¨ute k, falls f¨ur 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¨arer Baum T = (V, E). Eine Zeichnung von T mit minimaler Breite, so dass ¨ eine Menge von Asthetikkriterien erf¨ullt 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¨ute < 25 ≈ 1.04 l¨ost, falls P 6= NP. 24 Beweis. Angenommen es gibt einen Approximationsalgorithmus A mit polynomieller Laufzeit f¨ur 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¨ute ℓ < 24 f¨ur k = 24 und die Bedingungen (B1)-(B6) und (B8) wie folgt l¨osen: A(T ) ≤ 24 ⇔ OP T (T ) ≤ 24 ¨ Die Aquivalenz l¨asst 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¨are das NP-vollst¨andige Entscheidungsproblem B I NARY T REE D RAWING f¨ ur 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¨ur Π ist ein Algorithmus A, welcher als Eingabe eine Instanz f¨ur Π und eine Fehlerschranke ǫ, 0 < ǫ < 1, hat, so dass A f¨ur jedes feste ǫ ein Approximationsalgorithmus mit relativer G¨ute (1 + ǫ) f¨ur Π ist. Korollar 2.15 Es gibt kein polynomielles Approximationsschema f¨ur 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¨arer B¨aume, die m¨oglichst viele der ¨ Asthetikkriterien (B1)-(B8) erf¨ullen mit nichtnotwendigerweise minimaler Breite.
2.2.3 Inorder Zeichnung Unser erster Algorithmus zum Zeichnen von Bin¨arb¨aumen T = (V, E) f¨uhrt eine Inordernummerierung der Knoten von T aus (Abschnitt 2.2.1) und vergibt f¨ur 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¨arbaumes 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¨arbaumes
¨ Erfullte ¨ Asthetikkriterien: (B1) +
(B2) +
(B3) +
(B4) -
(B5) +
(B6) +
(B7) +
(B8) +
Nachteil der Zeichnung: Die Breite der Darstellung betr¨agt stets |V | − 1 und ist somit fast immer nicht optimal.
2.2.4 Linksbundige ¨ Zeichnung Als n¨achstes betrachten wir eine linksb¨undige Zeichnung (englisch: leftmost drawing) zum Zeichnen von Bin¨arb¨aumen T = (V, E). Hier wird T in Preorder (Abschnitt 2.2.1) durchlaufen und dabei f¨ur 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 (Linksbundige ¨ Zeichnung) Abbildung 2.17 zeigt eine linksb¨undige Zeichnung des Bin¨arbaumes 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¨undige Zeichnung eines Bin¨arbaumes ¨ Erfullte ¨ Asthetikkriterien: (B1) +
(B2) -
(B3) +
(B4) -
(B5) +
(B6) -
(B7) -
(B8) +
Insgesamt erh¨alt man hier also sehr unsch¨one 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¨arbaumes T = (V, E) zeichnet man zun¨achst einen vollst¨andigen Bin¨arbaum der H¨ohe h = H¨ohe(T ) und 2h Bl¨attern, z.B. • mit 45 Grad Winkeln f¨ur die Kantenf¨uhrung und variabler H¨ohe zwischen den Schichten oder • mit fester H¨ohe zwischen den Schichten und variablen Winkeln und l¨oscht anschliessend die in T nicht vorhandene Knoten und Kanten. Beispiel 2.18 (Teilbaum Zeichnung) Abbildung 2.18 zeigt den Bin¨arbaum mit 12 Knoten aus Beispiel 2.16 als Teilbaum eines vollst¨andigen Bin¨arbaumes der H¨ohe 4. Die rot markierten Knoten und Kanten wurden dabei entfernt. ¨ Erfullte ¨ Asthetikkriterien: (B1) -/+
(B2) +
(B3) +
(B4) +
(B5) +
(B6) -
(B7) +
(B8) +
Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016
42
Abbildung 2.18: Teilbaum Zeichnung eines Bin¨arbaumes (B1) wird nur bei fester H¨ohe 1 zwischen den Schichten und variablen Winkeln zur Kantenf¨uhrung erf¨ullt. Nachteil der Zeichnung: Die Breite der Darstellung kann die Knotenanzahl deutlich u¨ berschreiten.
2.2.6 Wetherell-Shannon Algorithmus Der folgende Algorithmus zum Zeichnen von Bin¨arb¨aumen 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¨atze gewissermassen kombiniert werden. Hier wird das linke Kind soweit links wie m¨oglich 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¨arbaum 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¨ungliche Problem und wobei die L¨osung des urspr¨unglichen Problems aus den L¨osungen der Teilprobleme zusammengesetzt werden kann (conquer). Die Teilprobleme werden entweder nach dem gleichen Schema gel¨ost oder, falls diese so einfach sind, direkt.
Zeichnen von Graphen · Wintersemester 2015/16
43
T = (V, E). F¨ur die inneren Knoten v ∈ V mit zwei Kindern werden Zeichnungen f¨ur die Teilb¨aume Tℓ (v) und Tr (v) kombiniert, so dass v mittig u¨ ber den Wurzeln dieser Teilb¨aume platziert werden kann. Hierbei kann es vorkommen, dass wir einen Mindestabstand von 3, statt u¨ blich 2, fordern m¨ussen. Bemerkung 2.19 Falls ein Knoten v zwei Kinder hat, so kann das Zentrieren von v u¨ ber seinen Teilb¨aumen einen Mindestabstand von 3 statt 2 zwischen den B¨aumen Tℓ (v) und Tr (v) erfordern, da deren Wurzeln sonst einen ungeraden Abstand haben, siehe Abbildung 2.19.
!
?
2
3
Abbildung 2.19: Zusammenf¨ugen von zwei Teilb¨aumen, deren Wurzeln einen ungeraden Abstand haben. Falls einer der beiden Teilb¨aume 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¨ur 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¨uhrt 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¨achste 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¨ur w eine Position bestimmt wird, die links von der n¨achsten freien (d.h. nicht mindestens zwei Positionen rechts von der letzten belegten) liegt, wird T (w) entsprechend nach rechts verschoben. else platziere w zentriert u¨ ber seinen Kindern. Falls so f¨ur w eine Position bestimmt wird, die links von der n¨achsten 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 u¨ 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 u¨ 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 u¨ 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 u¨ 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 u¨ 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¨ur den WS-Algorithmus zu erreichen, geht man in zwei Phasen vor. 1. Die erste Phase durchl¨auft die Knoten in Postorder, wie in Abbildung 2.20 angegeben. Allerdings werden im ,,conquer“-Schritt die Verschiebungen der Teilb¨aume nicht sofort ausgef¨uhrt. Es werden nur vorl¨aufige x-Koordinate x(v) bestimmt und notwendige horizontale Verschiebungen f¨ur T (v) (ohne v) werden an den entsprechenden Wurzeln v der Teilb¨aume in einer Variable modifier(v) gespeichert. 2. In der zweiten Phase bestimmt man die endg¨ultigen 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¨uhre 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¨arbaum mit n Knoten in Zeit O(n).
Zeichnen von Graphen · Wintersemester 2015/16
47
¨ Erfullte ¨ Asthetikkriterien: (B1) +
(B2) +
(B3) +
(B4) +
(B5) +
(B6) -
(B7) -
(B8) +
¨ Asthetikkriterien (B6) und (B7) werden nicht erf¨ullt. Im Allgemeinen ist die Breite nicht optimal und es werden unsch¨one Zeichnungen produziert, siehe Abbildung 2.22 bzw. ¨ Abbildung 2.23 und Ubungsaufgabe 2.13. w
Abbildung 2.22: Ein Bin¨arbaum gezeichnet vom WS-Algorithmus.
w
w
Abbildung 2.23: Ein Bin¨arbaum und sein Spigelbild gezeichnet vom WS-Algorithmus. Der Algorithmus erf¨ullt 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¨onere Zeichnungen als die vorgestellte Version, da sie (B4), (B6) und (B7) nicht erf¨ullt.
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¨are B¨aume 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¨arbaum T = (V, E). Der Algorithmus bestimmt zun¨achst f¨ur jeden Knoten v ∈ V eine Darstellung f¨ur den linken Teilbaum Tℓ (v) und eine Darstellung f¨ur den rechten Teilbaum Tr (v). Diese Zeichnungen bleiben bis auf eine m¨ogliche 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 u¨ ber die beiden Wurzeln von Tℓ (v) und Tr (v) gezeichnet werden kann. Falls einer der beiden Teilb¨aume 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¨ur 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 u¨ 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¨ur den RT-Algorithmus zu erreichen, geht man wieder in zwei Phasen vor. 1. Die erste Phase durchl¨auft die Knoten in Postorder, wie in Abbildung 2.24 angegeben. Allerdings werden nun im ,,conquer“-Schritt die Verschiebungen der Teilb¨aume nicht sofort ausgef¨uhrt. Notwendige Verschiebungen werden an den entsprechenden Wurzeln der Teilb¨aume gespeichert.
Zeichnen von Graphen · Wintersemester 2015/16
51
2. In einem zweiten Durchlauf bestimmt man in Preorder die endg¨ultigen xKoordinaten der Knoten v, indem man die Verschiebungswerte von der Wurzel bis zum Knoten v aufsummiert. Es bleibt zu kl¨aren, wie im Postorderdurchlauf im ,,conquer“-Schritt die beiden bestimmten Teilbaumzeichnungen effizient zusammengef¨ugt werden. Dazu betrachten wir die kleinste und gr¨oßte genutzte x-Koordinate f¨ur jede Tiefe der beiden Teilb¨aume. Definition 2.23 (Linke und rechte Abgrenzung) F¨ur einen bin¨aren Wurzelbaum T mit H¨ohe 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¨arbaum 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¨aumen ist zwischen Knoten v3 und v7 , welche beim Zusammenf¨ugen 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¨ahrend des Postorderdurchlaufes wie folgt aktualisiert werden. Die Berechnung der Abgrenzungen f¨ur Baum T (v) kann aus den Abgrenzungen f¨ur Tℓ (v) und Tr (v) bestimmt werden. Falls H¨ohe(Tℓ (v)) = H¨ohe(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¨ohe(Tℓ (v)) < H¨ohe(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¨ohe(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¨ohe(Tℓ (v)) > H¨ohe(Tr (v)) analog. Damit k¨onnen 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¨auft bis die Abgrenzung des Teilbaumes mit geringerer H¨ohe endet. W¨ahrend dieses Durchlaufs bestimmt man f¨ur jede Schicht i die minimal notwendige Verschiebung f¨ur Teilbaum Tr (v) durch x(vi ) − x(vi′ ) + 2 und maximiert diese u¨ ber alle Schichten. Wenn die Summe s der bisherigen x-Werte der Kinder von v und dieser maximalen Verschiebung ungerade ist, dann w¨ahle x(vi ) − x(vi′ ) + 3 als Verschiebung f¨ur 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¨arbaum mit n Knoten in Zeit O(n). Beweis. Es sei T ein bin¨arer Wurzelbaum und F (T (v)) die ben¨otigte Zeit des RT-Algorithmus f¨ur den Baum T (v). Wir definieren die gegen¨uber der u¨ blichen H¨ohendefinition um eins erh¨ohten Werte: h(v) = H¨ohe(T (v)) + 1 hℓ (v) = H¨ohe(Tℓ (v)) + 1 hr (v) = H¨ohe(Tr (v)) + 1 Wir zeigen Induktiv u¨ 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¨ur alle B¨aume mit weniger als n Knoten. F¨ur 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¨ohe des Teilbaumes mit geringer H¨ohe. Damit erhalten wir die folgende Formel f¨ur 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¨aren B¨aumen T = (V, E) gibt, welche auf einem Gitter mit Breite zwei gezeichnet werden k¨onnen 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¨ur T1 hat die Breite 2. F¨ur 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¨ a 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¨ur B¨aume mit n Knoten Θ(n2 ) Fl¨ache ben¨otigen. (Ubungsaufgabe 2.16) ¨ Erfullte ¨ Asthetikkriterien: (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¨one Zeichnungen. In Anwendungen wird zum Zeichnen von bin¨aren B¨aumen u¨ blicherweise der Algorithmus von Reingold und Tilford eingesetzt. Der Algorithmus kann auch auf beliebige Wurzelb¨aume (mit mehr als zwei Kindern) erweitert werden, indem die Wurzel u¨ 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¨arb¨aume mit einer fast-linearen Fl¨ache 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¨ullt, 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¨arer Baum mit Wurzel w, den wir rekursiv wie folgt zeichnen. Wenn wir Zeichnungen f¨ur 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¨ur 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¨ur 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¨ohe 17. ¨ Erfullte ¨ Asthetikkriterien: (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¨uck; 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 u¨ ber seinen Kindern platziert. Die H¨ohe der Zeichnung mit Chans Algorithmus ist f¨ur bin¨are B¨aume T mit n Knoten h¨ochstens n − 1, z.B. wenn T ein Weg ist. Um die Fl¨ache abzusch¨atzen, wollen wir die Breite absch¨atzen. 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¨alt, wenn P = (v0 , . . . , vk ) wie folgt gew¨ahlt wird. • v0 ist die Wurzel von T . • F¨ur i = 0, . . . k − 1 sei vi bereits gew¨ahlt 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¨ur einen linken Teilbaum α und einen rechten Teilbaum β am Weg P (d.h. f¨ur einen Teilbaum T (v) mit einem Geschwisterknoten von v auf dem Weg P ). Zur Absch¨atzung der Breite ben¨otigen wir folgendes Lemma zur Absch¨atzung der Knotenanzahl in den Teilb¨aumen der Geschwisterknoten des Greedy-Weges. Lemma 2.28 F¨ur je zwei verschiedene Teilb¨aume α und β des Greedy-Weges P in einem bin¨aren 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¨uck; 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¨atzung f¨ur die Breite W (n) von B¨aumen mit n Knoten. W (n) ≤
maxn−n (W (n1 ) + W (n2 ) + 2).
n1 ≤ n ,n2 ≤ 2
Das Maximum wird f¨ur n1 =
n 2
2
1
und n2 =
n 4
angenommen.
n n W (n) ≤ W ( ) + W ( ) + O(1). 2 4 Man kann mit vollst¨andiger Induktion zeigen, dass √
log2 ( 1+2
W (n) ∈ O(n
5
)
) ∈ O(n0,695 ).
D.h. die Fl¨ache betr¨agt h¨ochstens O(n1,695 ). Satz 2.29 Mit Chans Algorithmus kann man einen Bin¨arbaum mit n Knoten in Zeit O(n) und Fl¨ache 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¨ur die Breite der Zeichnung eine Rekursionsgleichung mit einer kleineren L¨osung. Der Weg P = (v0 , v1 , . . .) von der Wurzel zu einem Blatt wird nun wie folgt gew¨ahlt. • v0 ist die Wurzel von T • F¨ur i = 0, . . . , k − 1 sei vi bereits gew¨ahlt 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¨oße und βi ein rechter Teilbaum am Weg (v0 , . . . , vi )
60
Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016 mit maximaler Gr¨oß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¨ur jeden linken Teilbaum α und rechten Teilbaum β des HalbierendenWeges eines bin¨aren 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¨ur 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¨ohe 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¨atzung 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¨ur n1 =
n 4
und n2 =
n 4
angenommen.
n W (n) ≤ 2 · W ( ) + O(1). 4 Man kann mit vollst¨andiger Induktion zeigen, dass √ W (n) ≤ c n − 2 f¨ur alle n und eine Konstante c, d.h. W (n) ∈ O(n0,5 ) gilt. Somit betr¨agt die Fl¨ache h¨ochstens O(n1,5 ). Satz 2.32 Mit Chans Algorithmus kann man einen Bin¨arbaum mit n Knoten in Zeit O(n) und Fl¨ache O(n1,5 ) zeichnen. Dritter Ansatz von Chan Um eine fast lineare Fl¨achennutzung zu erreichen, wird die linke und rechte Regel erweitert. Es sei T = (V, E) ein bin¨arer 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¨oß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¨aume mit Wurzel vi wie im ersten Ansatz. F¨ur eine sp¨ater zu bestimmende Konstante A sei k ′ der gr¨oß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¨ur den Greedy-Weg P in einem bin¨aren 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¨ur jeden Teilbaum α eines Knotens von P ′ gilt |α| ≤ A. 2. F¨ur 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¨aume h¨ochstens |T (vk′+1 )| < n − A groß sind. Aus Absch¨atzung (2.2) und dem letzten Lemma erhalten wir f¨ur jedes A die folgende Rekursionsgleichung f¨ur 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¨uck; else { bestimme den Greedy-Weg P = (w = v0 , . . . , vk ) es sei k ′ der gr¨oß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¨aume 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¨ahle f¨ur 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¨ur 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¨ache betr¨agt h¨ochstens O(n1+ǫ ) Satz 2.34 Mit Chans Algorithmus kann man f¨ur festes ǫ > 0 einen Bin¨arbaum mit n Knoten in Zeit O(n) und Fl¨ache O(n1+ǫ ) zeichnen.
Zeichnen von Graphen · Wintersemester 2015/16
65
Eine bessere Absch¨atzung erh¨alt 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 ur festes ǫ > 0 einen Bin¨arbaum mit n Kno√ man f¨p 2 log(n) ten in Zeit O(n) und Fl¨ache O(n · 2 · log(n)) zeichnen.
2.2.9 HV-Zeichnungen Es sei T = (V, E) ein Bin¨arbaum. Eine HV-Zeichnung (HV=horizontal vertikal) f¨ur T ist eine spezielle orthogonale Gitterzeichnung, die man durch einen Teile und Beherrsche Algorithmus erzeugen kann. Es sei T ein bin¨arer Wurzelbaum mit Wurzel w, den wir rekursiv zeichnen. Wenn wir Zeichnungen f¨ur 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¨oßer ist, als die gr¨oß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¨oß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¨aren 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¨ohe und Breite einer HV-Zeichnung eines Bin¨arbaumes mit n Knoten betr¨agt h¨ochstens 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¨aren Baumes Satz 2.37 Die HV-Darstellung eines vollst¨andigen Bin¨arbaumes mit n Knoten ben¨otigt eine Fl¨ache aus O(n). Beweisidee. Zeichne einen vollst¨andigen Bin¨arbaum T , so dass f¨ur Knoten mit ungerader Tiefe (1, 3, 5, 7, . . .) eine horizontale Kombination und f¨ur Knoten mit gerader Tiefe (0, 2, 4, 6, . . .) eine vertikale Kombination durchgef¨uhrt wird. Dann kann man die Fl¨ache ¨ wie behauptet absch¨atzen, siehe Ubungsaufgabe 2.20. F¨ur nicht vollst¨andige Bin¨arb¨aume mit n Knoten kann eine HV-Zeichnung jedoch eine Fl¨ache von Ω(n2 ) ben¨otigen. F¨ur Bin¨arb¨aume ohne Ordnung auf den Knotennachfolgern kann man ein a¨ 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¨arbaumes 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¨ur vollst¨andige Bin¨arb¨aume.
Abbildung 2.42: H-Zeichnungen f¨ur vollst¨andige Bin¨arb¨aume
Satz 2.39 Eine H-Zeichnung eines vollst¨andigen Bin¨arbaumes mit n Knoten ben¨otigt eine Fl¨ache aus O(n). Beweis. Einen vollst¨andigen Bin¨arbaum mit H¨ohe h bezeichnen wir hier mit Th . Offensichtlich hat Th genau 2h Bl¨atter. Es sei Sh die H¨ohe 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¨ache 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¨ache, h¨ochstens doppelt so groß ist wie die Knotenanzahl, also eine lineare Fl¨ache.
Bemerkung 2.40 (HV-, T-, H-Zeichnungen) • In HV-Zeichnungen werden die Knoten rechts oder unterhalb von ihren Vorg¨angern platziert. • Dies wird in sogenannten T-Zeichnungen verallgemeinert, indem man die Kinder rechts, unterhalb oder links von ihren Vorg¨angern platziert. • In H-Zeichnungen werden die Kinder rechts, unterhalb, links oder oberhalb von ihren Vorg¨angern platziert.
Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016
68
2.3 Zeichnen von k-n¨aren B¨aumen Die in Abschnitt 2.2.4 und 2.2.5 erl¨auterten Methoden der linksb¨undigen Zeichnung und der Teilbaum Zeichnung f¨ur Bin¨arb¨aume lassen sich unmittelbar auch auf k-n¨are B¨aume erweitern.
2.3.1 Algorithmus von Walker Idee Walker hat 1990 den RT-Algorithmus zum Zeichnen von beliebigen Wurzelb¨aumen 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¨aume mit mehr als zwei Nachfolgern an den inneren Knoten zu zeichnen k¨onnte man den RT-Algorithmus erweitern, indem man die Kinder von links nach rechts durchl¨auft und die entsprechenden Teilb¨aume der Reihe nach positioniert bzw. verschiebt. Hierdurch w¨urde jedoch Kriterium (B7) nicht erf¨ullt, da die Teilb¨aume so nahe wie m¨oglich nebeneinander platziert werden und sich kleine Teilb¨aume links zwischen großen anh¨aufen, siehe Abbildung 2.43 (a). Dieses Problem k¨onnte man l¨osen, indem man einen weiteren Durchlauf der Kinder von rechts nach links hinzuf¨ugt und diese von rechts nach links platziert, siehe Abbildung 2.43 (b). Betrachtet man dann die Durschnittswerte der horizontalen Koordinaten beider Durchl¨aufe f¨ur die Knoten, erf¨ullen wir Kriterien (B1)-(B8)5 , siehe Abbildung 2.43 (c). 5
(B4) muss hier nat¨urlich auf mehr als zwei Kinder erweitert werden.
Zeichnen von Graphen · Wintersemester 2015/16
69
Unsch¨on bleibt jedoch, dass hier zwischen großen Teilb¨aumen m¨oglichweise kleine Teilb¨aume 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¨aume T1 und T2 verglichen werden und der anzuf¨ugende Teilbaum T2 verschoben werden muss, so werden alle zwischen T1 und T2 liegenden Teilb¨aume 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¨ullt 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¨ullt werden. ohne Beweis
2.3.2 Chans Algorithmus Chans Algorithmus aus Abschnitt 2.2.8 kann auch auf Wurzelb¨aume 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¨ohne jedes inneren Knotens erh¨alt, mit einer Fl¨ache von O(n · 4 2·log(n) ) gezeichnet werden. ohne Beweis
2.4 Zeichnen von allgemeinen Wurzelb¨aumen Um Wurzelb¨aume zu zeichnen, in welchen es keine Ordnung auf den Kindern der innneren Knoten gibt, kann man nat¨urlich eine beliebige Ordnung w¨ahlen und nach obigen Algorithmen vorgehen. Weitere Ans¨atze werden nun beschrieben.
2.4.1 RHHV-Zeichnungen Mit Right Heavy-Horizontal Vertical Zeichnungen (RHHV-Zeichnungen) k¨onnen Wurzelb¨aume mit h¨ochstens zwei Nachfolgern f¨ur jeden inneren Knoten, d.h. Bin¨arb¨aume ohne Ordnung auf den Kindern, gezeichnet werden. Man schr¨ankt 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¨otigt. Da hierdurch die Links-Rechts-Ordnung der Kinder verloren gehen kann, eignet sich diese Verfahren jedoch nur f¨ur Wurzelb¨aumen ohne Ordnung auf den S¨ohnen. 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¨ur die (nichtleeren) Teilb¨aume der Wurzel von T auf. (divide) 3. F¨uge 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¨ochstens zwei Nachfolgern f¨ur jeden inneren Knoten und n Knoten. Dann gelten f¨ur eine RHHV-Zeichnung d(T ) folgende Aussagen. (1.) Die Breite von d(T ) ist h¨ochstens n − 1. (2.) Die H¨ohe von d(T ) ist aus O(log(n)). (3.) Die Fl¨ache 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¨ange 1. Damit ist die H¨ohe 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¨oßere Teilbaum immer rechts vom kleineren Teilbaum platziert wird, gilt f¨ur jede Kante e = {u, v} auf dem Weg von der Wurzel von T zu b, wo u ein Vorg¨anger 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¨ur Wurzelb¨aume mit h¨oheren Knotengrad definieren, so dass die Absch¨atzungen aus Satz 2.45 weiterhin gelten, siehe Abbildung 2.45.
max. Teilbaum
Abbildung 2.45: RHHV-Zeichnungen f¨ur Wurzelb¨aume 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¨ullt sind. 1. Jeder Knoten v ∈ V wird durch ein achsenparalleles Rechteck Rv dargestellt. Kanten werden nicht dargestellt. 2. F¨ur ein Blatt v hat Rv die Breite b(v) und die H¨ohe h(v), welches beides vorgegebene positive Zahlen sind. 3. Falls u ein Kind von v ist, so ist Ru vollst¨andig in Rv enthalten und es wird ein Mindestabstand zwischen den R¨andern eingehalten. 4. F¨ur zwei Geschwisterknoten u und v wird zwischen Ru und Rv ein horizontaler oder vertikaler Mindestabstand eingehalten, so dass die Rechtecke u¨ berschneidungsfrei sind. Beispiel 2.47 (Inklusionsdiagramm) Abbildung 2.46 zeigt ein Inklusionsdiagramm f¨ur einen Wurzelbaum. Die Fl¨ache eines Inklusionsdiagramms f¨ur einen Wurzelbaum T ist die Fl¨ache des Rechtecks der Wurzel von T . Gegeben: Frage:
I NCLUSION L AYOUT P ROBLEM (ILP) Ein Wurzelbaum T , positive Breiten und H¨ohen f¨ur alle Bl¨atter von T und eine positive Zahl ganze k. Gibt es ein Inklusionslayout von T mit Fl¨ache hochstens k?
Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016
72
Abbildung 2.46: Ein Inklusionslayout (rechts) f¨ur einen Wurzelbaum (links) Satz 2.48 ILP ist NP-vollst¨andig. Beweisidee. Reduktion von 3-PARTITION. Satz 2.49 ILP ist f¨ur Wurzelb¨aume mit h¨ochstens zwei Nachfolgern pro Knoten NP-vollst¨andig. Beweisidee. Reduktion von PARTITION.
2.4.3 Ornigramme In einem Ornigramm (englisch: tip over drawing) eines Wurzelbaumes werden die S¨ohne 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¨ur einen Wurzelbaum.
Abbildung 2.47: Ein Ornigramm (rechts) f¨ur einen Wurzelbaum (links) Ornigramme eignen sich zum Zeichnen von Wurzelb¨aumen 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¨aumen 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¨aumen besteht darin, die Knoten mit Tiefe i von T gleichm¨aßig auf Kreis Ci mit Radius i zu verteilen. Hierbei k¨onnen 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¨alt 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¨ur T . Sektormethode In der Sektormethode wird f¨ur jeden Knoten v ein Kreisabschnitt (Sektor) S(v) mit einem ¨ Offnungswinkel α(v) bestimmt, so dass α(v) = c · b(v), wobei c > 0 und b(v) die Anzahl der Bl¨atter 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¨attern abh¨angt, 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¨ussen wir die Knoten in T (v) in eine konvexe Teilmenge von Sektor S(v) platzieren. Zur Absch¨atzung der Fl¨ache einer radialen Zeichnung gelte ein Mindestabstand von 1 zwischen zwei Knoten, der Baum T habe die H¨ohe h und jeder Knoten von T habe h¨ochstens 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¨ache von h¨ochstens 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¨ache aus O(h2 · d2 ).
Abbildung 2.51: Radiale Zeichnung mit großer Fl¨ache Radiale Zeichnungen werden auch oft f¨ur freie B¨aume (B¨aume ohne Wurzel) verwendet, siehe Abschnitt 2.5.1.
2.5 Zeichnen von B¨aumen ohne Wurzel Wir befassen uns nun mit dem Zeichnen von B¨aumen, in welchen keine Wurzel ausgezeichnet ist. Ein kreisfreier zusammenh¨angender Graph ohne ausgezeichnete Wurzel wird auch freier Baum genannt. Eine beliebte M¨oglichkeit freie B¨aume zu zeichnen, besteht darin, eine geeignete Wurzel zu w¨ahlen und dann einen Algorithmus zum Zeichnen von allgemeinen Wurzelb¨aumen anzuwenden.
2.5.1 Radiale Zeichnungen Radiale Zeichnungen werden oft f¨ur freie B¨aume verwendet. Hier wird eine errechnete Wurzel im Mittelpunkt plaziert und die anderen Knoten auf konzentrischen Kreise um diesen Mittelpunkt herum. Um eine Wurzel auzuw¨ahlen, betrachten wir die folgenden Notationen f¨ur zusammenh¨angenden ungerichteten Graphen G = (V, E). • Der Abstand zweier Knoten u, v ∈ V ist d(u, v) = die L¨ange (Kantenanzahl) eines k¨urzesten Weges zwischen u und v.
Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016
76
• Die Exzentrizit¨at 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¨ahlt man in einem freien Baum T einen Knoten aus dem Zentrum z(T ) als Wurzel, so hat der entstehende Wurzelbaum eine minimale H¨ohe. 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¨ochstens zwei Knoten hat, dann haben wir das Zentrum gefunden. 2. Falls T mehr als zwei Knoten hat, so l¨oschen wir alle Bl¨atter aus T , bis T h¨ochstens zwei Knoten besitzt.
Zeichnen von Graphen · Wintersemester 2015/16
77
Eine radiale Zeichnung f¨ur einen freien Baum T = (V, E) erh¨alt man, indem man, • falls |z(T )| = 1, den Knoten im Zentrum als Wurzel ausw¨ahlt. • falls |z(T )| = 2, mittig auf die Kante zwischen den beiden Knoten in z(T ) einen neuen Knoten platziert und diesen als Wurzel ausw¨ahlt. Den so definierten Wurzelbaum kann man dann wie in Abschnitt 2.4.4 zeichnen.
¨ 2.6 Ubungsaufgaben Aufgabe 2.1 Geben Sie jeweils eine untere Schranke m(n) und eine obere Schranke M(n) f¨ur 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¨atter hat T mindestens, falls jeder innere Knoten mindestens zwei Nachfolger hat? (b) Wie hoch ist T h¨ochstens, falls jeder innere Knoten mindestens zwei Nachfolger hat? (c) Wieviele Bl¨atter und welche H¨ohe hat T , falls T ein vollst¨andiger k-n¨arer Baum ist? Ihre Schranken sollen m¨oglichst 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¨ur den Bin¨arbaum 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¨arbaum 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¨aren Baumes eindeutig rekonstruiert werden, wenn die Schl¨ussel 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¨ur den Bin¨arbaum mit Wurzel w aus Abbildung 2.54 alle isomorphen Teilb¨aume 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¨arbaum 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¨ochstens 24 gezeichnet werden kann. Aufgabe 2.7 Sch¨atzen Sie im Beweis von Satz 2.8 die Gr¨oße des Baumes T nach oben in Abh¨angigkeit 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¨ur alle Knoten v eines Bin¨arbaumes den Wert Tiefe(v) berechnet. Aufgabe 2.9 Geben Sie eine Inorder Zeichnung f¨ur den Bin¨arbaum mit Wurzel w in Abbildung 2.55 an. Welche Breite, H¨ohe und Fl¨ache ben¨otigt Ihre Zeichnung? Aufgabe 2.10 Wir definieren drei neue Zeichenalgorithmen f¨ur Bin¨arb¨aume, 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¨arbaum zu Aufgabe 2.9 (a) x(v) = Preorder-Nummer(v) (b) x(v) = Postorder-Nummer(v) (c) x(v) = Levelorder-Nummer(v) ¨ Welche der Asthetikkriterien (B1)-(B8) werden durch diese Algorithmen jeweils erf¨ullt? Aufgabe 2.11 Geben Sie eine linksb¨undige Zeichnung f¨ur den Bin¨arbaum mit Wurzel g in Abbildung 2.53 an. Welche Breite, H¨ohe und Fl¨ache ben¨otigt Ihre Zeichnung? Aufgabe 2.12 Zeichen Sie den Bin¨arbaum aus Beispiel 2.16 als Teilbaum eines vollst¨andigen Bin¨arbaumes der H¨ohe 4. W¨ahlen Sie anders als in Beispiel 2.18 eine feste H¨ohe zwischen den Schichten und variable Winkel f¨ur die Kantenf¨uhrung. Vergleichen Sie die Breite, H¨ohe und Fl¨ache der erhaltenden Zeichnung mit denen der Zeichnung in Beispiel 2.18. Aufgabe 2.13 Bestimmen Sie f¨ur (a) den Baum in Abbildung 2.22 (b) die zwei B¨aume in Abbildung 2.23 schrittweise die Koordinaten der Baumknoten nach dem Wetherell-Shannon Algorithmus. Welche Breite, H¨ohe und Fl¨ache ben¨otigten die Zeichnungen? Aufgabe 2.14 Geben Sie einen Bin¨arbaum T an, so die vom Wetherell-Shannon Algorithmus erzeugte Zeichnung d(T ) Kriterium (B6) nicht erf¨ullt. Aufgabe 2.15 Zeichnen Sie den Bin¨arbaum in Abbildung 2.22 mit dem RT-Algorithmus. Welche Breite, H¨ohe und Fl¨ache ben¨otigt Ihre Zeichnung?
80
Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016
Aufgabe 2.16 Zeigen Sie, dass der RT-Algorithmus f¨ur B¨aume mit n Knoten eine Fl¨ache von Θ(n2 ) ben¨otigen kann. Hinweis: Betrachten Sie die B¨aume 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¨ohe und Fl¨ache ben¨otigt Ihre Zeichnung? Aufgabe 2.18 Zeichnen Sie den Baum aus Abbildung 2.54 mit dem zweiten Ansatz von Chans Algorithmus. Welche Breite, H¨ohe und Fl¨ache ben¨otigt Ihre Zeichnung? Aufgabe 2.19 Geben Sie f¨ur die vollst¨andigen Bin¨arb¨aume mit H¨ohe h ∈ {1, 2, 3, 4, 5} eine HV-Darstellung mit m¨oglichst geringer Fl¨ache an. Hinweis: Nutzen Sie die Regel aus der Beweisidee zu Satz 2.37. Aufgabe 2.20 Vervollst¨andigen Sie den Beweis von Satz 2.37. Hinweis: Stellen Sie eine geeignete Rekursionsgleichung auf und gehen Sie a¨ hnlich wie im Beweis von Satz 2.39 vor. Aufgabe 2.21 Geben Sie eine RHHV-Zeichnung f¨ur den Wurzelbaum in Abbildung 2.54 an. Welche Breite, H¨ohe und Fl¨ache ben¨otigt 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¨ochstens zwei Nachfolgern f¨ur jeden inneren Knoten. Erg¨angen Sie dazu z.B. den Algorithmus in Abbildung 2.56, welcher durch den Aufruf RHHV(w, 0, 0) eine RHHV-Zeichnung f¨ur den Eingabebaum T bestimmen soll. Aufgabe 2.23 Geben Sie ein Inklusionsdiagramm f¨ur den Wurzelbaum in Abbildung 2.54 an. Welche Fl¨ache ben¨otigt Ihre Zeichnung? Aufgabe 2.24 Bestimmen Sie f¨ur die zwei (freien) B¨aume aus Abbildung 2.1 jeweils das Zentrum. Aufgabe 2.25 Geben Sie f¨ur die zwei (freien) B¨aume 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¨oß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¨aumen 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¨ur gerichtete Graphen. 83
Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016
84
• Ein gerichteter Graph (englisch: digraph, als Abk¨urzung 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¨alt. Einen azyklischen Graphen bezeichnet man auch als DAG, als Abk¨urzung 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¨ur 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¨oßeren Nummern gerichtet sind. Formal ist eine topologische Sortierung f¨ur G eine bijektive Abbildung h : V → {1, . . . , |V |}, so dass h(u) < h(v) f¨ur 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¨alt 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¨oglichst wenigen Kanten umgedreht, um den Graphen azyklisch zu machen. Damit k¨onnen 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¨otigt wird, platziert man auf den entsprechenden ,,langen“ Kanten k¨unstliche 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¨oglichst wenige Kantenkreuzungen entstehen. Hierzu betrachtet man h¨aufig schrittweise die Kanten zwischen je zwei aufeinanderfolgenden Schichten. (4) Horizontale Koordinatenzuweisung und Kantenf¨uhrung (Abschnitt 3.5) Die im zweiten Schritt eingef¨ugten k¨unstlichen Knoten erzeugen m¨oglicherweise 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¨alt, so wollen wir diese durch m¨oglichst wenige Kanten zerst¨oren. 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¨oglichst kleine Teilmenge Ef ⊆ E, so dass (V, E − Ef ) azyklisch ist.
In unserem Beispiel aus Abbildung 3.1 m¨ussen 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¨oglichst 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¨atzbar gute L¨osungen f¨ur diese Probleme liefern. Wir stellen nun einige dieser Heuristiken vor und setzen voraus, dass der betrachtete gerichtete Graph keine gerichteten Kreise der L¨ange 2, d.h. Kreise der Form (u, v), (v, u) enth¨alt. Falls wir einen solchen Kreis vorfinden, l¨oschen wir beide Kanten aus dem Graph, wenden einen der folgenden Algorithmen an und f¨ugen 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 a¨ 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¨oglichst klein ist.
Damit besteht eine einfache Heuristik f¨ur das M AX ACYCLIC S UBDIGRAPH Problem darin, eine beliebige, z.B. mit Breitensuche oder Tiefensuche bestimmte Ordnung o f¨ur die Knoten zu w¨ahlen und alle Kanten (u, v) mit o(u) > o(v) zu l¨oschen bzw. die alle Kanten (u, v) mit o(u) < o(v) auszuw¨ahlen. 1
Der Begriff Heuristik kommt aus dem Griechischen und bedeutet finden oder entdecken. Archimedes rief vor u¨ 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¨osung eines Problems eingesetzt wird. Ein heuristischer Algorithmus besteht aus der algorithmischen Umsetzung einer Heuristik. Diese Algorithmen nutzen oft spezielle Annahmen, Faustregeln, Sch¨atzungen, 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: fur ¨ 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¨uhren.
Algorithmus 2 Der folgende Greedy-Algorithmus l¨oscht an jedem Knoten entweder alle einlaufenden oder alle auslaufenden Kanten. 1: Ea = ∅; 2: fur ¨ alle v ∈ V tue { 3: if |δ + (v)| ≥ |δ − (v)| 4: then Ea = Ea ∪ δ + (v) 5: else Ea = Ea ∪ δ − (v) 6: l¨osche δ(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¨ur solche Knoten δ + (v) bzw. δ − (v) anstatt δ(v) zu entfernen. Wir setzen hier voraus, dass G schwach zusammenh¨angend ist, d.h., dass der G zugrunde liegende ungerichtete Graph zusammenh¨angend 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¨ahle 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¨ange 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¨ur 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¨ohe der Schichtung. Den Wert max1≤i≤h |Li | bezeichnen wir als die Breite der Schichtung. Die L¨ange 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¨ange 1 haben. Bei einfachen Schichtungen verlaufen die Kanten also nur zwischen benachbarten Schichten. In den Folgeschritten nach der Schichteneinordnung (Abschnitt 3.4) ben¨otigt man oft eine einfache Schichtung f¨ur den gegebenen Graphen. Aus einer beliebigen Schichtung L kann man durch Einf¨ugen von k¨unstlichen Knoten auf Kanten mit L¨ange k > 1 eine einfache Schichtung L′ gewinnen. Dazu ersetzen wir jede Kante (u, v) mit L¨ange k > 1 durch einen Weg p = (u = v1 , . . . , vk = v) der L¨ange 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¨unstlicher Knoten auf p platziert, siehe Abbildung 3.5.
Abbildung 3.5: Eine einfache Schichtung mit k¨unstlichen Knoten Die Anzahl der k¨unstlichen Knoten soll aus mehreren Gr¨unden m¨oglichst gering seien. Die Laufzeit der nachfolgenden Schritte h¨angt mit von der Anzahl der k¨unstlichen Knoten
Zeichnen von Graphen · Wintersemester 2015/16
91
ab. Die Zeichnung wird an den Positionen der k¨unstlichen Knoten m¨oglicherweise Kantenknickpunkte besitzen. Viele k¨unstliche Knoten auf einer Kante erzeugen lange Kanten im Layout. In Abschnitt 3.3.3 betrachten wir einen Algorithmus zur Minimierung der Anzahl der k¨unstlichen Knoten. Wir geben nun Algorithmen zum Finden einer Schichtung L in gerichteten azyklischen Graphen G = (V, E) an. Hier erh¨alt jeder Knoten u ∈ V , u¨ ber die Schicht Li in welcher er positioniert wird, die y-Koordinate y(u) = i.
3.3.1 L¨angster-Pfad-Schichtung Man kann eine Schichteneinordnung mit minimaler H¨ohe f¨ur einen gerichteten Graphen G = (V, E) berechnen, indem man beachtet, dass die L¨ange eines l¨angsten gerichteten Weges eine untere Schranke f¨ur die H¨ohe einer Schichteneinordnung ist. Eine Schichteneinordnung mit genau dieser unteren Schranke als H¨ohe kann man wie folgt finden. 1. Platziere alle Senken von G auf Schicht L1 . 2. F¨ur 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¨ugt diese in Schicht Li ein und l¨oscht 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¨oschen von Kanten den Ausgangsgrad 0, so wird u hinten in Q eingef¨ugt. Wenn alle alten Knoten aus Q abgearbeitet sind, wird i um eins erh¨oht und die neuen Knoten werden zu den alten. Die Laufzeit dieser Methode betr¨agt O(|V | + |E|). Der Nachteil besteht darin, dass die Breite der Schichteinordnung nicht betrachtet wird.
3.3.2 Schichtung mit fester Breite F¨ur eine gegebene Breite w ≥ 3 ist es NP-schwer eine Schichtung mit minimaler H¨ohe zu finden (Reduktion von M ULTIPROCESSOR S CHEDULING P ROBLEM (MSP)). Wir wollen N¨aherungsl¨osungen f¨ur 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¨oscht wodurch neue Senken entstehen k¨onnen, 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¨oglichst 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¨onnte die isolierten Knoten auf die ersten n4 Schichten platzieren. Dies w¨urde zusammen mit dem gerichteten Weg aus n2 Knoten eine H¨ohe von 3n ergeben, siehe Abbildung 3.6 (b). Eine 4 optimale L¨osung 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¨uh genug ber¨ucksichtigt 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¨uglich 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¨urlichen 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¨ochstens w und absch¨atzbarer H¨ohe 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¨ankung, da die Endknoten dieser Kanten nicht entfernt werden und somit die Breite der Schichtung nicht ge¨andert 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¨ahle 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¨ahle 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¨ur 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¨ur Quellen q ist initial {π(u) | u ∈ N − (q)} = ∅ und f¨ur 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¨ur 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¨ohe einer Schichtung mit Breite w. Dann gilt f¨ur die H¨ohe der CG-Schichtung h ≤ (2 −
2 )hmin . w ohne Beweis
Damit liefert der CG-Algorithmus f¨ur w ≤ 2 eine optimale L¨osung.
3.3.3 Schichtung mit Minimierung der Anzahl der kunstlichen ¨ Knoten Man kann in polynomieller Zeit eine Schichtung bestimmen, welche minimal viele k¨unstliche 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¨ur alle Knoten u ∈ V (2.) y(u) − y(v) ≥ 1 f¨ur alle Kanten (u, v) ∈ E Die Funktion y : V 7→ N definiert durch Li = {u ∈ V | y(u) = i} eine Schichtung Ly f¨ur G. Wir bezeichnen mit f die Summe aller um eins reduzierten Kantenl¨angen in dieser Schichtung. X f= (y(u) − y(v) − 1) (u,v)∈E
Dann entspricht f zugleich der Anzahl der k¨unstlichen 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¨ost werden.
3.4 Kreuzungsminimierung In diesem Abschnitt wollen wir einen gerichteten Graphen, f¨ur welchen wir bereits eine einfache Schichtung bestimmt haben, mit m¨oglichst wenigen Kantenkreuzungen zeichnen.
Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016
98
Die Anzahl der Kantenkreuzungen h¨angt 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¨ur die Knoten zu bestimmen, ist aber schon f¨ur 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¨onnen die Knoten in L1 und L2 so angeordnet werden, dass es zwischen den beiden Schichten h¨ochstens k Kantenkreuzungen gibt?
Das 2-S CHICHTEN -K REUZUNGSPROBLEM ist NP-vollst¨andig. 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¨ahle eine Knotenreihenfolge f¨ur die Knoten in Schicht L1 . 2. Wiederhole solange sich die Anzahl der Kantenkreuzungen vermindern l¨asst. (a) F¨ur 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¨ur 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¨ur die Knoten in Schicht Li−1 . Bestimme eine Ordnung f¨ur 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¨ur 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¨ogliche Anzahl von Kantenkreuzungen bez¨uglich 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¨ur 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¨angig und nicht von den anderen Knoten aus L2 . Dies f¨uhrt 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¨ur die Schicht L1 . • F¨ur 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¨ur 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¨ur alle Paare (u, v) ∈ L22 = L2 × L2 an. Hierbei ist x1 die
Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016
100
gezeichnete Knotenordnung f¨ur 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¨onnen zur Berechnung von cross(G, x1 , x2 ) und f¨ur 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¨ur die Schichten L1 bzw. L2 , dann gilt X cross(G, x1 , x2 ) = cuv x2 (u) 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 a¨ 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¨achsten Heuristik w¨ahlen 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¨achsten Schritt einen Knoten aus L2 , welcher mit seinen inzidenten Kanten mit den inzidenten Kanten der bisher gew¨ahlten Knoten von L2 die wenigsten Kreuzungen erzeugt. Das Vorgehen ist offenbar analog zum Sortierten durch Ausw¨ahlen. 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¨achsten Abschnitt betrachten wir Methoden ohne Kreuzungsmatrix mit linearer Laufzeit.
3.4.3 Barycenter und Median Methoden Die am h¨aufigsten angewendeten L¨osungsans¨atze f¨ur das 2-Schichten-Kreuzungsproblem sind Varianten der Barycenter Heuristik. Barycenter Heuristik Intuitiv kann man vermuten, dass man wenige Kantenkreuzungen erh¨alt, wenn man Knoten nahe bei ihren Nachbarn platziert. 1. Die Position von Knoten v ∈ L2 wird u¨ ber die durchschnittliche Position seiner Nachbarn in L1 gew¨ahlt. X 1 Barycenter(v) = x1 (u) outdeg(v) u∈N (v)
(F¨ur Knoten v mit outdeg(v) = 0 definieren wir Barycenter(v) = 0.) 2. Zur Bestimmung der Position x2 (v) f¨ur 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¨ur 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¨ussen 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¨ur 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¨ur 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¨ahlt werden. Diese merkw¨urdigen Regeln sind z.B. f¨ur den Beweis der Absch¨atzung in Satz 3.23 wichtig. Die Anzahl der Kantenkreuzungen der Median Methode f¨ur 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¨ussen 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¨ur 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¨ur die Knoten in L1 . Dann gilt Median(G, x1 ) ≤ 3 · opt(G, x1 ). ohne Beweis
F¨ur 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¨ur die Knoten in L1 und jeder Knoten in L2 hat einen Grad h¨ochstens 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¨ur die Knoten in L1 . Falls opt(G, x1 ) = 0, dann gilt Barycenter(G, x1 ) = Median(G, x1 ) = 0. ¨ Beweis. Ubungsaufgabe. Andererseits liefern beide Heuristiken im Allgemeinen keine optimalen L¨osungen. Satz 3.27 (1.) F¨ur jede nat¨urliche Zahl k ≥ 2 gibt es einen gerichteten Graphen Gk = (V, E) mit einer Schichtung {L1 , L2 } f¨ur Gk mit |L1 | = k 2 + k − 1 und |L2 | = 2 und eine Anordnung x1 f¨ur L1 , so dass p Barycenter(Gk , x1 ) ∈ Ω( |L1 |). opt(Gk , x1 ) (2.) F¨ur jede nat¨urliche Zahl k gibt es einen gerichteten Graphen Gk = (V, E) mit einer Schichtung {L1 , L2 } f¨ur Gk mit |L1 | = 4k + 2 und |L2 | = 2 und eine Anordnung x1 f¨ur 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¨ur 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¨are jedoch erst v und dann u in L2 zu platzieren (wie in Abbidung 3.13(rechts)), pda man dann nur eine Kantenkreuzung 2 erh¨alt. 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¨are 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¨alt. 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¨ur 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¨ur L1 bzw. L2 . Um eine Knotenanordnung x∗2 f¨ur L2 zu bestimmen, welche die Anzahl der Kantenkreuzungen minimiert, kodieren wir jede m¨ogliche Knotenanordnung x2 f¨ur L2 durch einen |L2 | bin¨aren Vektor x ∈ {0, 1}( 2 ) , dessen Eintr¨age xui uj f¨ur i < j definiert sind als 1, falls x2 (ui ) < x2 (uj ) xui uj = 0, falls x2 (ui ) > x2 (uj ) (Jede Knotenanordnung f¨ur L2 l¨asst sich durch einen solchen Vektor beschreiben, aber nicht jeder solcher Vektor definiert eine Knotenanordnung f¨ur L2 . Mit einer unten beschriebenen Zusatzbedingung (1.) kann man jedoch sichern, dass ein solcher Vektor eine Knotenanordnung f¨ur L2 definiert.) Aus Lemma 3.14 folgt dann X cu i u j cross(G, x1 , x2 ) = x2 (ui ) 1 werden polygonal gezeichnet, so dass alle Positionen der eingef¨ugten k¨unstlichen Knoten der Kante auf dem Kantenzug liegen. Die k¨unstlichen Knoten selbst werden nun entfernt. Wenn der Abstand δ zwischen zwei aufeinanderfolgenden Knoten einer Schicht breit ¨ genug gew¨ahlt wird, gibt es so keine unn¨otigen Uberschneidungen zwischen Knoten und Kanten.
¨ 3.6 Ubungsaufgaben 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¨ur den gerichteten Graph G = (V, E) aus Abbildung 3.15 eine m¨oglichst 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 u¨ 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¨ur den gerichteten Graphen G in Abbildung 3.16 eine Schichtung mit Hilfe (a) L¨angster-Pfad-Schichtung (b) Coffman-Graham-Schichtung mit Breite h¨ochstens 2. Hinweis Bestimmen Sie zun¨achst die transitive Reduktion von G. Transformieren Sie die gefundenen Schichtungen durch Einf¨ugen von k¨unstlichen 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¨urliche Zahl w an, so dass die Coffman-Graham-Schichtung von G mit Breite h¨ochstens w nicht die minimale H¨ohe erreicht. Aufgabe 3.7 Geben Sie die Kreuzungszahlen cuv f¨ur 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: Ubung 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¨ur den geschichtenen gerichteten Graphen in Abbildung 3.18 nach der Layer-by-Layer-Sweep Methode eine Darstellung mit m¨oglichst geringer Anzahl von Kantenkreuzungen. L¨osen 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¨unf Ergebnissen. 1
6
2
7
3
4
8
9
12
13
5
10
11
¨ Abbildung 3.18: Ubung zur Kreuzungsminimierung Aufgabe 3.10 Beweisen Sie Satz 3.26. Aufgabe 3.11 Wenden Sie die Hierachischen Methode an, um eine Zeichnung f¨ur den C4 = ({v1 , v2 , v3 , v4 }, {(v1 , v2 ), (v2 , v3 ), (v3 , v4 ), (v4 , v1 )}) zu bestimmen.
Kapitel 4 Kr¨aftebasierte Zeichenverfahren 4.1 Modell Wir betrachten nun kr¨aftebasierte Verfahren zum Zeichnen von ungerichteten Graphen. Die Grundidee besteht in der Betrachtung eines physikalischen Kr¨aftemodells. • Knoten = b elektrisch geladene Partikel, die sich gegenseitig abstoßen
• Kanten = b Federn (englisch: springs), die den Abstoßkr¨aften 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¨afte an jedem Partikel m¨oglichst 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¨aftebasierte Verfahren Wir erl¨autern nun verschiedene zweidimensionale kr¨aftebasierte Ans¨atze f¨ur ungerichtete Graphen G = (V, E). Wir identifizieren dabei Knoten und Kanten mit ihren physikalischen Entsprechungen. Zun¨achst betrachten wir die auf die Knoten wirkenden Kr¨afte genauer. Kr¨afte sind sogenannte vektorielle Gr¨oßen, welche durch ihre St¨arke und Richtung eindeutig bestimmt sind. 113
Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016
114
Zur Darstellung von Kr¨aften eignen sich Vektoren, welche eine Richtung und eine L¨ange 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¨ange des Vektors der Pfeill¨ange. Zwei Pfeile, die gleichlang, parallel und gleichorientiert sind, beschreiben den gleichen Vektor. Somit kann jede Kraft F als ein Pfeil mit L¨ange 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¨angt von den Positionen pv = (x(v), y(v)) ∈ 2 R aller Knoten v ∈ V ab und setzt sich zusammen aus den R¨uckstoßkr¨aften der anderen Knoten und der Federkr¨afte der mit v inzidenten Kanten, d.h. X X F (pv ) = R¨uckstoßkraft(pu , pv ) + Federkraft(pu , pv ). u∈V −{v}
u∈N (v)
F¨ur einen Punkt pv = (x(v), y(v)) ∈ R2 sei p kpv k = x(v)2 + y(v)2
die Euklidische Norm von pv . F¨ur einen Differenzvektor pv − pu , d.h. einer anziehenden (Feder)Kraft an v, definieren wir seine L¨ange als d(pu , pv ) = kpv − pu k. Analog sei f¨ur einen Differenzvektor pu − pv , d.h f¨ur eine abstoßende (R¨uckstoß)Kraft an v, seine L¨ange d(pu , pv ) = kpu − pv k. pv −pu pu −pv Durch d(p bzw. d(p erh¨alt man einen normalisierten Differenzenvektor (Einu ,pv ) u ,pv ) heitsvektor). Zur Wahl der R¨uckstoßkraft und Federkraft: • Die R¨uckstoß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¨uckstoßkraft(pu , pv ) = · , 2 d(pu , pv ) d(pu , pv ) w¨ahlen, wobei R eine R¨uckstoßkonstante (St¨arke 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¨ange ℓ{u,v} der Feder zwischen u und v (dem gew¨unschten 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¨ahlen, wobei S{u,v} ein Steife-Parameter f¨ur die Feder ist. Je steifer die Feder ist, desto gr¨oßer ist die Tendenz zur Ideall¨ange ℓ{u,v} der Kante.
Zeichnen von Graphen · Wintersemester 2015/16
115
Algorithmus Kr¨aftebasierte Verfahren (Spring Embedder Algorithmen) versuchen die Knotenpositionen zu bestimmen, f¨ur welche das physikalische Modell einen Zustand er→ − reicht, so dass F (pv ) = 0 f¨ur alle v ∈ V gilt. Hierzu geht man meistens wie folgt vor. • Beginne mit einer beliebigen (zuf¨alligen) Position pv = (x(v), y(v)) f¨ur die Knoten v ∈V. • Iteriere – Berechne F (pv ) f¨ur alle Knoten v ∈ V . ¨ – Andere 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¨angigkeit von der Anzahl der bisher durchgef¨uhrten Iterationen gew¨ahlt wird. ¨ • bis die Anderung von pv klein genug ist ¨ Die Art der Wahl von µ, ein Abbruchkriterium und ob man alle Anderungen der Positionen sequentiell oder parallel ausf¨uhrt sind einige der zu festzulegenden Punkte bei einem speziellen kr¨aftebasierten Ansatz. Die so bestimmten Knotenpositionen definieren die Zeichnung.
4.2 Algorithmus von Tutte Die a¨ lteste kr¨aftebasierte Zeichenvariante stammt von Tutte (1960), welche mit R = 0 (keine abstoßenden Kr¨afte mehr), Se = 1 und ℓe = 0 (keine Federn) f¨ur alle Kanten e ∈ E als Spezialfall von obiger Funktion F (pv ) definiert werden kann. F (pv ) wird ersetzt durch P P FTutte (pv ) = R¨ u 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¨ur alle v ∈ V einen stabilen Zustand F (pv ) = (0, 0) f¨ur 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¨ur alle v ∈ V1 . Damit gilt f¨ur 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¨ur 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¨ur 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¨ur 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 u¨ ber die unbekannten Positionen auf die linke Seite. Es gilt f¨ur 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¨alt man aus (4.2) f¨ur 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¨osen. (1.) Das erste Gleichungssystem f¨ur 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¨osung 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¨ur 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¨osung 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¨afte. Sie konstruieren f¨ur einen zusammenh¨angenden Graphen G = (V, E) eine
Zeichnen von Graphen · Wintersemester 2015/16
119
Darstellung, so dass der Abstand d(pu , pv ) = kpu − pv k m¨oglichst gut der L¨ange dist(u, v) eines k¨urzesten 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¨ahlt, dass diese stark sind f¨ur 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¨ur eine minimale Gesamtenergie sind ∂η ∂η = 0 und = 0 f¨ur alle v ∈ V, ∂x(v) ∂y(v) also dass die partiellen Ableitungen von η nach nach jeder Variablen Null ergibt. Dies f¨uhrt auf 2|V | nichtlineare Gleichungen. Es gibt schnelle Approximationen zur L¨osung 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¨achere Kraft ausge¨ubt. W¨ahle R¨uckstoß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¨agt vor: • Steife-Parameter S{u,v} = 0.2 • nat¨urlichen Kantenl¨ange ℓ{u,v} = 1.0 • R¨uckstoßkonstante R = 1.0 • Schrittweite µ = 0.1
4.5 Algorithmus von Fruchterman und Reingold Fruchterman und Reingold (1991) ersetzen R¨uckstoßkraft(pu , pv ) durch R¨uckstoß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¨ahlt man hier eine u¨ berproportionale Kraftzunahme mit der Distanz.
4.6 Algorithmus von Frick, Ludwig und Mehldau Frick, Ludwig und Mehldau (1995) w¨ahlen Kr¨afte, welche ohne Quadratwurzeln berechnet werden k¨onnen durch R¨uckstoß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¨ur sorgt, dass Knoten mit hohem Grad weniger Anzie-
Zeichnen von Graphen · Wintersemester 2015/16
121
¨ 4.7 Ubungsaufgaben Aufgabe 4.1 Geben Sie Kr¨afte f¨ur ein zweidimensionales kr¨aftebasiertes Layoutverfahren an, die geeignet sind, um (a) einen Knoten in der N¨ahe des Ursprungs (0, 0) zu halten, (b) einen Knoten in der N¨ahe einer vorgegebenen Position zu halten, (c) einen Knoten in der N¨ahe 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: Ubung 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 Anderung an den Knotenpositionen vornimmt, ¨ (b) so dass ein Spring-Embedder-Algorithmus Anderungen 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¨ullt 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¨urfen 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¨uhrung nicht genau festgelegt ist. Abbildung 5.1 zeigt eine planare Einbettung eines planaren Graphen. Die Art der Kantenf¨uhrung 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¨uhrung. 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¨angende Bereiche, welche man als Fl¨achen (Gebiete, Facetten oder L¨ander) bezeichnet. Eine Fl¨ache 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¨ankte Fl¨ache, die sogenannte a¨ ußere Fl¨ache. Die restlichen Fl¨achen heißen auch innere Fl¨achen. Die planare Einbettung in Abbildung 5.3 hat 4 Fl¨achen (3 innere und 1 a¨ ußere). innere Flächen
äußere Fläche
Abbildung 5.3: Eine planare Einbettung und deren Fl¨achen F¨ur eine Fl¨ache f einer planaren Einbettung eines planaren Graphen sei ℓ(f ) die L¨ange 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¨ahlt. Lemma 5.3 F¨ur jede planare Einbettung eines planaren Graphen G = (V, E) mit Fl¨achenmenge F gilt X ℓ(f ) = 2|E|. f ∈F
Zeichnen von Graphen · Wintersemester 2015/16
125
Beweis. Jede Kante liegt an genau zwei Fl¨achen oder kommt zweimal auf dem Rand einer Fl¨ache vor. Als Datenstruktur f¨ur planare Einbettungen eignen sich Knoten-Uhrzeigerlisten. F¨ur 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¨ur 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¨ur eine planare Einbettung sind die Fl¨achen-Uhrzeigerlisten wie folgt definiert. F¨ur jede innere Fl¨ache werden die Knoten auf dem Rand im Uhrzeigersinn beginnend beim Knoten mit kleinstem Index durchlaufen. F¨ur die a¨ ußere Fl¨ache werden die Knoten auf dem Rand gegen den Uhrzeigersinn beginnend beim Knoten mit kleinstem Index durchlaufen. Beispiel 5.5 (Fl¨achen-Uhrzeigerlisten mit Knoten) Die Fl¨achen-Uhrzeigerlisten mit Knoten f¨ur 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¨achen-Uhrzeigerlisten anstelle der Knoten auch die Kanten auf dem Rand f¨ur innere Fl¨achen im Uhrzeigersinn beginnend bei der Kante mit kleinstem Index durchlaufen. F¨ur die a¨ ußere Fl¨ache werden die Kanten auf dem Rand gegen den Uhrzeigersinn beginnend bei der Kante mit kleinstem Index durchlaufen. Beispiel 5.6 (Fl¨achen-Uhrzeigerlisten mit Kanten) Die Fl¨achen-Uhrzeigerlisten mit Kanten f¨ur 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¨achen-Uhrzeigerlisten nicht eindeutig bestimmt. Dies zeigt die zweite planare Einbettung f¨ur den Graph aus Abbildung 5.4 in Abbildung 5.5, welche die gleiche KnotenUhrzeigerlisten und Fl¨achen-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¨ur den Graph aus Abbildung 5.4 Zwei planare Einbettungen f¨ur einen planaren Graphen mit gleichen Knoten-Uhrzeigerlisten oder Fl¨achen-Uhrzeigerlisten heißen kombinatorisch a¨ quivalent. Jede planare Einbettung f¨ur einen planaren Graphen zu vorgegebenen Knoten-Uhrzeigerlisten oder Fl¨achenUhrzeigerlisten 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¨achen 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¨angender planar eingebetteter Graph mit Fl¨achenmenge F . Dann gilt |V | + |F | − |E| = 2. Beweis. Es sei G = (V, E) ein zusammenh¨angender planar eingebetteter Graph mit Fl¨achenmenge F . Wir beweisen die Aussage induktiv u¨ ber die Anzahl der Fl¨achen |F |. Falls G genau |F | = 1 Fl¨ache 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¨achen und die Behauptung gelte f¨ur alle zusammenh¨angenden planar eingebetteten Graphen mit h¨ochstens |F | − 1 Fl¨achen. Da |F | ≥ 2 gilt, ist G kein Baum. Es gibt also einen Kreis {v1 , v2 }, {v2 , v3 }, . . . , {vn , v1 } ∈ E in G. Durch L¨oschen einer Kante {vi , vi+1 } aus diesem Kreis, erhalten wir einen Graphen mit |F | − 1 Fl¨achen 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¨ullt mit 4 Fl¨achen, 8 Kanten und 6 Knoten offenbar die Eulersche Formel. Bemerkung 5.8 (1.) Die Eulersche Formel gilt nicht f¨ur unzusammenh¨angende Graphen. F¨ur 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¨achen. Korollar 5.9 Ein zusammenh¨angender planarer Graph ohne Kreise hat n − 1 Kanten. Beweis. Setze in Satz 5.7 |F | = 1. Ein zusammenh¨angender Graph ohne Kreis heißt Baum und ist offenbar immer planar. W¨ahrend allgemeine Graphen mit n Knoten bis zu n(n−1) Kanten haben, k¨onnen pla2 nare Graphen nur linear in der Knotenanzahl viele Kanten haben, d.h. planare Graphen k¨onnen nicht beliebig dicht seien. Lemma 5.10 Es sei G = (V, E) ein zusammenh¨angender 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¨achenmenge F . Da G mindestens 3 Knoten hat und zusammenh¨angend ist, gilt ℓ(f ) ≥ 3 f¨ur jede Fl¨ache 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 Ubungsaufgabe 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¨andige und vollst¨andig bipartite Graphen. Ein Graph heißt vollst¨andig, falls je zwei Knoten durch eine Kante verbunden sind. Einen vollst¨andigen Graphen mit n Knoten bezeichnet man kurz mit Kn . Kn = ({v1 , . . . , vn }, {{vi , vj } | 1 ≤ i < j ≤ n}) Ein Graph heißt vollst¨andig 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¨andigen bipartiten Graphen mit einer Partition in zwei Mengen der Gr¨oß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¨angend und hat 5 Knoten und 10 Kanten. Widerspruch zu Lemma 5.10(1). Um die Nichtplanarit¨at des K3,3 zu zeigen, ben¨otigt man eine genauere Absch¨atzung f¨ur 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¨angender planarer Graph. Dann gilt: |E| ≤ 2 · |V | − 4 ¨ Beweis. Ubungsaufgabe 5.2
Abbildung 5.8: Der K3,3 Korollar 5.13 Der K3,3 ist nicht planar. Beweis. Der K3,3 ist zusammenh¨angend 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¨ochstens 5. Beweis. Wenn alle Knoten den Grad mindestens 6 h¨atten, folgt mit Lemma 5.14 ein Widerspruch. Es ist nun wichtig zwischen Graphen mit und ohne m¨oglichen 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¨ur 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¨achen von G bzgl. dieser Einbettung. Wir definieren den geometrischen Dualgraph (kurz Dualgraph) G∗ = (V ∗ , E ∗ ) zu G wie folgt. Zu jeder Fl¨ache 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¨achen 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¨achen gibt, welche mehr als eine begrenzende Kante gemeinsam haben. G∗ enth¨alt genau dann einen eine Schleife, wenn G eine Br¨ucke enth¨alt. (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¨oglichweise 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¨achen von G bzgl. dieser Einbettung. Der zugeh¨orige Dualgraph G∗ hat dann |F | Knoten, |E| Kanten und |V | Fl¨achen.
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¨alt. 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¨alt. ohne Beweis
5.1.5 Knotenf¨arbung planarer Graphen Definition 5.23 (k-Knotenf¨arbung) Sei k ∈ N. Eine k-Knotenf¨arbung eines ungerichteten Graphen G = (V, E) ist eine Abbildung ψ : V → {1, . . . , k}, wobei 1, . . . , k die Farben repr¨asentieren. Eine k-F¨arbung ψ von G heißt legal, falls ψ(u) 6= ψ(v) f¨ur jede Kante {u, v} in E gilt. G heißt k-f¨arbbar, falls es eine legale k-F¨arbung 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¨arbbarkeit wie folgt charakterisieren: Ein Graph G = (V, E) ist genau dann k-f¨arbbar, wenn V in k unabh¨angige 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¨ur jedes i ∈ {1, . . . , k} ist Ui eine unabh¨angige Menge in G. Jedes Ui entspricht einer Farbklasse. Satz 5.24 Jeder planare Graph kann in polynomieller Zeit mit 6 Farben gef¨arbt werden.
Zeichnen von Graphen · Wintersemester 2015/16
133
¨ Beweis. Ubungsaufgabe 5.5. Viel aufwendiger ist der relativ junge Beweis zur 4-F¨arbbarkeit planarer Graphen. Satz 5.25 (Robertson, Sanders, Seymour, Thomas 1996) Jeder planare Graph kann mit 4 Farben gef¨arbt werden. Der Beweis zu diesem Satz kann auch in einen Algorithmus zur Berechnung einer 4F¨arbung umgewandelt werden, welcher eine Laufzeit von O(|V |2 ) hat. Aufgrund einer Fallunterscheidung mit 633 F¨allen, ist der Algorithmus praktisch nicht realisierbar.
5.1.6 Planarit¨atstests und Einbettungsberechnung Der erste Linearzeitalgorithmus zum Testen der Planarit¨at 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¨ankung von Graphen Um die Methoden zum Zeichnen von planaren Graphen auch auf nichtplanare Graphen anzuwenden, beschreiben wir hier Ans¨atze, die einen nichtplanaren Graphen G in einen planaren Graphen G′ transformieren. Weiterhin haben Zeichenverfahren f¨ur planare Graphen oft noch weitere Voraussetzungen wie k-facher Zusammenhang mit k = 2 oder k = 3 und Beschr¨ankungen 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¨oglichst wenige Kanten aus G gel¨oscht werden.
134
Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016
(2.) Konstruiere eine planare Einbettung f¨ur den Graph GP . (3.) Die gel¨oschten Kanten werden so wieder eingef¨ugt, dass m¨oglichst wenige Kantenkreuzungen entstehen. (4.) Ersetze die Kantenkreuzungen durch k¨unstliche Knoten und erhalte so einen planaren Graph G′ . (5.) Zeichne G′ mit einem Algorithmus f¨ur planare Graphen. (6.) Entferne die k¨unstlichen Knoten. Die Schritte werden nun n¨aher erl¨autert. Bemerkung 5.28 (1.) Das Problem einen m¨oglichst 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¨oglichst 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¨ugt werden kann, ohne die Planarit¨at zu zerst¨oren. (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¨at in Zeit O(|V |·|E|) realisiert werden. Das Optimierungsproblem M IN P LANAR E DGE R EMOVAL l¨asst 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¨andigen Graphen Knoten K5 noch eine Unterteilung des vollst¨andigen bipartiten Graphen K3,3 enth¨alt.
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¨osungen x ∈ RE des folgenden Ungleichungssystems
X e∈K
0 ≤ xe ≤ 1 f¨ur alle e ∈ E
(5.3)
xe ≤ |K| − 1 f¨ur 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¨ur alle e ∈ E
(5.6)
liefern dann ein ganzzahliges lineares Optimierungsproblem, da die Ungleichungen die verbotenen Kuratowski Graphen ausschliessen. L¨aßt man die Ganzzahligkeitsbedingungen weg, so entsteht ein lineares Optimierungsproblem, dessen optimaler Zielfunktionswert eine obere Schranke f¨ur die Anzahl der Kanten in einem planaren Teilgraphen von G ist. (2.) M¨oglich nach Abschnitt 5.1.6 (3.) Das Problem die gel¨oschten Kanten wieder in den Graphen einzuf¨ugen und m¨oglichst wenige Kantenkreuzungen zu erzeugen ist schwer. Es gibt N¨aherungsans¨atze, die dies u¨ ber k¨urzeste Wege im Dualgraphen l¨osen. (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¨oßerung (Augmentierung) des Zusammenhangs auf k = 2 und k = 3 von Graphen durch Hinzuf¨ugen von m¨oglichst wenigen Kanten. Zu beachten ist hierbei jedoch, dass das Hinzuf¨ugen der Kanten zur Erh¨ohung des Zusammenhangs die Planarit¨at nicht zerst¨oren soll. Dieses Problem kann durch Erg¨anzung des in Abschnitt 5.2.1 angegebenen linearen Programms formuliert werden. Dazu vervollst¨andigen wir unseren Eingabegraphen G = (V, E) mit n Knoten durch Hinzunahme aller fehlenden Kanten zum vollst¨andigen Graphen Kn = (V, En ). Den Ausschluss des K5 und des K3,3 haben wir in Abschnitt 5.2.1 formuliert. F¨ur k-Zusammenhang ist es hinreichend, zu fordern, dass der Graph nach Entfernen von k − 1 beliebigen Knoten immer noch zusammenh¨angend ist, und das ist der Fall, wenn zwischen jeder Knotenteilmenge im Restgraphen und deren Komplement wenigstens eine Kante verl¨auft. F¨ur 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¨ur 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¨ur 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¨ur, dass viele Kanten aus unserem urspr¨unglichen Graphen G = (V, E) genommen werden, aber nur wenige der neuen Kanten.
Zeichnen von Graphen · Wintersemester 2015/16
137
5.2.3 Gradbeschr¨ankung F¨ur einige Zeichenverfahren planarer Graphen (siehe z.B. Kapitel 6) sind Knotengradbeschr¨ankungen notwendig. Dies kann man erreichen, indem man Knoten mit hohem Grad durch Kreise ersetzt und dadurch einen maximalen Knotengrad von h¨ochstens 3 erh¨alt, siehe Abbildung 5.12.
Abbildung 5.12: Gradbeschr¨ankung ist z.B. f¨ur orthogonale Zeichnungen wichtig
Mit den Notationen aus Abschnitt 5.2.2 kann man eine Gradbeschr¨ankungen auf Grad l durch folgende Ungleichungen formulieren: X xe ≤ l f¨ur 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¨ugt werden kann, ohne die Planarit¨at zu zerst¨oren. Eine Triangulation (ein triangulierter Graph) ist ein planar eingebetteter Graph, in dem jede Fl¨ache 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¨ur einen Graph G = (V, E) mit |V | ≥ 3 sind folgende Aussagen a¨ 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¨ache ist durch einen Kreis mit genau 3 Kanten begrenzt. (2) ⇔ (3) Es gibt eine Fl¨ache in F , die von mehr als drei Kanten begrenzt wird, genau dann, wenn es eine Kante e 6∈ E gibt, deren Hinzuf¨ugen die Planarit¨at nicht zerst¨ort.
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¨ugt werden kann, ohne die Planarit¨at zu zerst¨oren. 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¨ur planare Graphen. Korollar 5.33 (a) Falls G planar und mindestens 5-fach zusammenh¨angend ist, so ist |V | ≥ 12. (b) Falls G planar ist, so ist G nicht 6-fach zusammenh¨angend. Beweis.
Zeichnen von Graphen · Wintersemester 2015/16
139
(a) Da G 5-fach zusammenh¨angend 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¨angende maximal planare Graph mindestens 12 Knoten hat. Angenommen es gibt einen planaren 5-fach zusammenh¨angenden Graphen mit h¨ochstens 11 Knoten, so kann man aus diesem durch Einf¨ugen von Kanten einen 5fach zusammenh¨angenden maximal planaren Graphen mit h¨ochstens 11 Knoten konstruieren, Widerspruch. (b) Da ein 6-fach zusammenh¨angender Graph keinen Knoten vom Grad ≤ 5 hat (d.h. N3 = N4 = N5 = 0), kann es nach Lemma 5.31 keinen 6-fach zusammenh¨angenden maximal planaren Graphen geben. Angenommen es existiert ein planarer 6-fach zusammenh¨angender Graph G. F¨ugt man in G m¨oglichst viele Kanten ein solange die Planarit¨at nicht zerst¨ort wird, so erh¨alt man einen maximal planaren Graphen G′ , der noch 6-fach zusammenh¨angend ist (Da das Hinzuf¨ugen von Kanten nat¨urlich die Zusammenhangszahl nicht erniedrigt). Widerspruch. Also gibt es auch keinen 6-fach zusammenh¨angenden Graphen der planar ist.
Satz 5.34 Zu einem gegebenen planaren Graphen G = (V, E) kann man durch Einf¨ugen ˆ mit E ⊆ Eˆ berechnen. von k¨unstlichen Kanten in linearer Zeit eine Triangulation (V, E) ¨ Beweis. Ubungsaufgabe 5.7 Wir definieren nun eine Knotenreihenfolge f¨ur maximal planare Graphen. Definition 5.35 (Kanonische Ordnung) Es sei G = (V, E) ein maximaler planarer eingebetteter Graph mit n Knoten. Dann wird die a¨ ußere Fl¨ache 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¨ur 4 ≤ k ≤ n die folgenden Eigenschaften gelten. (1.) Der von v1 , v2 , . . . , vk−1 induzierte Teilgraph Gk−1 ist 2-fach zusammenh¨angend1 und die a¨ ußere Fl¨ache wird durch einen Kreis Ck−1 begrenzt, der die Kante {u, v} enth¨alt. (2.) Knoten vk liegt in der a¨ ußeren Fl¨ache 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¨ur 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¨angend bleiben muss. Deshalb darf man keinen 1
Ein ungerichteter Graph G = (V, E) ist zusammenh¨angend, falls es in G zwischen je zwei Knoten u, v ∈ V einen Weg gibt. G ist k-fach zusammenh¨angend, 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¨urlich nicht auf die Endknoten u und v der Wege. ¨ Aquivalent dazu: Ein Graph mit mehr als k ≥ 0 Knoten ist genau dann k-fach zusammenh¨angend, wenn er nicht durch Herausnahme von h¨ochstens k − 1 Knoten und ihren inzidenten Kanten unzusammenh¨angend 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 a¨ ußeren Kreises inzident ist. Es gibt aber stets einen Knoten, der nicht inzident mit einer inneren Sehne des a¨ 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¨ullt 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¨ur einen Teilweg mit weniger als j − i Kanten gibt, siehe Abbildung 5.16. Wir w¨ahlen den Knoten w ′ = vi+1 . Dies ist korrekt:
Wegen der Minimalit¨at von j − i gibt es keine innere Sehne, die inzident zu vi+1 ist und im Bereich vi , . . . , vj endet. Wegen der Planarit¨at 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 a¨ ußere Fl¨ache sei durch die drei Knoten u, v, w ∈ V definiert.
Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016
142
• W¨ahle 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 a¨ ußeren Fl¨ache der Einbettung liegt. • Wir definieren nun r¨uckw¨arts die restlichen Knoten vn , . . . , v3 der kanonische Ordnung f¨ur G. Es sei Gk−1 der Teilgraph von G nach Entfernung von Knoten vk . W¨ahle vn = w als den dritten Knoten auf dem Rand der a¨ ußeren Fl¨ache 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¨alt und die a¨ ußere Fl¨ache von Gn−1 definiert. w
u
Cn−1
v
Abbildung 5.17: Zum Beweis von Satz 5.38 • F¨ur k = n, . . . , 4 sei nun vk bereits gefunden und Gk−1 erf¨ulle die Bedingungen (1) und (2) aus Definition 5.35. Sei Ck−1 der die a¨ ußere Fl¨ache 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¨ur vk−1 = w ′ erf¨ullt 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¨ugen von k¨unstlichen 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¨oschen der k¨unstlichen 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¨ochstens (2n − 4) und H¨ohe h¨ochstens (n − 2). Diese Zeichnung kann in Zeit O(n) gefunden werden. Beweis. Wir geben eine geradlinige planare Gitterzeichnung f¨ur einen planaren Graphen G = (V, E) an, d.h. wir bestimmen Koordinaten p(v) = (x(v), y(v)) ∈ N2 f¨ur alle Knoten v ∈ V . Die Knoten werden hierzu in kanonischer Ordnung in den Graphen eingef¨ugt, indem eine ausgew¨ahlte 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 Ubungsaufgabe 5.8. Nach den ersten beiden Phasen nehmen wir nun an, dass G maximal planar ist und eine kanonische Ordnung v1 , . . . , vn f¨ur G bekannt ist. Wir definieren nun schrittweise Koordinaten p(v) = (x(v), y(v)) und Knotenmengen L(v) f¨ur alle Knoten v ∈ V . • Wir beginnen mit der Initialisierung f¨ur 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¨ur 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¨uhrung 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¨ugen von vk in Gk−1 Um nun die Kanten zwischen vk und seinen Nachbarn geradlinig und planar zeichnen zu k¨onnen, f¨uhren 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¨ur alle v ∈ – F¨ur 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¨ur vk Sq−1 Sq−1 L(wi ) = L(wi ) Menge f¨ur vk (f¨ur 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¨ur Knoten vk Durch die angegebenen Verschiebungen sind die Eigenschaften (E1)-(E3) f¨ur Gk erf¨ullt. 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¨ohe 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¨ur 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¨ur G markiert. Nach dem Beweis von Satz 5.39 erh¨alt das Ergebnis in Abbildung 5.24, siehe ¨ Ubungsaufgabe 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¨ur welche eine planare geradlinige Gitterzeichnung d stets eine Breite und H¨ohe 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¨ohe mindestens 1. Jedes weitere Dreieck erh¨oht die Breite und H¨ohe um mindestens 2. Damit gilt f¨ur den gesamten Graph Breite(d(G)) ≥ 1 + 2(
2 2 n − 1) = n − 1 und H¨ohe(d(G)) ≥ n − 1 3 3 3
Abbildung 5.25: Ein maximal planarer Graph mit geradliniger planarer Gitterzeichnung mit Breite und H¨ohe 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¨ohe von geradlinigen Zeichnungen f¨ur planare Graphen mit n Knoten
¨ 5.5 Ubungsaufgaben Aufgabe 5.1 Abbildung 5.13 zeigt eine nicht geradlinige planare Zeichnung eines planaren Graphen G. Geben Sie eine geradlinige planare Zeichnung f¨ur G an, die nach Satz 5.2 existieren muß. Kann man f¨ur G auch eine planare orthogonale Zeichnung angeben? Aufgabe 5.2 Zeigen Sie Lemma 5.12. Hinweis Gehen Sie a¨ hnlich vor wie im Beweis von Lemma 5.10(1.) Aufgabe 5.3 Konstruieren Sie f¨ur jede nat¨urliche Zahl n ≥ 4 einen zusammenh¨angenden planaren Graphen Gn mit n Knoten und eine planare Einbettung Π f¨ur G, so dass G mit mit Π zu seinem Dualgraphen G∗n isomorph2 ist. Aufgabe 5.4 (a) Man gebe f¨ur die Graphen, die man erh¨alt, 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¨ur 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¨ur G gibt, so dass alle Knoten auf dem Rand der gleichen (oBdA der a¨ usseren) Fl¨ache 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¨ugt 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¨ugen Sie fehlende Kanten hinzu und achten Sie darauf, dass die Planarit¨at erhalten bleibt und keine Multikanten im Graphen bleiben. Aufgabe 5.8 Beweisen Sie Beobachtung 5.40. Zeigen Sie dazu, dass die angegebenen Koordinaten f¨ur 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¨ugen von k¨unstlichen Kanten. (b) Bestimmen Sie eine kanonische Ordnung f¨ur 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¨oschen der k¨unstlichen Kanten an.
¨ Abbildung 5.26: Ubung zum shift-Algorithmus
150
Vorlesungsskript von F. Gurski · Stand: 5. Januar 2016
Kapitel 6 Flusse ¨ und orthogonale Zeichnungen Viele Zeichenalgorithmen f¨ur planare Graphen basieren auf Netzwerkflusstechniken. In einer planaren polygonalen Zeichnung erf¨ullen 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¨achen 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¨oglichst 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¨onnen, 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¨ur 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¨ur 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¨alt. Das Problem M IN B END O RTHOGONAL D RAWING FOR FIXED E MBEDDING kann mittels Netzwerkflusstechniken in polynomieller Zeit gel¨ost werden. Dieses Ergebnis ist die zentrale Idee beim Zeichnen von Graphen nach dem Topology-shape-metricsVerfahren, welches aus den folgenden f¨unf Phasen besteht. (1.) Planarisierung / Bestimmung der Topologie. Falls G nicht planar ist, werden zun¨achst k¨unstliche Knoten f¨ur die Kantenschnittpunkte eingef¨ugt. (Abschnitt 5.2.1) Falls G planar ist, so wird eine planare Einbettung f¨ur 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¨ur G mit m¨oglichst wenigen Kantenknicken bestimmt. (Abschnitt 6.3) (3.) Es wird durch Einf¨ugen von k¨unstlichen Kanten und Knoten eine normalisierte orthogonale Darstellung H ′ konstruiert, in welcher jede Fl¨ache eine Rechtecktform besitzt. (Abschnitt 6.4) (4.) Kompaktierung / Bestimmung der Kantenl¨angen. Es werden Koordinaten f¨ur die Knoten und Kantenknickpunkte f¨ur H ′ bestimmt, so dass die L¨angen der Kantensegmente m¨oglichst gering sind. (Abschnitt 6.5) (5.) Entferne die k¨unstlichen Kanten und Knoten und erhalte eine orthogonale Zeichnung f¨ur G. Abbildung 6.2 zeigt die f¨unf 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¨ache 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¨ache f genau 180(p − 2), wobei p die Anzahl der Winkel ist. Falls f die a¨ ußere Fl¨ache 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¨asentation und Eigenschaften Eine orthogonale Repr¨asentation (orthogonale Darstellung) H eines Graphen beschreibt zus¨atzlich zur Topologie auch die Form einer planaren orthogonalen Zeichnung, d.h. sie ist eine Erweiterung der kombinatorischen Einbettung mit Fl¨achen-Uhrzeigerlisten mit Kanten. In einer orthogonalen Repr¨asentation werden jedoch keine Angaben u¨ ber die L¨angen der Kantensegmente gemacht, wie es in einer orthogonalen Zeichnung der Fall ist. Definition 6.3 (orthogonale Repr¨asentation) Es sei G ein planarer Graph mit einer planaren orthogonalen Zeichnung, welche die Fl¨achenmenge F definiert. Eine orthogonale Repr¨asentation (orthogonale Darstellung) H ist eine Menge von zirkul¨aren im (gegen den) Uhrzeigersinn sortierten Listen H(f ) f¨ur alle inneren (¨außeren) Fl¨achen f ∈ F . Ein Element r ∈ H(f ) ist ein Tripel (er , sr , ar ) mit • er ist eine f begrenzende Kante, • sr ist ein Bin¨arstring und beschreibt die Form der Kante er . Das k-te Bit in sr beschreibt den k-ten Knick auf er in Fl¨ache f . F¨ur einen 90-Knick schreiben wir 0 und f¨ur 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¨ache f .
Beispiel 6.4 (orthogonale Repr¨asentation) Wir geben eine orthogonale Repr¨asentation f¨ur 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¨asentation Die Anzahl der Kantenknicke in einer orthogonalen Repr¨asentation H bezeichnen wir mit b(H). Lemma 6.5 F¨ur eine orthogonale Repr¨asentation H ist 1X X |sr |, b(H) = 2 f ∈F r∈H(f )
wobei |sr | die L¨ange von sr bezeichnet. Satz 6.6 Eine Menge von zirkul¨ar geordneten Listen H ist genau dann eine orthogonale Repr¨asentation einer planaren orthogonalen Einbettung eines 4-planaren Graphen G = (V, E), wenn folgende vier Eigenschaften erf¨ullt sind. (P1) H ohne die s und die a-Felder beschreibt durch Fl¨achen-Uhrzeigerlisten mit Kanten eine kombinatorische Einbettung f¨ur G. (P2) Es seien r und q zwei verschiedene Elemente in H mit er = eq . Dann erh¨alt man sq aus sr durch Umdrehen der Reihenfolge und Invertieren der Bits. (P3) F¨ur einen 0-1-String s sei |s|0 und |s|1 die Anzahl der Nullen bzw. Einsen in s. Weiterhin sei f¨ur f ∈ F und r = (er , sr , ar ) ∈ H(f ) ρ(r) = |sr |0 − |sr |1 + (2 − F¨ur jede Fl¨ache f ∈ F gilt X
r∈H(f )
ρ(r) =
4, −4,
ar ). 90
falls f eine innere Fl¨ache ist, falls f die a¨ ußere Fl¨ache ist.
(Dies besagt, dass jede Fl¨ache 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¨ur 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¨asentation 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¨asentation 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¨asentation H eine planare orthogonale Zeichnung mit H als zugeh¨origer orthogonalen Repr¨asentation gibt.
6.3 Bestimmung einer knickminimalen orthogonalen Repr¨asentation Das Problem M IN E MBEDDING B END O RTHOGONAL D RAWING kann mittels eines kostenmininalen Flusses in einem Netzwerk in polynomieller Zeit gel¨ost werden. Die Ideen basieren auf der Arbeit [Tam87].
6.3.1 Netzwerkflusse ¨ mit minimalen Kosten Wir definieren Netzwerke und Fl¨usse. Definition 6.7 (Netzwerke und Flusse) ¨ (1.) Ein Netzwerk ist ein 6-Tupel N = (V, A, b, l, u, c), mit • (V, A) ist ein gerichteter Graph. ¨ • Uberschuss-/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¨atsfunktionen
– l : A 7→ R+ definiert untere (englisch: lower) Schranken. F¨ur a ∈ A ist l(a) eine untere Schranke f¨ur den Fluss auf Kante a
Zeichnen von Graphen · Wintersemester 2015/16
157
– u : A 7→ R+ definiert obere (englisch: upper) Schranken. F¨ur a ∈ A ist u(a) eine obere Schranke f¨ur den Fluss auf Kante a.
• Kostenfunktion c : A 7→ R F¨ur a ∈ A betragen die Kosten f¨ur eine Einheit Fluss auf Kante a genau c(a). (2.) Eine Funktion f : A 7→ R+ heißt Fluss f¨ur N, falls • l(a) ≤ f (a) ≤ u(a) f¨ur alle a ∈ A (Kapazit¨atsbeschr¨ankung) und P P • ur alle u ∈ V (Flusserhaltung). (u,v)∈A f (u, v) − (w,u)∈A f (w, u) = b(u) f¨ P (3.) Die Kosten eines Flusses f : A 7→ R+ sind cost(f ) = a∈A c(a) · f (a).
(4.) Ein Fluss f f¨ur N ist minimal, wenn es keinen Fluss g f¨ur N mit geringeren Kosten gibt. Beobachtung 6.8 F¨ur einen Fluss f : A 7→ R+ f¨ur 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¨ur 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¨alle 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¨aten und setzt b(s) = 1, b(t) = −1 und b(v) = 0 f¨ur alle v ∈ V − {s, t}, so ergibt sich das Problem einen k¨urzesten Weg von s nach t in (V, A) zu finden. 2. Betrachtet man Kapazit¨aten aber keine Kosten und setzt b(v) = 0 f¨ur alle v ∈ V (Flusserhaltung) und c(a) = 0 f¨ur alle a ∈ A, f¨ugt eine Kante (t, s) in A mit Kosten c(t, s) = −1 und Kapazit¨at u(t, s) = ∞ ein, so ergibt sich das Problem des maximalen s, t-Flusses (sende soviel G¨uter wie m¨oglich von s nach t ohne die Kapazit¨atsgrenzen 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¨achenmenge F und a¨ ußerer Fl¨ache 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¨ur jeden Knoten v aus G und jede Fl¨ache 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¨ur alle iv ∈ UV f¨ur alle if ∈ UF
Ein Knoten iv ∈ UV (zu einem Knoten v aus G) produziert 4 Einheiten und ein Knoten if ∈ UF (zu einer Fl¨ache 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¨ur 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¨ur 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¨ateren Zeichnung. Winkel sind eine Ware, welche an den Knoten produziert und in den Fl¨achen 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¨agt. – Die Flusserhaltung um einen Knoten if ∈ UF garantiert nach Lemma 6.2, dass die Fl¨ache 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¨alt also eine Kante (iv , if ), falls v ∈ V einen Winkel in f ∈ F bildet.
AV ist eine Multimenge, da Knoten auf Br¨ucken mehrere Winkel in einer Fl¨ache bestimmen, siehe Knoten v5 in Beispiel 6.8. AF = {(if , ig ), (ig , if ) | e ∈ F trennt die Fl¨achen f und g} AF enth¨alt f¨ur jede Kante e ∈ E zwei Kanten (if , ig ) und (ig , if ), wobei f und g die Fl¨achen sind, welche durch Kanten e getrennt werden (f = g ist m¨oglich, siehe Fl¨ache f2 in Beispiel 6.8). • Die Kapazit¨ats- und Kostenfunktionen l, u und c werden f¨ur 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¨achen. Jeder Winkel muss mindestens 90 (= 1 · 90) Grad und h¨ochstens 360 (= 4 · 90) Grad betragen. Da dabei keine Knicke entstehen, sind die Kosten 0.
• Die Kapazit¨ats- und Kostenfunktionen l, u und c werden f¨ur 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¨achen abfliessen k¨onnen, was einer Zeichnung ohne Kantenknicke entspr¨ache, m¨ussen wir Knicke ins Flussmodell mit aufnehmen. Kann der Bedarf nicht gedeckt werden, k¨onnen benachbarte Fl¨achen Fluss austauschen. Jede solche Flusseinheit auf einer AF -Kante entspricht einem Kantenknick um 90 Grad und erh¨alt 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¨ur einen planar eingebetteten Graphen G mit 5 Knoten angegeben. Satz 6.14 F¨ur jede orthogonale Darstellung H mit zugrundeliegender planarer Einbettung Π f¨ur 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¨ur 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¨org¨angerelement“ r ∈ R(v, f ), siehe Abbildung 6.9. Dann setzen wir
ar , 90 hierbei ist r ist das zu (iv , if ) geh¨orige Element aus R(v, f ). x(iv , if ) =
• F¨ur den Fluss zwischen benachbarten Fl¨achen 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¨angerkante 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¨orige Element aus R(f, g). Korrektheit: • Die Funktion x ist ein Fluss. Zeige dazu, dass die Kapazit¨atsgrenzen und die Flusseinhaltung erf¨ullt sind. – Kapazit¨atsgrenzen: 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¨ange des Bitstrings bestimmt. Damit ist x(a) ∈ N und die Kapazit¨atsgrenzen sind erf¨ullt. – Flusseinhaltung: Hier m¨ussen wir zeigen, dass f¨ur 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¨ur 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¨ur innere Fl¨achen 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¨ur die a¨ ußere Fl¨ache 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¨ur 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¨ur 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¨ur alle r ∈ R(v, f ). F¨ur 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¨ullen. • (P1) gilt, da durch die er Felder die Einbettung Π erhalten bleibt. • (P2) ist nach Konstruktion von sr und sq erf¨ullt. • (P3) F¨ur jede Fl¨ache 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¨ur 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¨ur a∈AV
=
c(a)x(a)
a∈AF
c(a)x(a)
P
c(a)=1 f¨ur 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 u¨ ber die Fl¨usse 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 u¨ ber die Fl¨usse 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¨orige 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¨aten in NΠ ganzzahlig gew¨ahlt sind, folgt die Behauptung. Satz 6.18 Die minimale Anzahl von Kantenknicken einer orthogonalen Repr¨asentation 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¨atzen 6.14, 6.15 und 6.17.
6.3.3 Algorithmus zur Knickminimierung Gegeben sei eine planare Einbettung Π f¨ur 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¨asentation aus dem Fluss x. (Satz 6.15)
6.4 Algorithmen zur Normalisierung Eine orthogonale Darstellung H f¨ur einen Graphen G heißt normalisiert, falls jede Fl¨ache 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¨ur H. Eine solche Darstellung H ′ kann man durch Hinzuf¨ugen von k¨unstlichen Kanten und Knoten erzeugen. Hierzu verfeinert man die inneren und die a¨ ußere Fl¨ache von H wie folgt [Tam87].
Zeichnen von Graphen · Wintersemester 2015/16
169
6.4.1 Verfeinerung der inneren Fl¨achen Jede innere Fl¨ache f ∈ F wird wie folgt modifiziert. (1.) F¨uge auf jedem Kantenknick auf f einen k¨unstlichen Knoten ein und modifiziere H(f ).
Abbildung 6.14: Schritt 1 zur Verfeinerung einer inneren Fl¨ache F¨ur jede Kante e in H(f ) definieren wir einen Wert turn(e) ∈ {0, ǫ, 1, 11}. next(e) = n¨achste 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¨ur alle e aus H(f ) liefert einen 0-1-String s(f ) f¨ur die innere Fl¨ache 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¨ugt und H aktualisiert. Dies wird solange fortgesetzt, bis s(f ) = 0000, d.h. bis f ein Rechteck ist.
6.4.2 Verfeinerung der a¨ ußeren Fl¨ache Zur Verfeinerung der a¨ ußeren Fl¨ache legen wir ein Rechteck R um den Rand der a¨ ußeren Fl¨ache und projezieren die Ecken der a¨ ußeren Fl¨ache auf R (Abbildung 6.18). Die dadurch entstehenden neuen inneren Fl¨achen 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¨asentation f¨ur einen Graphen mit n Knoten. Man kann in Zeit O(n + b(H)) eine normalisierte orthogonale Darstellung H ′ mit Fl¨ache O((n + b(H))2 ) finden. ohne Beweis Falls wir in einer normalisierten orthogonalen Darstellung H f¨ur jede Fl¨ache f von H den gegen¨uberliegenden Seiten des Rechtecks f die gleiche L¨ange zuordnen, so kann daraus eine korrekte orthogonale Zeichnung des Graphen bestimmt werden. Die Zuordnung der L¨angen f¨ur die Kantensegmente bestimmen wir im folgenden Abschnitt.
6.5 Algorithmen zur L¨angenbestimmung Durch die Normalisierung erh¨alt 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 a¨ ußeren Fl¨ache Repr¨asentation H und gesucht sind f¨ur alle Kanten m¨oglichst kleine L¨angen, so dass die Zeichnung kompatibel mit H ist. ¨ KOMPAKTE ORTHOGONALE R EPR ASENTATION Gegeben: Ein planarer Graph G mit einer normalisierten orthogonalen Repr¨asentation H von G. Gesucht: Eine planare orthogonale Gitterzeichnung d von G mit zugeh¨origer orthogonalen Repr¨asentation H mit minimaler H¨ohe und Breite. ¨ Zur effizienten L¨osung des Problems KOMPAKTE ORTHOGONALE R EPR ASENTATION konstruieren wir horizontale und vertikale Netzwerkfl¨usse in H. Wir legen zun¨achst in der gegebenen normalisierten orthogonalen Repr¨asentation H von G die Ausrichtung (horizontal oder vertikal) eines Kantensegmentes fest. Dadurch erhalten wir Ausrichtungen f¨ur 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 a¨ ußeren Fl¨ache
Abbildung 6.20: Eine normalisierte orthogonale Darstellunge • Knoten des Netzwerkes: – F¨ur jede innere Fl¨ache f wird ein Knoten vf definiert. – F¨ur die a¨ ußere Fl¨ache f0 wird ein Knoten v0 definiert. • Kanten des Netzwerks: – Zu jedem horizontalen Kantensegment e, zwischen zwei inneren Fl¨achen 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¨ache f und der a¨ ußeren Fl¨ache f0 , so dass e oben an f liegt, gibt es eine gerichtete Kante (vf , v0 ). – Zu jedem horizontalen Kantensegment e, zwischen einer inneren Fl¨ache f und der a¨ ußeren Fl¨ache 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¨ater der optimalen L¨ange der Kante e. • Angebots- und Nachfragefunktion b: b(u) = 0 f¨ur alle Knoten u des Netzwerkes Nhor . • Kapazit¨ats- und Kostenfunktion: l(a) = 1 u(a) = ∞ c(a) = 1 f¨ur jede gerichtete Kante a des Netzwerks Nhor . Analog definiert man ein vertikales Netzwerk Nver . Hier werden die vertikalen Kanten zwischen den Fl¨achen 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¨angen f¨ur einen Graph G mit orthogonaler Repr¨asentation H kann man einen Fluss fhor : A 7→ R f¨ur Nhor und fver : A 7→ R f¨ur Nver bestimmen, indem man den Fluss einer gerichteten Kante auf die L¨ange 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¨ohe der Zeichnung d(G). Weiterhin sind die Kosten des Flusses fhor gleich der Gesamtl¨ange aller horizontalen und die Kosten des Flusses fver gleich der Gesamtl¨ange aller vertikalen Kantensegmente in d(G). Die in Abbildung 6.21 bzw. 6.22 gezeigten Fl¨usse k¨onnen somit aus der Zeichnung in Abbildung 6.23 bestimmt werden. Die umgekehrte Richtung ist ebenfalls m¨oglich. Aus Fl¨ussen fhor : A 7→ R f¨ur Nhor und fver : A 7→ R f¨ur Nver kann man f¨ur einen Graph G eine orthogonale Zeichnung bestimmen, indem man die L¨ange der Kantensegmente auf den Wert des Flusses der zugeh¨origen 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¨ange besitzt. Damit entsprechen die durch einen Fluss definierten L¨angen 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¨ohe und Breite Satz 6.21 Es sei G ein planarer Graphen mit einer normalisierten orthogonalen Darstellung H von G. Es seien Fl¨usse mit minimalen Kosten f¨ur die Netzwerke Nhor und Nver gegeben. Wenn wir die L¨ange 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¨asentation H. Die Gesamtl¨ange aller horizontalen Kantensegmente und die Gesamtl¨ange aller vertikalen Kantensegmente der Zeichnung d(G) entspricht den Kosten des Flusses in Nhor bzw. Nver . Damit kann das Problem KOMPAKTE gel¨ost werden.
ORTHOGONALE
¨ R EPR ASENTATION 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¨ange 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 Ubungsaufgaben Aufgabe 6.1 (a) Geben eine orthogonale Repr¨asentation H f¨ur 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: Ubung zur orthogonalen Repr¨asentation ¨ (b) Uberpr¨ ufen Sie, ob H die Eigenschaften (P1)-(P4) aus Satz 6.6 erf¨ullt. 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: Ubung zur Konstruktion eines Netzwerkes Aufgabe 6.3 Bestimmen Sie f¨ur den vollst¨andigen 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¨achen 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¨origer orthogonalen Repr¨asentation H und mit minimaler H¨ohe und Breite.
¨ Abbildung 6.26: Ubung zur Normalisierung einer orthogonalen Darstellung Aufgabe 6.5 Wir betrachten die Voraussetzungen von Satz 6.21. Es seien Fl¨usse mit minimalen Kosten f¨ur die Netzwerke Nhor und Nver gegeben. Die planare orthogonale Zeichnung d(G) f¨ur den Graph G enstehe, indem wir die L¨angen 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¨ussen in Nhor bzw. Nver die Gesamtl¨ange 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¨unger, 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¨unger, 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¨unger 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.