Baumeinbettung mit schönen Winkeln

Werbung
Baumeinbettung mit schönen Winkeln
Jan Baumann - [email protected]
2. Juli 2008
1
Einführung
Angenommen, wir möchten einen gegebenen Baum in der Ebene zeichnen,
d.h. planar einbetten. Dazu möchten wir zuerst für jede Kante die Steigung
festlegen und danach davon unabhängig ihre Länge. Für welche Wahl von
Steigungen bekommen wir eine Einbettung mit Kanten, die sich nicht schneiden? Um diese Frage zu beantworten, präzisieren wir zunächst einige Begriffe.
Definition 1. Ein konvexer Bogen (convex arch) ist eine polygonale Kette
mit einer Winkelsumme von höchstens π, bei der die Kantensteigungen der
Größe nach sortiert sind.
Ein Beispiel für einen konvexen Bogen ist Abb. 1 links.
Abb. 1: Links: Ein konvexer Bogen. Mitte: Kein konvexer Bogen, da die Summe
der Winkel größer als π ist. Rechts: Kein konvexer Bogen, da die Kanten
nicht nach Steigung sortiert sind.
Definition 2. Ein eingebetteter Baum hat konvexe Flächen, wenn der Pfad
zwischen je zwei Blattknoten des Baums ein konvexer Bogen ist.
1
Hat eine Baumeinbettung konvexe Flächen, so lassen sich alle Kanten, welche
einen Blattknoten beinhalten, zu unendlich langen Strahlen verlängern, ohne
dass sie sich kreuzen. Deshalb ist der resultierende Baum unabhängig von
der Wahl der Kantenlängen planar (siehe Abb. 2).
Abb. 2: Oben: Die Kanten eines Blattknotens einer konvexen Fläche lassen sich ins
Unendliche verlängern, ohne dass sie sich schneiden. Unten: Ist die Fläche
nicht-konvex (d.h. per Definition kein konvexer Bogen), so schneiden sich
die Strahlen.
Baumeinbettungen mit konvexen Flächen sind für das Auge angenehm zu
betrachten, z.B. ist es durch die Konvexität der Flächen einfacher, Knoten in
verschiedenen Teilbäumen auseinanderzuhalten (für ein Beispiel siehe Abb.
9).
Definition 3. Die Winkelauflösung (angular resolution) ist der minimale
Winkel zwischen je zwei Kanten, welche vom gleichen Knoten ausgehen, siehe
Abb. 3.
Nun können wir das Problem präzise formulieren:
Baumeinbettung mit konvexen Flächen und optimalen Winkeln
Eingabe: Baum T
Ausgabe: Baumeinbettung von T mit konvexen Flächen mit maximaler Winkelauflösung unter allen möglichen Einbettungen
2
120°
120°
120°
150°
150°
60°
90°
90°
90°
90°
Abb. 3: Links: Optimale Winkelauflösung von 2π/3. Mitte: Einbettung mit nichtoptimaler Winkelauflösung. Rechts: Optimale Einbettung mit 5 Knoten
Wir betrachten zwei Versionen dieses Problems:
1. Die Kantenreihenfolge in jedem Knoten von T ist festgelegt, d.h. eine
Einbettung ist festgelegt und diese muss der Algorithmus respektieren.
2. Die Kantenreihenfolge jedes Knotens kann vom Algorithmus beliebig
permutiert werden.
Abb. 4: Verschiedene Einbettungen eines Baumes haben verschiedene optimale
Winkelauflösungen
Die optimale Winkelauflösung von Problemversion eins kann sich bei gleichem Eingabebaum von Problemversion zwei unterscheiden. Der linke Baum
in Abbildung 4 hat eine Einbettung vorgegeben. Dieser Baum kann mit einer
maximalen Winkelauflösung von 2π/5 eingebettet werden. Im rechten Baum
konnte durch eine Permutation der Kanten des mittleren Knotens eine bessere Winkelauflösung, nämlich π/2, erreicht werden.
In der Phase, in welcher die Steigungen der Kanten festgelegt werden, kommt
es nicht auf die Wahl der Wurzel des Baums an, da die Definitionen des konvexen Bogens und der konvexen Fläche nicht von der Wurzel des Baums
abhängen. Deshalb nehmen wir an, dass T zunächst keinen als Wurzelknoten
3
ausgezeichneten Knoten hat. Nach dieser Phase ist es nützlich einen Wurzelknoten zu wählen, um die Struktur des Baumes mithilfe der Einbettung
besser zu visualisieren (näheres dazu weiter unten).
2
Pfade und Rakes
Zunächst behandeln wir einige Spezialfälle und bestimmen ihre optimale
Winkelauflösung.
2.1
Pfad
Definition 4. Ein Pfad ist ein Baum, in dem alle Knoten höchstens Grad 2
haben.
Offensichtlich ist die optimale Winkelauflösung eines Pfads genau π/2, die
genau dann erreicht wird, wenn wir alle Knoten auf einer gemeinsamen Linie
zeichnen (siehe Abb. 5).
Abb. 5: Ein Pfad und seine optimale Einbettung
2.2
Rake
Definition 5. Ein Rake ist ein Baum in dem alle Knoten höchstens Grad
3 haben und bei dem ein Pfad alle Knoten von Grad 3 verbindet. Sei T ein
Rake und sei P ein minimaler gerichteter Pfad in T , welcher alle Knoten vom
Grad 3 verbindet. Wenn T in der Ebene eingebettet ist, hat jeder Knoten v
vom Grad 3 innerhalb von P eine eingehende Kante in P , eine ausgehende
Kante in P und eine unorientierte Kante, welche nicht zu P gehört. Wir
sagen P macht einen Left-Turn in v, wenn die Kanten im Uhrzeigersinn
folgendermaßen geordnet sind:
1. Eingehende Kante
4
2. Ausgehende Kante
3. Unorientierte Kante
Sonst macht P in v einen Right-Turn. Wir bezeichnen ein Paar von direkt
aufeinanderfolgenden Turns in P , welche beide Left bzw. Right-Turns sind,
als Double-Turn.
Abb. 6: Links: Ein Rake ohne Double-Turns mit Winkelauflösung 2π/3. Mitte: Ein
Rake mit 3 Double-Turns (graue Dreiecke) mit Winkelauflösung 7π/12.
Rechts: Einbettung eines beliebigen Rakes mit Winkelauflösung π/2.
Lemma 1. Ein Rake ohne vorgegebene Einbettung hat eine optimale Winkelauflösung von 2π/3. Ein Rake mit vorgegebener Einbettung und k Double1
Turns hat eine optimale Winkelauflösung von π( 21 + 6+2k
).
Beweis. Falls der Rake keine Double-Turns hat, kann er optimal in die Ebene
eingebettet werden, indem man die Ebene zunächst in Sechsecke unterteilt
(man stelle sich Bienenwaben vor) und die Kanten des Rakes auf die Kanten
dieser Sechsecke legt, vgl. auch Abbildung 6 links. Wenn der Input ein Rake
ohne vorgegebene Einbettung ist, so können wir solch eine Einbettung durch
Permutation der Kantenfolgen immer erreichen, indem wir Left und RightTurns alternieren lassen. Diese Einbettung ist offensichtlich optimal.
Falls der Rake nun eine Einbettung vorgegeben hat, schauen wir uns die Winkel zwischen je zwei aufeinanderfolgenden Blattknoten des Baumes an. Diese
5
Winkel sind immer nicht-negativ und ihre Summe ergibt 2π, da dies eine Unterteilung des Vollkreises darstellt. Sei die Winkelauflösung nun π2 + , dann
muss der Winkel zwischen den beiden Pfaden der beiden Knoten vom Grad
3, welche kein Turn sind (die beiden äußersten Knoten vom Grad 3), mindestens π2 + sein. Der Winkel zwischen einem dieser Pfade und dem Pfad zum
Blattknoten des nächstgelegenen Turns muss mindestens 2 betragen, weil
diese beiden Pfade über zwei Winkel von mindestens π2 + verbunden sind.
Das gleiche Argument gilt für die Winkel zwischen den Blattknotenpfaden in
einem Double-Turn. Die restlichen Pfadpaare können parallel verlaufen.
Addieren wir nun diese Winkel erhalten wir 2( π2 + 3) für die Winkel am
Ende des Rakes und 2 für jeden Double-Turn. Da diese Summe gleich 2π
sein muss, können wir nach auflösen und erhalten
π + (6 + 2k) = 2π ⇒ = π(
1
).
6 + 2k
Da die Winkelauflösung als π2 + vorausgesetzt war, folgt die Behauptung.
Wenn die Anzahl k der Double-Turns sehr gross wird, gilt für die Winkelauflösung
1
π
1
)= .
lim π( +
k→∞
2 6 + 2k
2
Durch eine einfache Konstruktion können wir jeden Rake mit Winkelauflösung π2 einbetten. Man zeichnet den Pfad, welcher die Knoten vom Grad 3
verbindet abwechselnd horizontal und vertikal, anhängig davon, ob er einen
right Turn oder einen left Turn macht (zur Veranschaulichung siehe Abb. 6
rechts).
Im Allgemeinen zeigt dieser Algorithmus das Folgende:
Lemma 2. Sei T ein Rake, und seien zwei Steigungen, θ1 and θ2 , gegeben.
Dann kann T so eingebettet werden, dass alle Kanten Steigung θ1 oder θ2
haben und alle Flächen von T , außer der äußeren Fläche an der Wurzel,
konvex sind.
Wenn |θ1 − θ2 | ≤ π2 gilt, dann ist die Winkelauflösung der durch Lemma 2
erzeugten Einbettung |θ1 − θ2 |. Wir werden dieses Resultat später als Teil
unseres Algorithmus benutzen, um Bäume einzubetten, die keine Rakes sind.
2.3
Triple-Rake
Definition 6. Sei T ein Baum mit maximalem Knotengrad 3 und sei T 0 der
minimal überspannende Teilbaum der Knoten vom Grad 3 in T . T ist ein
Rake genau dann wenn T 0 ein Pfad ist. Der nächst einfachere Fall ist, wenn
6
Abb. 7: Ein Triple-Rake mit einem Double-Turn und einem short path. Die optimale Winkelauflösung beträgt 5π
18
T 0 einen Knoten t vom Grad 3 enthält. Wenn wir t als Wurzelknoten von
T festlegen, dann sind die drei Teilbäume, welche von t ausgehen, Rakes.
Deshalb nennen wir T einen Triple-Rake. Falls T eingebettet ist, können wir
in jedem Rake-Teilbaum Turns und Double-Turns analog zur Rake Definition
definieren. Zusätzlich definieren wir einen short path als einen Pfad ohne
Turns, d.h. ein einzelner Knoten vom Grad 3, der durch Pfade mit t und mit
zwei Blattknoten verbunden ist.
Lemma 3. Wenn T ein Triple-Rake mit s short paths ohne vorgegebene
1
). Wenn
Einbettung ist, dann ist seine optimale Winkelauflösung π( 21 + 2(9−2s)
T ein Triple-Rake mit s short paths und d double Turns mit vorgegebener
1
Einbettung ist, dann ist seine optimale Winkelauflösung π( 12 + 2(9−2s+2d)
).
Beweis. Der Fall ohne vorgegebene Einbettung folgt aus dem anderen Fall,
indem man T ohne double Turns einbettet. Für den Fall mit vorgegebener
Einbettung nehmen wir wieder an, daß die optimale Winkelauflösung π2 + ist. Nun gehen wir analog zu Lemma 1 vor: wir betrachten alle in radialer Ordnung um t auftretenden Paare von Blattknoten mit ihren anhängenden Pfaden und bestimmen ihren Winkel zueinander. Während wir um den
Triple-Rake herumwandern, addieren wir alle so erhaltenen Winkel. Diese
Summe muss wieder gleich 2π sein.
7
Die drei Winkel zwischen den Blattknotenpfaden der Knoten vom Grad 3,
welche keine Turns sind (die äußersten Knoten vom Grad 3) sind mindestens π2 + . Falls der betrachtete Teil-Rake kein short path ist, ist analog zu
Lemma 1 der Winkel zwischen dem Blattknotenpfad des Knotens vom Grad
3, welcher kein Turn ist, und dem Blattknotenpfad des nächstgelegen Turns
mindesten 2. Double Turns können auch wie in Lemma 1 behandelt werden,
d.h. 2 Winkelvergrößerung für jeden Double Turn. Insgesamt ergibt sich
3π
+ (9 − 2s + 2d) = 2π,
2
woraus die Behauptung wieder folgt.
Der Beweis legt alle Winkel der Einbettung fest, so dass ein Triple-Rake nun
problemlos eingebettet werden kann.
3
Einbettung von Bäumen mit vorgegebener
Einbettung
Nachdem wir nun die Behandlung der Spezialfälle abgeschlossen haben, können wir uns dem allgemeinen Fall der Baumeinbettung zuwenden. Wir nehmen dazu an, daß der Baum T kein Path, Rake oder Triple-Rake ist, da die
Einbettung für diese Fälle ja bekannt ist. Da wir bis jetzt keinen als Wurzelknoten r ausgezeichneten Knoten benötigt haben, bestimmen wir diesen
folgendermassen:
- Falls T Knoten mit Knotengrad 4 oder größer enthält, dann soll einer
dieser Knoten die Wurzel r sein.
- Ansonsten betrachten wir T 0 , den minimalen überspannenden Teilbaum
von T , welcher alle Knoten vom Grad 3 enthält. Wir können T 0 finden,
indem wir aus T alle Blattknoten und alle Pfade, die aus Grad 2 Knoten
bestehen und zu einem Blattknoten führen, entfernen. Dieser Teilbaum
T 0 kann kein Pfad sein, da wir vorausgesetzt haben, dass T kein Rake
ist. Deshalb existiert in T 0 mindestens ein Knoten mit Grad 3 und die
Wurzel r soll einer dieser Knoten sein.
Nachdem wir nun einen Knoten als Wurzelknoten ausgezeichnet haben, betrachten wir für jeden Knoten v und jeden Kindknoten w von v den Teilbaum
Tw , welcher durch v, w und allen Nachfahren von w besteht. Später wird es
wichtig sein zu bestimmen, ob dieser Teilbaum ein Pfad oder ein Rake ist.
Das dieses in Zeit O(n) möglich ist, zeigt das folgende Lemma.
8
Lemma 4. Für alle w können wir in Zeit O(n) entscheiden, ob Tw ein Pfad,
ein Rake oder ein Baum der kein Pfad oder Rake ist.
Beweis. Man gehe von den Blättern des Baums in Richtung des Knotens v.
Bleibt der Knotengrad gleich 2 handelt es sich um einen Pfad, bei Knotengrad
3 um einen Rake und bei Knotengrad größer 3 um keinen Pfad oder Rake. Da
man für immer näher an der Wurzel liegende Knoten die bereits berechneten
Teillösungen benutzen kann und deswegen jeder Knoten nur einmal besucht
werden muss, folgt die Behauptung.
Definition 7. Wir definieren einen Fork im Knoten v als eine Teilfolge von
zwei oder mehr Kindknoten wi von v (Reihenfolge der wi ist durch die vorgegebene Einbettung im Konten v festgelegt), so dass die Bäume Twi des ersten
und letzten Kindes der Teilfolge Pfade und alle Twi innerhalb der Teilfolge
Rakes sind (siehe Abb. 8).
Abb. 8: Ein Knoten mit 3 Forks. Die Teilbäume dieses Knotens enthalten noch
weitere Forks
Ein Fork ist auch eindeutig durch den Teilbaum bestehend aus v, der Teilfolge
von Kindknoten wi von v und deren Nachfahren bestimmt. Wenn v nicht die
Wurzel ist, ist die Teilfolge wi in linearer Reihenfolge. Falls v = r, dann
sind die Kindknoten wi in zyklischer Reihenfolge um r angeordnet und wir
erlauben jede lineare Teilfolge dieser zyklischen Reihenfolge. Falls für genau
einen Kindknoten w von r der Teilbaum Tw ein Pfad ist, und alle anderen
Twi Rakes sind, erlauben wir auch einen Fork bestehend aus dem Pfad als
Startpfad des Forks, den Rakes in der zyklischen Ordnung um die Wurzel,
und wieder dem Pfad als Endpfad des Forks.
9
Lemma 5. Falls der Teilbaum Tw ein Rake ist, dann enthält dieser genau
einen Fork am untersten Knoten mit seinen beiden Söhnen. Ansonsten gibt
es mindestens zwei Forks in den Knoten von Tw (vorausgesetzt Tw ist kein
Pfad).
Beweis. Ein Rake Teilbaum Tw der Höhe 2 besitzt offensichtlich exakt einen
Fork. Erweitern wir diesen Rake nach oben gibt es nur zwei Möglichkeiten,
damit Tw ein Rake bleibt:
• Der Rake wird durch einen Pfad verlängert.
• Der Rake wird durch einen Pfad verlängert und bekommt in seiner
Wurzel einen neuen Pfad zu einem Blatt.
In beiden Fällen entsteht kein neuer Fork.
Sei Tw nun kein Pfad oder Rake. Hat w nur einen Sohn x, dann ist Tx auch
kein Rake und wir können in Tx zwei Forks finden. Hat w zwei Söhne, dann
ist entweder einer der beiden Söhne kein Rake (in diesem gibt es mind. zwei
Forks) oder beide sind Rakes und haben in ihren untersten Knoten jeweils
einen Fork. Hat Tw drei oder mehr Söhne, und einer davon ist kein Path oder
Rake, gibt es allein in diesem Unterbaum schon zwei Forks. Ist genau einer der
drei oder mehr Unterbäume ein Rake, müssen die anderen Unterbäume Pfade
sein. Dann haben wir einen Fork im Rake und einen bei w durch die beiden
Pfade. Wenn alle Unterbäume Pfade sind, erzeugt jedes aufeinanderfolgene
Pfadpaar einen Fork, also gibt es mindestens zwei.
Lemma 6. Sei F ein Fork in einem Knoten v, welcher r rakes beinhaltet,
in einer Baumeinbettung mit konvexen Flächen und einer Winkelauflösung
von θ. Dann ist der Winkel zwischen dem ersten und dem letzten Blatt in F
mindestens (r + 1)θ.
Beweis. Insgesamt gibt es r + 2 Kanten in v, zwischen denen r + 1 Winkel
sind. Da die Winkelauflösung θ ist, muss jeder dieser Winkel mindestens θ
sein. Deshalb muss der Gesamtwinkel der ausgehenden Kanten im Knoten v
mindestens (r + 1)θ sein. Durch Hinzufügen weiterer Kanten des Forks kann
dieser Winkel nicht mehr kleiner werden.
Lemma 7. Sei T ein Baum mit f Forks und Wurzelknoten r. Dann hat jede
Einbettung mit konvexen Flächen von T eine Winkelauflösung von höchstens
2π/f .
Beweis. Wir zeigen allgemeiner, daß wenn T f Forks in einem Knoten v hat,
der Winkel zwischen dem ersten und dem letzten Blatt der Unterbäume von
v mindestens f θ ist. Die Behauptung folgt dann für v = r. Sei die Steigung
10
des ersten Blatts o.B.d.A. 0. Durch jeden Fork in einem Unterbaum von v,
welcher kein Rake oder Path ist, vergrößert sich die Steigung monoton um θ.
In einem Rake, welcher kein Teil eines Forks ist, müssen die untersten beiden
Blätter einen Winkel von θ einschliessen (dies ist ein Fork). Jeder Fork im
Knoten v, welcher r Rakes enthält (also insgesamt r+1 Forks), führt zu einer
Winkelvergrößerung von (r + 1)θ und diese Vergrößerung ist wieder gleich
der Winkelvergrößerung von r+1 Forks.
Lemma 8. In einem Baum mit Wurzel r (die Wurzel wurde wie oben beschrieben gewählt), welcher kein Pfad, Rake oder Triple Rake ist, gibt es
mindestens vier Forks.
Beweis. Falls zwei oder mehr Teilbäume, welche von der Wurzel r ausgehen, keine Pfade oder Rakes sind, folgt die Behauptung aus Lemma 5, denn
ein Baum, welcher kein Pfad oder Rake ist, hat mindestens 2 Forks. Wenn
r vier Söhne hat, von denen genau einer kein Pfad oder Rake ist, sind in
diesem Sohn mindestens 2 Forks. Falls die restlichen drei Söhne Pfade sind,
ergeben sich zwei Forks (erster Pfad mit zweitem und zweiter mit drittem).
Falls die restlichen drei Söhne zwei Pfade und ein Rake sind, ergibt sich zwischen den beiden Pfaden ein Fork und im Rake gibt es auch mindestens ein
Fork. Falls unter den restlichen Söhnen zwei oder mehr Rakes sind, gibt es
auch mindestens zwei Forks, also gibt es immer mindestens vier Forks bei
dieser Konfiguration. Nun kommen wir zu dem Fall, in dem alle vier oder
mehr Söhne von r Pfade oder Rakes sind. Sind alle vier Söhne Pfade, dann
erzeugt jeder Path einen Fork mit einem anderen Pfad (falls nur ein Pfad
existiert schliesst dieser den Fork mit sich selbst) im Uhrzeigersinn um die
Wurzel und jeder Rake hat einen Fork am untersten Kindknoten, also wieder
insgesamt mindestens vier. Wenn r Knotengrad 3 hat, dann kann keiner der
drei Teilbäume, deren Ursprung r ist, ein Pfad sein (wegen der Wahl unserer
Wurzel). Ausserdem muss einer der Teilbäume kein Rake sein, da wir vorausgesetzt haben, daß T kein Triple-Rake ist. Aus diesem Teilbaum erhalten wir
mindestens zwei Forks und mindestens zwei Forks aus den anderen beiden
Teilbäumen.
Wegen Lemma 7 und 8 ist die Winkelauflösung eines Baums, welcher kein
Pfad, Rake oder Triple Rake ist, höchstens π2 . Deshalb können wir die RakeKonstruktion von Lemma 2 verwenden.
Lemma 9. Sei T ein Baum mit f Forks und Wurzelknoten r. Dann hat die
Einbettung mit konvexen Flächen von T eine Winkelauflösung von 2π/f .
Beweis. Wir legen die Kantensteigungen von T in Post-Ordnung fest. In
einem Unterbaum mit f 0 Forks ist der Winkel zwischen dem ersten und dem
11
0
letzten Blatt des Unterbaums 2π ff , also wird der Gesamtwinkel um T wie
gewollt wieder 2π sein. Wenn wir die Kantensteigungen der Unterbäume eines
Knotens v festlegen, betrachten wir die Kanten von v in ihrer Reihenfolge.
Jeder Unterbaum, welcher kein Pfad oder Rake ist, bekommt für die Kante zu
seinem ersten Blatt die gleiche Steigung wie das letzte Blatt des vorherigen
Unterbaums zugewiesen. Bei jedem weiteren Blatt addieren wir die Winkelauflösung zur Steigung dazu. Die Kante, welche zu diesem Teilbaum führt,
bekommt als Steigung die Winkelhalbierende des Winkels zwischen dem ersten und dem letzten Blatt zugewiesen. Dieser Winkel ist mindestens 2π/f
größer als der Winkel der ersten Blattkante und mindestens 2π/f kleiner als
der Winkel der letzten Blattkante des Unterbaums. Deshalb ist zwischen den
Kanten von v immer ein Winkel von mindestens 2π/f .
Jeder Pfad, welcher nicht der abschließende Pfad eines Forks ist, bekommt die
gleiche Steigung wie das zuletzt gezeichnete Blatt. Jeder Rake, welcher sich
in einer Folge von Rakes befindet, welche direkt auf einen Pfad folgt, wird
mit Hilfe von Lemma 2 so gezeichnet, so dass die Steigung insgesamt um
2π/f ansteigt (also wie in einem einzelnen Fork). Die Wurzelkante des Rakes
bekommt die gleiche Steigung wie die Kante der letzten Blatts des Rakes.
Jeder andere Rake wird auch mit Lemma 2 gezeichnet, allerdings bekommt
die Wurzelkante die gleiche Steigung wie die Kante des ersten Blatts des Rake.
Letztlich bekommt jeder zweite Pfad eines Forks die Steigung der Summe des
letzten Blatts und 2π/f .
Kombinieren wir diese Lemmata erhalten wir:
Theorem 1. Sei T ein Baum mit vorgegebener Einbettung ohne Wurzel.
Dann kann kann eine Einbettung von T mit konvexen Flächen und optimaler
Winkelauflösung in Zeit O(n) gefunden werden.
Beweis. Zuerst testen wir, ob T ein Pfad, Rake oder Triple Rake ist. Ist
T ein Pfad, betten wir T mit Winkelauflösung π ein. Falls T ein Rake ist,
benutzen wir Lemma 1, falls T ein Triple Rake ist, benutzen wir Lemma
3. Ansonsten bestimmen wir wie oben beschrieben einen Wurzelknoten, bestimmen welche Teilbäume Pfade und Rakes sind, zählen die Anzahl Forks in
jedem Knoten und benutzen die Einbettung von Lemma 9. Die Optimalität
der Winkelauflösung folgt aus Lemma 7.
12
4
Einbettung von Bäumen ohne vorgegebener
Einbettung
Nun können wir Bäume ohne vorgegebener Einbettung behandeln. Da unsere Wahl der Wurzel nicht von der Einbettung abhängt können wir diese
Wurzel auch für diesen Fall verwenden. Allerdings hängt die Definition eines
Forks stark von der Einbettung ab, deshalb müssen wir um eine maximale
Winkelauflösung zu erreichen, die Anzahl der Forks minimieren.
Definition 8. Wir definieren den Excess eines Knotens v, welcher nicht der
Wurzelknoten ist, als
Ev = max(0, Pv − Nv − 1),
wobei Pv die Anzahl der von v herabgehenden Bäume, die Pfade sind, ist und
Nv die Anzahl der von v herabgehenden Bäume, welche weder Pfade noch
Rakes sind, ist. Für den Wurzelknoten definieren wir Pr und Nr genauso und
setzen
Er = max(0, Pr − Nr ).
Der Gesamt-Excess E(T) ist die Summe der Excesse in jedem Knoten.
Lemma 10. Jede Einbettung eines Baums T in der Ebene hat mindestens
E(T ) Forks und es gibt eine Einbettung von T mit genau E(T ) forks.
Beweis. Im Knoten v gibt es, unabhängig von der Wahl der Einbettung, Pv
Pfade, welche Pv − 1 potentielle hintereinanderfolgene Pfadpaare bilden können (Pv Paare in der zyklischen Reihenfolge an der Wurzel). Höchstens Nv
von diesen Pfadpaaren können von einem Unterbaum getrennt werden, welcher kein Pfad oder Rake ist (damit kein Fork entsteht). Die verbleibenden
Pfade erzeugen Forks, also gibt es mindestens Ev forks in v und E(T ) insgesamt. Diese Schranke wird erreicht, indem man in jedem Knoten jeweils einen
Pfad und einen Unterbaum, welcher kein Pfad oder Rake ist, abwechselnd
nebeneinander setzt, solange dies möglich ist. Die restlichen Pfade erzeugen
Forks. Die Platzierung eines Rakes in dieser Reihenfolge und die Reihenfolge
der Unterbäume in einem Rake hat auf die Anzahl der entstehenden Forks
keine Auswirkung.
Theorem 2. Sei T ein Baum ohne vorgegebener Einbettung ohne Wurzel.
Eine Einbettung von T mit konvexen Flächen und optimaler Winkelauflösung kann in Zeit O(n) gefunden werden. Wenn T kein Pfad, Rake oder
Triple-Rake ist, ist die optimale Winkelauflösung aller Einbettungen von T
mit konvexen Flächen 2π/E(T ).
13
Beweis. Zuerst testen wir, ob T ein Pfad, Rake oder Triple Rake ist. Ist
T ein Pfad, betten wir T mit Winkelauflösung π ein. Falls T ein Rake ist,
benutzen wir Lemma 1, falls T ein Triple Rake ist, benutzen wir Lemma 3.
Ansonsten bestimmen wir wie oben beschrieben einen Wurzelknoten, legen
mit Lemma 10 eine Einbettung mit einer minimalen Anzahl von Forks fest
und benutzen dann Theorem 1 mit der gleichen Wurzel. Die Optimalität der
Winkelauflösung folgt aus den Lemmata 7, 9 und 10.
5
Festlegen der Kantenlängen
Obwohl unser Hauptaugenmerk auf den Steigungen der Kanten lag, können
wir keinen Baum zeichnen ohne seine Kantenlängen festzulegen. Da wir explizit davon ausgegangen sind, daß die Pfade, welche zu einem Blattknoten
führen, ins Unendliche verlängert werden dürfen ohne sich zu kreuzen, können wir die Kantenlängen nach Belieben festlegen um den Baum ästhetisch
aussehen zu lassen oder um eine uns wichtige Eigenschaft des Baums zu
unterstreichen.
5.1
Gleiche Kantenlängen
Wenn alle Kantenlängen auf die gleiche Länge gesetzt werden, wird ein Baum
mit einem für das Auge angenehmen gleichen Knotenabstand erzeugt. Diese
Wahl der Kantenlängen ist auch gut geeignet, falls der Baum keinen als
Wurzelknoten ausgezeichneten Knoten hat. Für ein Beispiel siehe Abb. 9.
Abb. 9: Ein Baum mit uniformen Kantenlängen
14
5.2
Knoten auf konzentrischen Kreisen
Abb. 10: Ein Baum, bei dem die Knoten auf konzentrischen Kreisen liegen
Wir können den Wurzelknoten in das Zentrum eines Systems von konzentrischen Kreisen legen. Jeder andere Knoten liegt auf dem Kreis, der seinem
Abstand zur Wurzel entspricht. Um dies zu erreichen, legen wir die Kantenlängen in preorder (rLR) fest. Da die Steigungen festgelegt sind, kann eine
neue Kante (u, v) eingefügt werden, indem von der Position von u (schon
festgelegt wegen preorder) ein Strahl mit der festgelegten Kantensteigung ins
Unendliche gelegt wird. Da der Kreis von u innerhalb des Kreises von v liegt,
schneidet der Strahl den Kreis von v in genau einem Punkt; an diesem Punkt
wird v platziert. Die Kantenlänge ist die Länge des Verbindungsvektors. Ein
Beispiel ist in Abb. 10 zu sehen. Baumzeichnungen dieser Art machen die
Wurzel für den Betrachter direkt erkennbar. Ausserdem wird der Abstand
eines jeden Knotens von der Wurzel deutlich sichtbar, besonders wenn die
Kreise mit angezeigt werden.
5.3
Kantenlänge abhängig von der Position im Baum
Legt man die Kantenlängen als Funktionen des Abstands von der Wurzel fest,
entstehen Bäume in dem die Abstände von der Wurzel und der Wurzelknoten
selbst schnell erkennbar werden. Abb. 11 zeigt einen Baum mit Kantenlängen
invers proportional zum Abstand von der Wurzel.
15
Abb. 11: Ein Baum mit Kantenlängen invers proportional zum Abstand von der
Wurzel
16
Herunterladen