1. Übungsblatt
Automatisches Zeichnen von Graphen
Prof. Dr. Jens M. Schmidt, Dr. Alexander Apke, Arne Heimendahl, David Könen und Robin Kühling.
Aufgabe 1: Es werde Schlicht! (10 Punkte)
Beschreiben Sie einen Algorithmus mit linearer Laufzeit (d.h.O(n+m)), der testet, ob ein gegebener Multigraph schlicht ist (d.h. weder Schleifen noch Parallelkanten enthält).
Aufgabe 2: Kleine Kreuzungszahlen (10 Punkte)
Finden Sie eine geradlinige Zeichnung des folgenden Graphen K6 mit möglichst wenigen Kantenkreuzungen, und beweisen Sie, dass diese Anzahl minimal ist.
Tipp: Erinnern Sie sich für den Beweis an die Grundlagen planarer Graphen, z.B.
an die Eulersche Polyederformel und den Satz von Kuratowski.
Aufgabe 3: Applied Graph Drawing (10 Punkte)
Finden Sie eine möglichst schöne gradlinige Zeichnung des folgenden GraphenG= ({1, . . . ,20}, E). Welche Optimierungskriterien bedient diese?
Adjazenzliste für E:
1→2→5→10 11→8→12→18
2→1→3→6 12→4→11→15
3→2→4→8 13→10→14→16
4→3→5→12 14→5→13→15
5→1→4→14 15→12→14→17
6→2→7→9 16→13→17→20
7→6→8→19 17→15→16→18
8→3→7→11 18→11→17→19
9→6→10→20 19→7→18→20 10→1→9→13 20→9→16→19
Aufgabe 4: Graphenzeichnen im OGDF (10 Punkte) Schreiben Sie ein Programm innerhalb des Open Graph Drawing Frameworks (OGDF), dass einen zufälligen Graphen G mit 10 Knoten und 12 Kanten erzeugt und dar- aufhin überprüft, ob G ein Dreieck (d.h. einenC3) enthält. Geben Sie Ggraphisch aus und markieren sie die Kanten jedes Dreiecks (falls vorhanden) farblich. Folgen Sie dazu folgenden Anweisungen.
(i) Installieren Sie das OGDF wie folgt (für Linux siehe hier).
(a) Laden Sie die jüngste OGDF-Version und entpacken Sie den Inhalt des Unterordners OGDF-snapshot in das Verzeichnis <PATH> Ihrer Wahl.
(b) Installieren Sie die Binärdistributionvon CMake undVisual Studio Com- munity ≥2017 und fügen Sie bei letzterer die Unterstützung von C++- Konsolenanwendungen hinzu.
(c) Starten Sie CMake, setzen Sie den dortigen SourceCode-Pfad auf <PATH>, den Binaries-Pfad auf <PATH>\binariesund klicken Sie nacheinander auf configure, generate und open project (dies erstellt und öffnet die Visual Studio .sln-Datei). In Visual Studio kompilieren Sie die OGDF mit einem Rechtsklick aufALL_BUILD→Erstellen; dies erstellt die Bibliotheksdatei
<PATH>\binaries\Debug\OGDF.lib (läuft ihr Projekt fehlerfrei, können Sie hier durch das Umstellen der Kompilierung von dem DEBUG auf den RELEASE-Modus einen Geschwindigkeitszuwachs erreichen).
(d) Erstellen Sie in Visual Studio innerhalb der Projektmappe ein neues lee- res Projekt namens Uebung1, markieren dies als Startup-Project und fü- gen Sie die Datei Uebung1.cppder Vorlesungseite zu diesem Projekt hin- zu. Unter Projekteigenschaften → C/C++ fügen Sie <PATH>\include;
<PATH>\binaries\includezu Zusätzliche Includeverzeichnisse und unter Präprozessor OGDF_DEBUG; hinzu. Als Zusätzliche Bibliotheksverzeichnis- se des Linkers fügen Sie<PATH>\binaries\Debug\OGDF.lib;hinzu (ana- log für den Release-Modus <PATH>\binaries\Release\OGDF.lib;). Un- ter Projektabhängigkeiten markieren Sie OGDF.
(ii) Nun sollte das Projekt Uebung1 kompilieren und ein Ausführen die Dateien Ausgabe.gml und Ausgabe.svn erzeugen, welche einen Zufallsgraphen mit 10 Knoten und 12 Kanten enthalten (ein optionales Debuggen benötigt das An- kreuzen der Box Microsoft Symbol Servers unter Tools→ Options → De- bugging→Symbols). Informieren Sie sich in derOGDF-Snapshot-Dokumentation, welcher Befehl was bewirkt, einige Beispiele darin finden Siehier(Achtung: Die Referenzdokumentation auf www.OGDF.net ist im Vergleich dazu veraltet).
(iii) Tauschen Sie die auskommentierte Zeile gegen Ihre Programmlogik aus, die die Kanten jedes Dreiecks im GraphenG färbt; die Ausgabe verwendet dann ein (bereits implementiertes) kräftebasiertes Zeichenverfahren. Schicken Sie Source-Code, lauffähiges Programm und Programmausgabe dem Übungsgrup- penleiter vor dem Übungstermin per EMail und stellen Sie das Programm in der Übungsgruppe vor. MityEdoderGoVisual Diagram Editorlassen sich die Graphen interaktiv anzeigen.