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.