Beispiel 8
F (z) :=
Xn≥0
2
nz
n= 1 1 − 2z G(z) :=
Xn≥0
nz
n= z (1 − z)
2⇒ F (z)G(z) = z
(1 − z)
2(1 − 2z) =
Xn≥0 n
X
i=0
(n − i)2
iz
nEADS 7.3 Erzeugendenfunktionen 42/530
ľErnst W. Mayr
Partialbruchzerlegung:
z
(1−z)2(1−2z) =
(1)
z }| {
−2
(1−z)+ −z (1−z)2 +
(2)
z }| { 2 1−2z
=X
n≥0
2n+1zn
| {z }
(2)
−X
n≥0
nzn−2X
n≥0
zn
| {z }
(1)
;
Also:
n
X
i=0
2i(n−i) = [zn](F G)(z)
= [zn]
X
n≥0
(2n+1−n−2)zn
7.4 Transformation des Definitions- bzw. Wertebereichs Beispiel 9
f
0= 1 f
1= 2
f
n= f
n−1· f
n−2f¨ ur n ≥ 2 . Setze
g
n:= log f
n. Dann gilt
g
n= g
n−1+ g
n−2f¨ ur n ≥ 2
g
1= log 2 = 1, g
0= 0 (f¨ ur log = log
2) g
n= F
n(n-te Fibonacci-Zahl)
f
n= 2
FnEADS 7.4 Transformation des Definitions- bzw. Wertebereichs 44/530 ľErnst W. Mayr
Beispiel 10
f
1= 1 f
n= 3f
n2
+ n; f¨ ur n = 2
k; Setze
g
k:= f
2k.
Beispiel 10 Dann gilt:
g
0= 1
g
k= 3g
k−1+ 2
k, k ≥ 1 Damit ergibt sich:
g
k= 3
k+1− 2
k+1, also f
n= 3 · 3
k− 2 · 2
k= 3(2
log 3)
k− 2 · 2
k= 3(2
k)
log 3− 2 · 2
k= 3n
log 3− 2n .
EADS 7.4 Transformation des Definitions- bzw. Wertebereichs 45/530 ľErnst W. Mayr
Kapitel II H¨ ohere Datenstrukturen
1. Grundlegende Operationen
Es sei U das Universum von Schl¨ usseln mit einer (totalen) Ordnung ≤. S ⊆ U sei eine Teilmenge der Schl¨ ussel. Gegeben seien eine Menge von Datens¨ atzen x
1, · · · , x
n, wobei jeder Datensatz x durch einen Schl¨ ussel k(x) ∈ S gekennzeichnet ist.
Jeder Datensatz x besteht aus seinem Schl¨ ussel k(x) und seinem
eigentlichen Wert v(x).
IsElement(k, S ): ist k ∈ S, wenn ja, return v(k) Insert(k, S): S := S ∪ {k}
Delete(k; S): S := S \ {k}
FindMin(S): return min S FindMax(S): return max S DeleteMin(S): S := S \ min S
ExtractMin(S): return min S, S := S \ min S DecreaseKey(k, ∆, S): ersetze k durch k − ∆ Union(S
1, S
2): S
1:= S
1∪ S
2Find(k): falls k ∈ S, so finde x mit k = k(x) Merge(S
1, S
2): S
1:= S
1∪ S
2, falls S
1∩ S
2= ∅ Split(S
1, k, S
2): S
2:= {k
0∈ S
1|k
0≥ k}
S
1= {k
0∈ S
1|k
0< k}
Concatenate(S
1, S
2): S
1:= S
1∪ S
2;
Vorauss.: FindMax(S
1) ≤ FindMin(S
2)
EADS 1 Grundlegende Operationen 47/530
ľErnst W. Mayr
Datenstrukturklasse mindestens angebo- realisiert in tene Funktionen
W¨ orterbuch IsElement(), Hashtable, (Dictionary) Insert(), Delete() Suchb¨ aume Vorrangwarteschlange FindMin(), Insert(), balancierte, leftist (Priority Queue) Delete(), B¨ aume, Binomial
[IsElement()] Queues Mergeable heaps FindMin(), 2-3-B¨ aume,
Insert(), Delete(), Binomial Queues, Merge() Leftist-B¨ aume Concatenable queues FindMin(), 2-3-B¨ aume
Insert(), Delete(),
Concatenate()
Definition 11
Bei einem
externen Suchbaumwerden die Schl¨ ussel nur an den Bl¨ attern gespeichert, die inneren Knoten enthalten Verwaltungsinformationen.
Bei
internen Suchb¨aumenliegen die Schl¨ ussel an den internen Knoten, die Bl¨ atter sind leere Knoten. Zeiger auf Bl¨ atter sind daher NIL-Pointer und werden gew¨ ohnlich nicht angegeben.
EADS 1 Grundlegende Operationen 49/530
ľErnst W. Mayr
2. (Balancierte) Suchb¨ aume
Wir betrachten zun¨ achst zwei Familien h¨ ohenbalancierter externer Suchb¨ aume.
2.1 (a,b)-B¨ aume
Definition 12
Ein (a, b)-Baum ist ein externer Suchbaum mit folgenden Eigenschaften:
1
alle Bl¨ atter haben die gleiche Tiefe;
2
die Anzahl der Kinder eines jeden internen Knoten ist ≤ b und
≥ a (f¨ ur die Wurzel: ≥ 2);
3
es gilt b ≥ 2a − 1.
4
(a, b)-B¨ aume mit b = 2a − 1 heißen auch
B-B¨aume.Bei jedem internen Knoten v mit d = d(v) Kindern werden d − 1 Schl¨ ussel k
1, . . . , k
d−1gespeichert, so dass (mit k
0:= −∞, k
d= +∞) gilt:
k
i−1< alle Schl¨ ussel im i-ten Unterbaum von v ≤ k
i.
Also z.B.: k
i:= maximaler Schl¨ ussel im i-ten Unterbaum von v.
Weiter gilt (wie in jedem Suchbaum)
max{Schl¨ ussel im i-ten UB} ≤ min{Schl¨ ussel im i + 1-ten UB} .
EADS 2.1 (a,b)-B¨aume 51/530
ľErnst W. Mayr
Beispiel 13
1 2 3 4 5 6
1
A A
3 4 5
B B
A AA
2
l ll!!!!!
(2, 4)-Baum
Lemma 14
Sei T ein (a, b)-Baum mit n Bl¨ attern und der H¨ ohe h (H¨ ohe definiert als Anzahl der Kanten auf einem Pfad von der Wurzel zu einem Blatt). Dann gilt:
1
2a
h−1≤ n ≤ b
h;
2
log
bn =
loglognb≤ h ≤ 1 + log
an2. Beweis:
1
n ist maximal f¨ ur vollst¨ andigen Baum mit Verzweigungsgrad b und minimal f¨ ur einen Baum, wo die Wurzel Grad 2 und alle anderen internen Knoten Grad a haben.
2
folgt durch Umformung aus (1).
EADS 2.1 (a,b)-B¨aume 53/530
ľErnst W. Mayr
Operationen:
1. IsElement(k, S ) v := Wurzel von T ; while v 6= Blatt do
i = min{s; 1 ≤ s ≤ (#Kinder von v) + 1 und k ≤ k
s};
v := i-tes Kind von v;
if k = k(v) then return v(k) else return false fi ;
Zeitbedarf: θ(h) = θ(log n)
2. Insert(k, S)
F¨ uhre IsElement(k, S) aus; Blatt w;
if k 6= k(w) then
co falls k < max S, enth¨ alt w den kleinsten Schl¨ ussel ∈ S, der > k ist oc
f¨ uge k if k < max S then links else rechts fi von w ein;
v := Vater von w;
if v hat nun mehr als b Kinder then Rebalancierung(v)
fi fi
EADS 2.1 (a,b)-B¨aume 55/530
ľErnst W. Mayr
4 5 7 3 6
1 2
A A
aa aa aa
⇓
1 3 4 5 7 8
1
A A
4 5 7
BB
A AA
3
l ll!!!!!
2 6
2
Rebalancierung(v):
spalte v in zwei Knoten v
1und v
2, v
1¨ ubernimmt die linke
” H¨ alfte“ der Kinder von v, v
2den Rest; da a ≤ b b + 1
2 c ≤ d b + 1
2 e ≤ b und b ≥ 2a − 1 , erf¨ ullen v
1und v
2die Gradbedingung;
Vereinfachung: Falls ein unmittelbarer Nachbar
v
0von v Grad
< b hat, ¨ ubernimmt v
0das ¨ außerste linke/rechte Kind von v.
Falls nun der Vater u von v mehr als b Kinder hat, f¨ uhre Rebalancierung(u) aus;
Falls u die Wurzel des Baums ist, kann dadurch eine neue Wurzel geschaffen werden und die H¨ ohe des (a, b)-Baums wachsen.
Kosten O(log n)
EADS 2.1 (a,b)-B¨aume 57/530
ľErnst W. Mayr