| |
Wir wollen mit dem unteren Endpunkt b ähnlich verfahren und die Trapezzerlegung T
″
sowie die
Suchstruktur Q
″
aus T
′
bzw. Q
′
ableiten. Nun fädeln1 wir das Liniensegment s durch T
″
, indem wir alle Trapeze bestimmen, die von s
durchschnitten werden. Diese Trapeze werden in zweigeteilt und auf jeder Seite verschmelzen wir die horizontalen Erweiterungen aus T
″
mit s. So erhalten wir T (S
′
).
Die Suchstruktur Q(S
′
) erhalten wir wie folgt: Für jedes neue Trapez aus T (S
′
) erzeugen wir die
entsprechende Senke in der Suchstruktur. Jede Senke aus Q
″
, die von s zerschnitten wurde, wird zu einem X-Knoten mit dem Schlüssel s und den zwei neuerzeugten Senken als Kinderknoten. Das Trapez aus T
″
, das b enthält, bekommt noch einen Y -Knoten, da es zusätzlich durch die horizontale
Erweiterung, die durch b verläuft, geteilt wird.
Die Zeit, die wir benötigen um T (S
′
) und Q(S
′
) aus T (S) bzw. Q(S) abzuleiten, setzt sich aus der Zeit für die Lokalisirung der beiden Endpunkte und der threading-Zeit zusammen. Letzteres ist proportional zur der Anzahl der horizontalen Erweiterungen aus T (S), die s schneiden, oder der Anzahl der horizontalen Erweiterungen aus T (S
′
), die in s münden.
Wieviel Zeit brauchen wir um T (S) zu erzeugen, wenn wir die Liniensegmente nacheinander einfügen, beginnend mit leeren Strukturen? O.ensichtlich ist dies abhängig von der Einfügereihen- folge. Zwar ist T (S) von dieser Reihenfolge unabhängig, Q(S) und die Zeit um einen Punkt zu lokalisieren, hängen aber sehr stark von dieser Reihenfolge ab. Schlechte Beispiele sind schnell gefun- den: Stellen wir uns eine Menge S vor, mit n vertikalen Liniensegmenten, die die x-Achse schneiden. Werden die Liniensegmente nach der steigenden x-Koordinate eingefügt, dann werden die Pfade von der Wurzel zur Senke in Q(S) lang. Wollen wir nun einen Punkt lokalisieren, der auf der x-Achse liegt und sich rechts von allen Liniensegmenten befindet, dann benötigen wir O(n) Zeit.
Künftig argumentieren wir, dass wenn die Liniensegmente in zufälliger Reihenfolge eingefügt wer- den, wobei jede Anordnung mit gleicher Wahrscheinlichkeit vorkommt, verhält sich Q(S) in Erwar- tung besser. Dadurch wird die erwartete Zeit für die Konstruktion der Strukturen auch angemessen, die sich bekanntlich aus der erwarteten Zeit für die Lokalisierung der Punkte und der erwarteten threading-Zeit zusammensetzt. Die folgenden Lemmata geben Auskunft über diese Zeiten.
Lemma 2 Sei s1, . . . , sn eine zufällige Reihenfolge der Liniensegmente aus S, und Si = {s1, . . . , si} mit 0 = i = n. Für 1 < i = n ist die erwartete Anzahl der horizontalen Erweiterungen aus T (Si-1), die von si geschnitten werden, höchstens 4.
Beweis : Für ein Liniensegment s ε S bezeichne deg(s, T (Si)) die Anzahl der horizontalen Erweite- rungen aus T (Si), die im Inneren von s enden. Als nächtes betrachten wir die Anzahl der horizonta- len Erweiterungen, die in si enden. Da dieser Wert in T (Si-1) und T (Si) gleich ist, interessiert uns Exp(deg(si, T (Si))). Da T (Si) höchstens 2i horizontale Erweiterungen hat und jede Erweiterung in höchstens zwei Lini- ensegmenten endet, folgt
∑
sεS
ideg(s, T (Si)) = 4i. Weil wir eine zufällige Reihenfolge der Linienseg- mente angenommen haben, ist si irgendein Segment aus Si mit gleicher Wahrscheinlichkeit. Daraus folgt unmittelbar Exp(deg(si, T (Si))) = 4.
¤
Sei Hn = 1 + 1/2 + 1/3 + . . . + 1/n. Wir bemerken, dass Hn = T(log n). Genauer gilt für n > 1, log n < Hn < 1 + log n.
1threading ist der Fachausdruck für diese Prozedur.
|  |
|
| |
|
|