Data Structures

Werbung
Seminar über Algorithmen
DozentInnen: Helmut Alt, Claudia Klost
Randomisierte Datenstrukturen
Ralph Schäfermeier
13. 2. 2007
Das Verwalten von Mengen, so dass ein schneller Zugriff auf deren Elemente gewährleistet werden
kann, ist ein fundamentales Problem der Informatik.
Betrachte die total geordnete Menge U. Seien S1, S2, ... disjunkte endliche Teilmengen von U, und
jedes i aus einer dieser Teilmengen indiziert durch einen eindeutigen Schlüssel k(i) ∈ K. K ist total
geordnete Menge.
Definiert sind folgende Operationen:
MAKESET (S): Erzeuge neue (leere) Menge S.
INSERT (i, S): Füge Element i in S ein.
DELETE (k, S): Lösche Element mit Schlüsselwert k aus S.
FIND (k, S): Suche Element mit Schlüsselwert k in S.
JOIN (S1, i, S2): Ersetze S1 und S2 durch die neue Menge, wobei
f. a. j ∈ S1: k(j) < k(i),
f. a. j ∈ S2: k(j) > k(i).
PASTE (S1, S2): Ersetze S1 und S2 durch die neue Menge S = S1 S2, wobei
f. a. i ∈ S1 und j ∈ S2: k(i) < k(j).
SPLIT (k, S): Ersetze S durch die neuen Mengen S1 und S2:
S1 = {j ∈ S | k(j) < k},
S2 = {j ∈ S | k(j) < k}.
Eine Standardlösung des Problems bieten Binäre Suchbäume. Dabei sind die Laufzeiten von
INSERT, DELETE, FIND, SPLIT und PASTE proportional zur Höhe h des Baums. Bei
ungeeigneter Einfügereihenfolge entartet der Baum zu einer Verketteten Liste, in diesem Fall ist die
Laufzeit dieser Operationen in O(n).
Ein deterministischer Ansatz, die Höhe auf O(log n) zu beschränken, ist die Balancierung des
Baums nach einer Einfügeoperation.
Random Treaps
Definition 1:
Ein Treap T(S) (angeleitet von Tree und Heap) ist ein binärer Baum. Jeder Knoten v enthält ein
i ∈ S, dem ein Schlüsselwert k(i) und eine Priorität p(i) zugeordnet werden.
Bezüglich der Schlüsselwerte erfüllt T die Suchbaumeigenschaft, und bezüglich der Prioritäten die
Heap-Eigenschaft.
7, 30
4, 26
2, 13
6, 19
11, 27
9, 14
12, 22
Satz 1:
Sei S = {(k1, p1), ..., (kn, pn)} beliebige Menge aus Schlüssel-Prioritäten-Paaren. Seien alle
ki i ∈ {1,..., n} einander verschieden. Seien alle pi i ∈ {1,..., n} einander verschieden.
Dann existiert für S ein eindeutiger Treap T(S ).
Bei einem Random Treap wird die Priorität für jedes Element zufällig aus einem festen Intervall
[a,b] gewählt. Die Wahrscheinlichkeiten für alle Prioritäten aus [a,b] sind gleichverteilt. Jede
Priorität wird nur einmal ausgewählt.
Mulmuley Games
Teilnehmer:
 = {P1, ..., Pp}
(Players)
 = {S1, ..., Ss}
(Stoppers)
 = {T1, ..., Tt}
(Triggers)
 = {B1, ..., Bb}
(Bystanders)
 ∪  sei endliche Teilmenge einer total geordneten Grundmenge.
Für alle i,j, 1 ≤ i ≤ ||, 1 ≤ j ≤ ||:Pi < Sj (bezüglich dieser Ordnung).
, , ,  seien paarweise disjunkt.
Spiel A:
Zufälliges Ziehen ohne Zurücklegen aus X =  ∪ B, bis X leer ist.
V = Anzahl der Ziehungen, in denen ein Spieler Pi größer ist als alle bisher gezogenen Spieler.
Wert von Spiel A:
Ap:= E[V],
A0 := 0.
Lemma 1:
Für alle p ≥ 0: Ap = Hp.
Spiel D:
X =  ∪ T ∪ B.
Wie Spiel A, ein Spieler P zählt jedoch erst, nachdem der erste Trigger T gezogen wurde.
Lemma 2:
Für alle p, t ≥ 0: Dpt = Hp + Ht - Hp+t.
Laufzeitanalyse von Treaps
Wegen Lemma 1 können wir o.B.d.A. annehmen, dass die Elemente in der Reihenfolge ihrer
Prioritäten eingefügt werden. In diesem Fall sind keine Rotationen nötig.
Unter dieser Annahme können wir mit Hilfe von Mulmuley Game A folgendes zeigen:
Satz 2:
Sei T(S) ein Random Treap der Größe n. Sei x ∈ S das k-größte Element in S.
Dann ist die erwartete Tiefe von x in T:
E[t(x)] = Hk + Hn-k+1 + 1 = O(log n).
Suchoperationen sind somit in ihrer erwarteten Laufzeit durch O(log n) beschränkt.
Mit Hilfe von Mulmuley Game D lässt sich die erwartete Anzahl von Rotationen beim Einfügen
und Löschen beschränken:
Satz 3:
Sei T(S) ein Random Treap der Größe n. Sei x ∈ S das k-größte Element in S.
Dann ist die erwartete Anzahl von Rotationen beim Einfügen (Löschen) von x in (aus) T:
E [ r  x]=1 -
1
1
+ 1k
n- k +1
Es folgt also, dass auch die erwartete Laufzeit der Update-Operationen auf einem Random Treap
durch O(log n) beschränkt sind.
Random Skip Lists
Eine weitere Lösung des Problems der Verwaltung von Mengen stellen Skiplisten dar.
L6
L5
L4
L3
L2
-∞
1
2
3
4
5
+∞
L1
Definition 2:
Ein Leveling mit r Ebenen einer geordneten Menge S ist eine Folge verschachtelter Teilmengen von
S (S ist Teilmenge einer total geordneten Grundmenge U).
Lr ⊆ Lr-1 ⊆ ... ⊆ L2 ⊆ L1,
so dass Lr = Ø und L1 = S.
Bei einer randomisierten Skipliste S wird das Leveling wie folgt bestimmt: Alle Elemente sind in
Ebene 1 vorhanden, das Übernehmen in die nächsthöhere Ebene geschieht für jedes Element
zufällig mit der Wahrscheinlichkeit p = ½.
D.h. l(x) für x ∈ S ist eine unabhängige, geometrisch verteilte Zufallsvariable mit p = 1/2.
Lemma 3:
Für alle α > 1 gilt:
Die Anzahl der Ebenen r in einer randomisierten Skipliste S mit |S| = n ist mit großer
Wahrscheinlichkeit
r = O(log n).
Es lässt sich zeigen, dass
Pr [r  log n] ≤
1
n
−1
für alle 1
Laufzeitanalyse von Skiplisten
FIND: Stellt man die Skipliste als Baum dar, wobei jeder Knoten das Intervall ist, dass von zwei
benachbarten Elementen überspannt wird, so lässt stellt man fest, dass die FIND-Operation
maximal die Kinder eines Knotens I in Ebene j traversiert, um Ebene in die ebene j-1 zu gelangen.
Die Laufzeit von FIND ist also beschränkt durch
∑
r
O
i =1

1c  I j  y 
.
Da die Anzahl der Geschwister eines Knotens einer geometrischen Verteilung mit p = ½ unterliegt,
lässt sich zeigen, dass die erwartete Anzahl von Kindern eines Knotens in Ebene I
E[c(I)] ≤ 2 für alle I ∈ S.
Daraus und aus der Beschränkung der Anzahl der Ebenen mit großer Wahrscheinlichkeit folgt:
r
∑ 1c  I j  y =O log n
mit großer Wahrscheinlichkeit.
i=1
Die Operationen INSERT und DELETE müssen zunächst das Element bzw. dessen Platz in der
Liste finden. Die anschließend notwendigen Operationen zum Aufspalten bzw. Zusammenziehen
des Intervalls um sie herum geschieht in O(l(y)).
Die Kosten für INSERT und DELETE sind also auch beschränkt durch O(log n) (mit großer
Wahrscheinlichkeit).
Herunterladen