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