B5G2

Werbung
- Übungsblatt 5 -
Übungen zu
Automatisches Zeichnen
von Graphen
Ausgabe: 11.12.2007 — Besprechung: 15.01.2007
Gruppe 2
Martin Böhmer/Dennis Treder/Marina Schwacke
Aufgabe 3: Knotenpositionierung
Erläutern Sie den Mixed-Model Algorithmus, der in der
Publikation
C. Gutwenger und P. Mutzel:
Planar Polyline Drawings with Good Angular Resolution, In S.
Whitesides (Eds.), Proceedings Graph Drawing, Montreal,
Canada., Lecture Notes in Computer Science, vol. 1547,
Springer, 1998, 167-182,
beschrieben ist.
Welche Eigenschaften besitzen die entstehenden
Zeichnungen?
Martin Böhmer/Dennis Treder/Marina Schwacke
Gliederung

Einleitung

Mathematische Grundlagen

Algorithmus

Analyse

Kommentar
Martin Böhmer/Dennis Treder/Marina Schwacke
Einleitung: Mixed Model Algorithmus



Linearzeit-Algorithmus
erstellt Polyline-Gitterzeichnung von jedem
planaren Graphen
Phasen
 Vorbereitungsphase
Erweiterung auf 2-zusammenhängenden,
ebenen Graphen
kanonische Ordnung der Knoten
 bounding boxes um Knoten
 Platzierung der Knoten

Martin Böhmer/Dennis Treder/Marina Schwacke
Einleitung: Idee des Algo
basiert auf Ideen von Kant für
3-zusammenhängene Graphen:
 ebenfalls Linearzeit-Algorithmus
 minimaler Winkel mind. 2 / d
d = maximaler Knotengrad des Graphen


maximal 3 Knicke pro Kante
Kantenlänge O(n)
n = Anzahl Konten des Graphen

MixedModell mit Polylines aus straightline
Framework und kanoischer Ordnung für 3zusammenhängende Graphen entstanden
Martin Böhmer/Dennis Treder/Marina Schwacke
Einleitung: Andere Ansätze für d > 4
Knoten als Boxen
Nachteile
 sehr große Knoten
 teilweise ist Größe
vom Grad
unabhängig
Martin Böhmer/Dennis Treder/Marina Schwacke
Einleitung: Andere Ansätze für d > 4
Grob- und Feingitter
Nachteile
 Linien sehr (zu)
nah beisammen
 kein polynomieller
Algorithmus bekannt
Martin Böhmer/Dennis Treder/Marina Schwacke
Einleitung: Andere Ansätze für d > 4
Kurze, diagonale
Linien
Nachteil
 Winkel zu klein
Martin Böhmer/Dennis Treder/Marina Schwacke
Mathematische Grundlagen




Graph G heißt einfach, wenn G weder mehrfache
Kanten noch Kreise enthält.
G ist flach, wenn G mit planarer Zeichnung
verbunden ist.
Die Einbettung eines planaren Graphen G, ist die
Sammlung von kreisförmigen Ordnungen der
inzidenten Kanten oder Knoten um jeden Knoten
in einer planaren Zeichnung von G.
Ein flacher Graph teilt die Fläche in Regionen,
genannt Faces
unbegrenztes Face = äußeres Face,
sonst inneres Face
Martin Böhmer/Dennis Treder/Marina Schwacke
Mathematische Grundlagen



Für einen Knoten v aus G benutzen wir die
Kreisordnung gegen den Uhrzeigersinn
Die Grenze im Uhrzeigersinn eines Faces f ist ein
Kreisdurchlauf v0e1v1...ekvk entlang der Kanten
von f, so dass vi+1 der Nachfolger von vi−1 in der
Ordnung gegen den Uhrzeigersinn von vi ist.
Ein zusammenhängender Graph G wird kzusammenhängend genannt, wenn er, nach
Löschen von k-1 beliebigen Knoten, immer noch
zusammenhängend ist
Für k=2 und k=3: bi- / tri-zusammenhängend
Martin Böhmer/Dennis Treder/Marina Schwacke
Der Algorithmus


Eingabe: G = (V, E), wobei G flach und einfach
Drei Phasen
1. Berechne geordnete Partition π
= disjunkte Teilmengen von V
2. Bestimme Bounding Boxes der Knoten
= Berechnung von Inpoints und Outpoints
3. Platzierung
= Koordinaten der Knoten berechnen
Martin Böhmer/Dennis Treder/Marina Schwacke
Phase 1: Die geordnete Partition π



π = (V1, …, VN)
mit
und
Gk = V1 … Vk sei planarer Subgraph
rank(v) = Index i für das Vi das v enthält
Eigenschaften von π
(P1) Für jedes Vk = {z1, …, zp) existieren zwei Knoten left(Vk)
und right(Vk) mit:
E1(Vk) = {(zi, zi+1)|1 ≤ i < p} für k ≥1
E2(Vk) = {(left(Vk), z1), (zp, right(Vk))} für k ≥ 2
left(Vk)
z1
Martin Böhmer/Dennis Treder/Marina Schwacke
…
zp
right(Vk)
Phase 1: Die geordnete Partition π
Eigenschaften von π
(P1 Forts.)
kann in G eingefügt werden ohne Kreuzungen zu
erzeugen.
mit
(P2) V1 = {v1, ..., vs} ist ein Pfad auf der Grenze im
Uhrzeigersinn des externen Faces von .
Die Knoten in Vk (k ≥ 2) liegen auf dem externen
Face von
.
Martin Böhmer/Dennis Treder/Marina Schwacke
Phase 1: Die geordnete Partition π
Eigenschaften von π
(P3) C1 ist Sequenz von v1, ..., vs.
Für k ≥ 2 sei Ck−1 = c1, ..., cq bereits definiert.
Sei cl = left(Vk) und cr = right(Vk).
Dann ist Ck die Sequenz c1, ..., cl, Vk, cr, ..., cq.
(P4) Sei Vk = {z1, ..., zq}.
a)
b) Sei k ≥ 2, Ck−1 = c1, ..., cq, left(Vk) = cl, right(Vk) = cr.
Dann liegen alle Nachbarn von Vk in
in {cl, ..., cr}.
Wenn p ≥ 2, dann hat Vk genau zwei Nachbarn in
.
Martin Böhmer/Dennis Treder/Marina Schwacke
Phase 1: Die kanonische Ordnung
π ist eine kanonische Ordnung, wenn gilt:
(1) V1 = {v1, ..., vs}, wobei v1, ...vs ein Pfad auf der Grenze im
Uhrzeigersinn des externen Faces von G mit s ≥ 2 und
E({v1, ..., vs}) = {(vi, vi+1) | 1 ≤ i < s}.
(2) Jeder Subgraph Gk ist zusammenhängend und intern 2zusammenhängend
(3) Bezeichne C‘k den Pfad auf der Grenze gegen den Uhrzeigersinn des
externen Faces von Gk ausgehend von Knoten v1 zu Knoten vs. Für
jedes 2 ≤ k ≤ N trifft zu eine der Bedingungen zu, wobei C‘k = [v1 = c1,
..., cq = vs]:
a) Vk = {z} und z ist ein Knoten aus C‘k mit mindestens drei
Nachbarn in Gk−1
b) Vk = {z1, ..., zp} C‘k, p ≥ 1, und es existieren Knoten cl, cr, l < r,
aus C‘k, so dass cl, z1, ..., zi, u1, ..., uj , zi+1, ..., zp, cr ein Pfad auf
der Grenze im Uhrzeigersinn des Faces aus G für 0 ≤ i ≤ p, j ≥ 0.
u1, ..., uj sind Knoten aus G \ Gk und
Martin Böhmer/Dennis Treder/Marina Schwacke
Phase 1: Die kanonische Ordnung



G ist u.U. nicht 2-zusammenhängend (für Ordnung erforderlich)
 Erweiterung auf 2-zusammenhängenden Graphen G‘ = (V, E‘)
Berechnung der Ordnung
Berechnung von left(Vk) und right(Vk)
Seien Ck−1 = c1, ..., cq und e1, ..., ea die Kanten in G' mit
eμ = (vμ, ciμ) und vμ aus Vk, so dass i1 < ... < ia.

a ≤ 2, Vk erfüllt die Definition (3b)
left(Vk) := cl und right(Vk) := cr,
wobei cl und cr die Knoten sind, die nach (3b) existieren

a ≥ 3 left(Vk) := cl und right(Vk) := cr, mit l und r wie folgt:
Sei N = {ciμ|eμ aus E}.
 N = {}:
l := i1 und r := ia.
 N = {c }:
t

|N| ≥ 2: l := min{μ | cμ aus N} und r := max{μ | cμ aus N}.
Martin Böhmer/Dennis Treder/Marina Schwacke
Phase 2: Inpoints und Outpoints






In- und Outpoints beschreiben Bounding Box
eingehende Kante: {(v,w) | rank(w) ≤ rank(v)}
ausgehende Kante: {(v,w) | rank(w) > rank(v)}
in(v)
= Anzahl der eingehenden Kanten von v,
out(v)
= Anzahl der ausgehenden Kanten von v
Koordinaten der In- und Outpoints sind
relativ zur Position von v
(v,w) mit rang(v) = rang(w),
zwei Inpoints und keinen
Outpoint setzen
 horizontale Kante
Martin Böhmer/Dennis Treder/Marina Schwacke
Phase 2: Outpoints
Sei Vk = {z1, ..., zp}, v = zi, z0 := left(Vk) und zp+1 := right(Vk)
outl(v), outr(v), δl, δr berechnen sich wie folgt:
Wenn out(v) ≥ 1, werden folgende Punkte platziert:
• outl(v) Outpoints mit den Koordinaten
(− outl(v), δl), ..., (−1, outl(v) + δl − 1) (Geraden mit Steigung 1)
• Einen Outpoint auf Punkt (0, max{outl(v) + δl − 1, outr(v) + δr − 1})
• outr(v) Outpoints mit den Koordinaten
(1, outr(v) + δr − 1), ..., (outr(v), δr),
(Geraden mit Steigung -1)
Martin Böhmer/Dennis Treder/Marina Schwacke
Phase 2: Inpoints
Wenn in(v) ≤ 3,
alle Inpoints auf (0,0) setzen
Andersfalls,
• Einen Inpoint auf Punkt (−inl(v), 0).
• inl(v) Inpoints mit den Koordinaten
(−inl(v), −1), ..., (−1, −inl(v)),
welche auf einer Geraden mit Steigung -1 liegen
• Einen Inpoint auf den Punkt (0, −inr(v))
• inr(v) Inpoints mit den Koordinaten
(1, −inr(v)), ..., (inr(v), −1),
welche auf einer Geraden mit der Steigung +1 liegen
• Einen Inpoint auf Punkt (inr(v), 0)
Martin Böhmer/Dennis Treder/Marina Schwacke
Phase 2: Beispiele
Martin Böhmer/Dennis Treder/Marina Schwacke
Phase 2: Beispiele
Martin Böhmer/Dennis Treder/Marina Schwacke
Phase 3: Platzierung


Verwenden von absoluten y-Koordinaten und
relativen x-Koordinaten
Berechnen der x-Koordinaten:
Sei C = c1, ..., cq die gegenwärtige Kontur
(1)
Martin Böhmer/Dennis Treder/Marina Schwacke
Phase 3: Platzierung

Verschieben von Knoten:
 c aus C nach rechts verschieben
i
-> ci,...,cq und einige Knoten die nicht aus C sind
 M(c ) die Menge von Knoten die verschoben werden
i
müssen, wenn ci verschoben wird.
-> Baum mit Wurzel ci, Knoten sind relativ zur Wurzel
 Alle Mengen M(c ) mit 1≤i≤q, sind ein Wald F von allen
i
Knoten, wobei die Wurzeln die Knoten aus C sind.
 father(v) ist der Vorgänger von v in F, mit
rang(father(v))>rang(v)
 Absolute x-Koordinaten mit (1) berechnen, durch:
 entlanglaufen der Knoten in C und dann
 aller anderen Knoten nach absteigendem Rang
Martin Böhmer/Dennis Treder/Marina Schwacke
Phase 3: Platzierung
Algorithmus Mixed-Model-Placement
Input:
Ein planarer Graph G=(V,E), eine geordnete Partition
∏ = V1,...,VN von G (die P1 bis P4 erfüllt) und in- und
outpoints.
Output:
Absolute y- und relative x-Koordinaten gemäß der
Gleichung (1) für jeden Knoten in G.
Initalisierung:
Wir setzen die Menge V1 = {v1,...,vs}. Wir setzen
Martin Böhmer/Dennis Treder/Marina Schwacke
Phase 3: Platzierung
for k:=2 to N do
 Sei C=c ,...,c
1
q Vk={z1,...,zp}, cl=left(Vk) und cr=right(Vk).
 y-Koordinaten setzen:
 vorläufige x-Koordinaten berechnen
von cl+1,...,cr relativ zu cl.
if in(z1) ≥ 3 then
einen einzelnen Knoten platzieren
else
p≥1 Knoten mit maximal zwei Nachbarn von C platzieren
fi
 C := c ,...,c ,z ,...,z ,c ,...,c
1
l 1
q r
q
od

Martin Böhmer/Dennis Treder/Marina Schwacke
Phase 3: Platzierung
if in(z1) ≥ 3 then
(einen einzelnen Knoten platzieren
)
Wir wollen z1 direkt über ut plazieren
setzen
ut = outpoint(ct,z1) und dxt = ut.dx
Überprüfen ob z1 direkt über ut plaziert ist:
δ = x(z1) − (x(ct) + dxt).
if δ > 0 then z1 liegt rechts von ut -> δ Einheiten nach
rechts verschieben.
Knoten cl+1,...,cr−1 verschwinden aus C, ihre x-Koordinaten
relativ zu z1 setzen und den Baum F updaten:
Martin Böhmer/Dennis Treder/Marina Schwacke
Phase 3: Platzierung
else
(p≥1 Knoten mit maximal zwei Nachbarn von C
platzieren)
Knoten cl+1,...,cr−1 verschwinden aus C, ihre x-Koordinaten
relativ zu z1 setzen und den Baum F updaten:
Martin Böhmer/Dennis Treder/Marina Schwacke
Analyse
Soweit uns bekannt erreicht dieser Algorithmus die besten
Grenzen für Gittergröße, Winkelauflösung und die Anzahl
von Knicken für planare, dichte Graphen.
Der Algorithmus zeichnet einen d-planaren
Graphen G so in ein Gitter:
• dass jede Kante höchstens drei Knicke hat,
• dass der minimale Winkel zwischen zwei Kanten
mindestens 2/d (Bogenmaß) beträgt,
• die Gittergröße (2n-5) x (3/2n-7/2) ist
• er höchstens 5n-15 Knicke besitzt
• und jede Kante Länge O(n) hat (n = Anzahl Knoten von G)
Der Algorithmus benötigt lineare Laufzeit.
Martin Böhmer/Dennis Treder/Marina Schwacke
Kommentar
Graphen sind im Allgemeinen nicht planar!
 Graphen in planare Graphen umgewandeln.
 Kreuzungen ersetzen.


Mögliche Planarisierungsmethode:
 Maximum planare Subgraph Problem lösen und die
gelöschten Kanten wieder einzufügen.
Beim Mixed-Model Algorithmus können die Zeichnungen
dann seltsam aussehen und es ist schwierig die
Kreuzungen zu erkennen.
-> Algorithmus modizieren:
 Künstlich erzeugten Knoten anders behandeln
 Erstrebenswert Mixed-Modell-Zeichnungen bei der Kanten
nicht ihre Kreuzungsknoten knicken dürfen.
Martin Böhmer/Dennis Treder/Marina Schwacke
Herunterladen