Implementierung eines Algorithmus für das glatt

Werbung
Implementierung eines Algorithmus
für das glatt-orthogonale Zeichnen
planarer Graphen
Bernhard Häussner
Julius-Maximilians-Universität Würzburg
Institut für Informatik
Lehrstuhl für Informatik I
Effiziente Algorithmen und wissensbasierte Systeme
Betreuer:
Prof. Dr. Alexander Wolff
Dipl.-Inf. Philipp Kindermann
Bachelor-Kolloquium am 12. Mai 2014
Implementierung eines Algorithmus für das glattorthogonale Zeichnen planarer Graphen
I
Zeichnen von Graphen: Knoten platzieren, Kanten zeichnen
I
glatt-orthogonal: besonders übersichtlich
I
Planarität: Keine Überschneidungen von Kanten
I
Algorithmus: Alam et al. [ABK+ 14]
I
Implementierung: Test mit vielen Graphen
Ein Liniennetzplan
h 695
3
661
PrambachkirchenBad Weinberg
Bahnhof
Stroheim
Ortsmitte
672
Pupping
Ortsmitte
S
688
Hinzenbach
EFKO
S696
96
93
Gschnarret
Prambachkirchen
Ortsmitte
665
PrattsdorfDachsberg
665
Kirn- Wackersberg bach
Sperneck
eck
Thomas
aizenkirchen
au
662
Gstocket
Eferding
Bf P&R
663
Dachsberg
Gymnasium
69
664
Kalköfen
Dorfmayr
663
H
Hörstorf
b
b.Eferdin
Bundess
663
St.Marienkirchen/
Polsenz Bauhof
St. Marienkirchen/Polsenz
Schule
650
650
663
Finklham
Ort
661
667
J
Jungreith
Kreisverkehr
K
Unterfreundorf
Reha Zentrum
662
663
Wallern/Tr
0
66 61
6
rbach
markt
Bad
Schallerbach
Rathaus
(Schönauer
ad Straße)
ch
im
Eferding
Gewerb
gebiet
Bahnhst
Buch
B
Hund
Buchkirchen
Feuerwehr
Buchk
Oberho
Abbildung: Ein Ausschnitt aus dem Liniennetzplan Eferding –
Grieskirchen – Wels, Helge Waldherr, 2014. http:
//www.ooevv.at/upload/content/blaetterkatalog/Liniennetzplan/
EF-GR-WE/assets/common/downloads/Liniennetzplan-GR-EF.pdf
Vom Liniennetzplan zur glatt-orthogonalen planaren
Zeichnung
I
Liniennetzpläne für jedermann ohne Vorwissen benutzbar
I
Abstraktion: Haltestellen 7→ Knoten, Strecken 7→ Kanten
I
Reduktion: Keine Beschriftungen, Überschneidungen oder
parallele Strecken
I
Ziel: Platzierung der Knoten, rundes Zeichnen der Kanten
I
Überschneidungen der glatt-orthogonalen Kanten vs.
Komplexität
Einleitung
Grundlegendes
Algorithmus
Verbesserungen
Graphen
I
Tupel G = (V , E ) von Mengen, wobei E ⊂ P(V )
I
Ungerichtete Graphen
I
Einfache Graphen
I
Zusammenhängende Graphen
I
Bsp: GE = (VE , EE ); VE = {0, 1, 2, 3, 4}; EE =
{{0, 1}, {0, 2}, {0, 4}, {1, 2}, {1, 4}, {2, 3}, {2, 4}, {3, 4}}
Planare Einbettung
I
I
Planarer Graph: kann
ohne Überschneidungen
gezeichnet werden
V1
Kanten können sich an
den Knoten berühren
V0
I
Zeichnen mit planarer
Einbettung durch
Reihenfolge der Kanten in
Adjazenzliste
I
Berechnen mit
Algorithmus von
Brandes [Bra09]
I
Ausführlicher Pseudocode,
leicht zu implementieren
V4
V3
V2
V4
V0
V3
V1
V2
st-Ordnung
I
Reihenfolge der Knoten
I
je min. ein Vorgänger und
Nachfolger
I
s erster, t letzter Knoten
I
Voraussetzung: Graph
zweifach
zusammenhängend
I
Berechnung mit dem
Algorithmus von Even
und Tarjan [ET76]
I
Zeichenalgorithmus
platziert Knoten in
Reihenfolge der
st-Ordnung
V4
V0
V3
V1
V2
Abbildung: Knotenzahlen sind
st-Ordnung. Vertauscht man V1
und V3, so hat V1 nur
nachfolgende Knoten.
Orthogonale Layouts
V4
I
Knoten auf einem Gitter
I
Kanten nur horizontal und
vertikal
V3
I
Vier Ports für Kanten an
jedem Knoten
V2
I
Maximaler Grad ist 4
I
Berechnung mit
Algorithmus von Liu et
al. [LMS98].
V1
V0
Abbildung: Orthogonales Layout
des Beispielgraphen
Der Algorithmus von Liu et al.
I
Spezielle Portzuweisung aus planarer Einbettung
I
Kante hat max. 3 Segmente
I
Von unten nach oben
I
Reihenfolge der st-Ordnung
I
Kantenpartition in ein- und ausgehend st-Ordnung
Portzuweisung im Algorithmus von Liu et al.
Portzuweisung eingehender Kanten je Eingangsgrad. Fett sind
eingehende Kanten, gestrichelt mögliche ausgehende Kanten.
Abbildung: 0
Abbildung: 1
Abbildung: 2
Abbildung: 3
Abbildung: 4
Beispiel zum Algorithmus von Liu et al.
V4
V0
V3
V1
V2
V0
Beispiel zum Algorithmus von Liu et al.
V4
V0
V3
V1
V2
V0
Beispiel zum Algorithmus von Liu et al.
V4
V0
V3
V1
V2
V1
V0
Beispiel zum Algorithmus von Liu et al.
V4
V0
V3
V1
V2
V1
V0
Beispiel zum Algorithmus von Liu et al.
V4
V0
V3
V1
V2
V2
V1
V0
Beispiel zum Algorithmus von Liu et al.
V4
V0
V3
V1
V3
V2
V2
V1
V0
Beispiel zum Algorithmus von Liu et al.
V4
V4
V0
V3
V1
V3
V2
V2
V1
V0
Einleitung
Grundlegendes
Algorithmus
Verbesserungen
Glatt-orthogonale Zeichungen
V4
I
Bekos et. al. [BKKS13]
I
orthogonal:
Koordinatengitter;
horizontale, vertikale
Segmente, Ports
V3
V1
V2
V0
I
Glatt: Keine Knicke
I
Mit Kreisbögen
abgerundet
V4
I
Tangentialer Übergang
V3
V1
V0
V2
Entfernung stufenförmiger Kanten
I
Stufenförmige Kanten werden S-förmige Kanten
I
Alle Stufen-Knoten auf ein Plateau
I
Höhe des Plateaus berechnen
I
Mehrere Plateaus mit selber Höhe möglich
V4
V4
V3
V3
V2
V1
V1
V0
V0
V2
Problem: Neue Überschneidungen
I
Abrunden führt zu Überschneidungen
I
Kreisbögen so, dass Kanten nur zwei Segmente haben
I
Graph auseinander ziehen, Platz schaffen
I
An horizontalen Segmenten teilen
Wo kann es zu Überschneidungen kommen?
I
Innen an C- und L-Kanten: Plateaus nach oben schieben
I
Außen an C-Kanten: Graph auseinander ziehen
I
Alle C- und L-Kanten müssen horizontales Segment haben
Kollisionen mit C-Kante vermeiden
Abbildung: Maßnahmen zur Vermeidung von Kollisionen mit C-Kante.
Schnitte durch Graphen finden
I
Immer an einem Knoten, in einem Quadranten
I
C-, I- und L-Kanten an horizontalen Segmenten durchqueren
I
Kein vertikales Segment durchqueren
I
Kante folgen oder durchschneiden
Beispieldurchlauf
V0
snap #0 placing first vertex
Beispieldurchlauf
V14
V0
snap #1 placing initial vertex of tier
Beispieldurchlauf
V12
V14
V0
snap #2 placing initial vertex of tier
Beispieldurchlauf
V3
V12
V14
V0
snap #3 placing initial vertex of tier
Beispieldurchlauf
V15
V3
V12
V14
V0
snap #4 placing initial vertex of tier
Beispieldurchlauf
V15
V2
V3
V12
V14
V0
snap #5 placing last vertex of tier
Beispieldurchlauf
V9
V15
V2
V3
V12
V14
V0
snap #6 placing initial vertex of tier
Beispieldurchlauf
V1
V9
V15
V2
V3
V12
V14
V0
snap #7 placing initial vertex of tier
Beispieldurchlauf
V1
V13
V9
V15
V2
V3
V12
V14
V0
snap #8 placing initial vertex of tier
Beispieldurchlauf
V5
V1
V13
V9
V15
V2
V3
V12
V14
V0
snap #9 placing initial vertex of tier
Beispieldurchlauf
V5
V7
V1
V13
V9
V15
V2
V3
V12
V14
V0
snap #10 placing initial vertex of tier
Beispieldurchlauf
V6
V5
V7
V1
V13
V9
V15
V2
V3
V12
V14
V0
snap #11 placing initial vertex of tier
Beispieldurchlauf
V10
V6
V5
V7
V1
V13
V9
V15
V2
V3
V12
V14
V0
snap #12 placing initial vertex of tier
Beispieldurchlauf
V11
V10
V6
V5
V7
V1
V13
V9
V15
V2
V3
V12
V14
V0
snap #13 placing initial vertex of tier
Beispieldurchlauf
V4
V11
V10
V6
V5
V7
V1
V13
V9
V15
V2
V3
V12
V14
V0
snap #14 placing initial vertex of tier
Beispieldurchlauf
V4
V11
V10
V6
V5
V7
V1
V13
V9
V15
V2
V3
V12
V14
V0
snap #15 moving stuff outside to avoid collision with Lmost edge at V4
Beispieldurchlauf
V4
V11
V10
V6
V5
V7
V1
V13
V9
V15
V2
V3
V12
V14
V0
snap #16 moving stuff outside to avoid collision with Lmost edge at V4
Beispieldurchlauf
V8
V4
V11
V10
V6
V5
V7
V1
V13
V9
V15
V2
V3
V12
V14
V0
snap #17 placing initial vertex of tier
Beispieldurchlauf
V8
V4
V11
V10
V6
V5
V7
V1
V13
V9
V15
V3
V12
V14
V0
snap #18 adjusting slope of Rmost edge at V8
V2
Beispieldurchlauf
V8
V4
V11
V10
V6
V5
V7
V1
V13
V9
V15
V3
V12
V14
V0
snap #19 adjusting slope of Lmost edge at V8
V2
Einleitung
Grundlegendes
Algorithmus
Verbesserungen
Eigene Anpassungen für die Implementierung
I
Schnitte nur anhand der Ports, statt geometrisch
I
Zeichnen von glatt-orthogonalen Kanten
I
Finden von Überschneidungen von Kreissegmenten und Linien
Optimierungen:
I
Plateaus mit gleicher Höhe
I
Korrektur der Steigung der Kanten nur wenn nötig
I
Keine G-Kanten
Plateaus mit gleicher Höhe
Abbildung: Ohne Komprimierung
Höhe 38
Abbildung: Mit Komprimierung
Höhe 20
Korrektur der Steigung der Kanten nur wenn nötig
Abbildung: Graph mit Überschneidung
Korrektur der Steigung der Kanten nur wenn nötig
Korrektur der Steigung der Kanten nur wenn nötig
Abbildung: Graph ohne Überschneidung (40%)
Korrektur der Steigung der Kanten nur wenn nötig
Abbildung: Korrektur der Steigung ausgesetzt (40%)
Korrektur der Steigung der Kanten nur wenn nötig
Abbildung: Korrektur der Steigung ausgesetzt
Platzbedarf von G-Kanten
V1
V4
V4
V3
V3
V2
V0
Abbildung: Mit Kante {0, 4} aus
zwei Segmenten.
V1
V2
V0
Abbildung: Mit Kante {0, 4} aus
drei Segmenten.
Bewertungskriterien für glatt-orthogonale Zeichnungen
I
Fläche in Gittereinheiten
I
Fläche in Abhängigkeit der Anzahl Knoten
I
Anzahl Segmente in der Zeichnung
Die Testgraphen
I
844 Rome-Graphen
I
Oft zwischen 11 und 20 Knoten, durchschnittlich 18,2
I
Bis zu 51 Knoten
I
Nur 4-planar und zweifach zusammenhängend
5000
Fläche
500
50
10
10
20
30
40
50
Knotenanzahl
Abbildung: OC3 -Zeichnungen ohne Kompression
5000
Fläche
500
50
10
10
20
30
40
50
Knotenanzahl
Abbildung: OC3 -Zeichnungen nach Kompression, ohne Stufen
5000
500
10
50
Fläche
10
20
30
40
50
Knotenanzahl
Abbildung: SC2 -Zeichnungen, Steigung aller L-Kanten berichtigt
500
10
50
Fläche
5000
Keine Anpassungen nötig
Steigung muss nicht korrigiert werden
Alle Anpassungen nötig
10
20
30
40
50
Knotenanzahl
Abbildung: SC2 -Zeichnungen, Steigung L-Kanten bei Bedarf berichtigt
5000
Fläche
500
50
10
10
20
30
40
Knotenanzahl
Abbildung: SC2 -Zeichnungen, ohne G-Kanten
50
Ausblick
I
Bessere Laufzeit bei Kollisionsprüfung
I
Noch platzsparendere Zeichnungen
Untersuchung allgemeinerer Graphen
I
I
I
I
I
I
I
Nicht planar
nicht zweifach zusammenhängend
nicht zusammenhängend
höherer Grad als 4
...
Anwendung: automatischer Liniennetzplan
Literatur
Muhammad Jawaherul Alam, Michael A. Bekos, Michael Kaufmann, Philipp Kindermann, Stephen
G. Kobourov und Alexander Wolff: Smooth Orthogonal Drawings of Planar Graphs.
In: Alberto Pardo und Alfredo Viola (Herausgeber): LATIN 2014: Theoretical Informatics, Band
8392 der Reihe Lecture Notes in Computer Science, Seiten 144–155. Springer, Heidelberg, 2014.
Michael A. Bekos, Michael Kaufmann, Stephen G. Kobourov und Antonios Symvonis: Smooth
Orthogonal Layouts.
In: Walter Didimo und Maurizio Patrignani (Herausgeber): Graph Drawing, Band 7704 der Reihe
Lecture Notes in Computer Science, Seiten 150–161. Springer, Heidelberg, 2013.
Ulrik Brandes: The left-right planarity test, 2009.
http:
//citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.217.9208&rep=rep1&type=pdf,
besucht: April 2014.
Shimon Even und Robert E. Tarjan: Computing an st-Numbering.
Theoretical Comp. Sci., 2(3):339–344, 1976.
Yanpei Liu, Aurora Morgana und Bruno Simeone: A Linear Algorithm for 2-bend Embeddings of
Planar Graphs in the Two-dimensional Grid.
Discrete Appl. Math., 81(1–3):69–91, 1998.
Herunterladen