3. Übungsblatt
Automatisches Zeichnen von Graphen
Prof. Dr. Jens M. Schmidt, Dr. Alexander Apke, Arne Heimendahl, David Könen und Robin Kühling.
Aufgabe 1: RHHV-Zeichenverfahren (10 Punkte)
Ein Binärbaum heißt ungeordnet, falls für die Knoten des Baumes nicht festgelegt ist, ob sie linkes oder rechtes Kind ihres Vaters sind.
Wir betrachten das folgende RHHV-Zeichenverfahren (Right Heavy Horizontal Ver- tical) für einen ungeordneten Binärbaum T mit Wurzel r. Sei n(v) die Anzahl der Knoten des Unterbaumes T(v). Dann werden die Koordinaten der Knoten rekursiv durch die folgende Funktion berechnet:
RHHV(v, x, y):
Platziere den Knoten v auf den Punkt (x, y);
if v hat nur ein Kind w then RHHV((w, x+ 1, y);
else if v hat die beiden Kinder v1 und v2 then Sei o.B.d.A. n(v2)≥n(v1).
RHHV((v1, x, y+ 1);
Sei xm die größte bisher verwendete x-Koordinate.
RHHV((v2, xm+ 1, y);
end if
Die Zeichnung von T wird nun durch den Aufruf RHHV(r,0,0) erzeugt.
(i) Finden Sie die mit diesem Verfahren entstandene Zeichnung folgenden (unge- ordneten) Binärbaumes.
1
2 3
4 8 7
6
10 9 5
(ii) Zeigen Sie, dass das Verfahren keine Kantenkreuzungen erzeugt.
(iii) Zeigen Sie, dass jede erzeugte Zeichnung Breite höchstens n − 1 und Höhe höchstens dlogne hat.
(iv) Werden isomorphe Unterbäume gleich gezeichnet?
Aufgabe 2: Ein weiteres Zeichenverfahren (10 Punkte) Ein weiteres mögliches Verfahren, um einen BinärbaumT zu zeichnen, ordnet jedem Knoten als x-Koordinate dessen Position in der Preorder-Traversierung von T zu und alsy-Koordinate dessen Position in der Postorder-Traversierung vonT.
(i) Zeigen Sie, dassv genau dann inT(u) enthalten ist, wennvx > uxundvy < uy. (ii) Zeigen Sie, dass eine mit diesen Koordinaten erstellte geradlinige Zeichnung
von T kreuzungsfrei ist.
(iii) Werden isomorphe Bäume gleich gezeichnet?
(iv) Wie groß ist die Fläche der Zeichnung? Wie lässt sich die Zuordnung der Koordinaten verändern, um die Darstellung kompakter zu machen?
Aufgabe 3: Radialzeichnungen (10 Punkte)
Zeichnen Sie eine geometrisch korrekte radiale Baumzeichnung des folgenden Bau- mes mit dem Algorithmus der Vorlesung und Radien 2,3,4,5,6. Verdeutlichen Sie dabei jeweils, wie die einzelnen Kreissektoren berechnet wurden.
b
h r a
e
l j g i
m
c d f
k
Aufgabe 4: Reingold-Tilford im OGDF (Bearbeitungszeit: 2 Wochen, 10 Punkte) Schreiben Sie ein Programm innerhalb des OGDF, das einen zufälligen Binärbaum Gmit 12 Knoten erzeugt und jedem Knoten daraufhin nach dem Algorithmus von Reingold-Tilford seinex-Koordinate zuweist.
Benutzen Sie dazu die zum Download bereitgestellte Datei Uebung03.cpp. Hier werden die horizontalen Abstände zwischen den Knoten zunächst auf 40 gesetzt, damit eine Beispielausgabe erzeugt werden kann.
Fügen Sie in den Bereich des mehrzeiligen Kommentars Ihre Programmlogik ein, die die x-Koordinaten nach dem Algorithmus von Reingold-Tilford neu berechnet. Um den Baum dabei in Preorder- und Postorder-Traversierung durchlaufen zu können, sollten Sie die implementierten Arrays leftson(G), rightson(G) und parent(G) verwenden.