• Keine Ergebnisse gefunden

F ( z ):= f z ; z ∈ C ; f alsKoeffizienteneinerPotenzreihebetrachtetundeinegeschlosseneFormderdadurchdefiniertenFunktionsucht. F ( z )= X f X F¨urlineareundnichtlineareRekursionsgleichungenerh¨altmanofteineL¨osung,indemmandie 7.3Erzeugendenfunktionen SeidieF

N/A
N/A
Protected

Academic year: 2021

Aktie "F ( z ):= f z ; z ∈ C ; f alsKoeffizienteneinerPotenzreihebetrachtetundeinegeschlosseneFormderdadurchdefiniertenFunktionsucht. F ( z )= X f X F¨urlineareundnichtlineareRekursionsgleichungenerh¨altmanofteineL¨osung,indemmandie 7.3Erzeugendenfunktionen SeidieF"

Copied!
27
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

7.3 Erzeugendenfunktionen

F¨ ur lineare und nicht lineare Rekursionsgleichungen erh¨ alt man oft eine L¨ osung, indem man die f

n

als Koeffizienten einer Potenzreihe betrachtet und eine geschlossene Form der dadurch definierten Funktion sucht.

Definition 6 (Erzeugendenfunktion)

Sei die Folge (f

n

)

n≥0

gegeben. Die zugeh¨ orige (gew¨ ohnliche) Erzeugendenfunktion ist

F (z) :=

X

n=0

f

n

z

n

; z ∈

C

;

exponentielle Erzeugendenfunktion ist F (z) =

X

n≥0

f

n

n! z

n

; z ∈

C

.

EADS 7.3 Erzeugendenfunktionen 38/65

ľErnst W. Mayr

(2)

Falls F (z) =

P

n>0

f

n

z

n

, bezeichnet

[z

n

]F (z)

den n-ten Koeffizienten f

n

.

(3)

SeiF(z) = P

n≥0

fnznundG(z) = P

n≥0

gnzn.

Erz. Fkt. n-tes Folgenglied Anmerkungen:

cF cfn

F+G fn+gn

F·G hn:=

n

P

i=0

fign−i(Konvolution) P

n≥0

fnzn

! P

n≥0

gnzn

!

= P

n≥0

hnzn (mithn=

n

P

i=0

fign−i) zkF ifn < kthen0elsefn−kfi

F(z) 1−z

n

P

i=0

fi 1

1−z= P

n≥0

zn

zdF(z)dz nfn

x

R

0

F(t)dt ifn= 0then0else fn−1n fi fnzngeht ¨uber auffnzn+1 n+1

F(cz) cnfn F(cz) = P

n≥0

fn(cz)n= P

n≥0

fncnzn

EADS 7.3 Erzeugendenfunktionen 40/65

ľErnst W. Mayr

(4)

Beispiel 7

F (z) :=

X

n≥0

2

n

z

n

= 1 1 − 2z G(z) :=

X

n≥0

nz

n

= z (1 − z)

2

⇒ F (z)G(z) = z

(1 − z)

2

(1 − 2z) =

X

n≥0 n

X

i=0

(n − i)2

i

z

n

(5)

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

= 2n+1−n−2.

EADS 7.3 Erzeugendenfunktionen 42/65

ľErnst W. Mayr

(6)

7.4 Transformation des Definitions- bzw. Wertebereichs Beispiel 8

f

0

= 1 f

1

= 2

f

n

= f

n−1

· f

n−2

f¨ ur n ≥ 2 . Setze

g

n

:= log f

n

. Dann gilt

g

n

= g

n−1

+ g

n−2

f¨ 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

Fn

(7)

Beispiel 9

f

1

= 1 f

n

= 3f

n

2

+ n; f¨ ur n = 2

k

; Setze

g

k

:= f

2k

. 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 44/65 ľErnst W. Mayr

(8)

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).

(9)

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

2

Find(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.0 Transformation des Definitions- bzw. Wertebereichs 46/65 ľErnst W. Mayr

(10)

Datenstrukturklasse mindestens angebo- tene Funktionen

realisiert in W¨ orterbuch (Dictio-

nary)

IsElement(), Insert(), Delete()

Hashtable, Suchb¨ aume Vorrangwarteschlange

(Priority Queue)

FindMin(),

Insert(), Delete(), [IsElement()]

balancierte, leftist B¨ aume, Binomial Queues

Mergeable heaps FindMin(), Insert(), Delete(), Merge()

2-3-B¨ aume, Bi- nomial Queues, Leftist-B¨ aume Concatenable queues FindMin(), Insert(),

Delete(), Concaten- ate()

2-3-B¨ aume

(11)

Definition 10

Bei einem externen Suchbaum werden die Schl¨ ussel nur an den Bl¨ attern gespeichert, die inneren Knoten enthalten Verwaltungsinformationen.

Bei internen Suchb¨ aumen liegen 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.0 Transformation des Definitions- bzw. Wertebereichs 48/65 ľErnst W. Mayr

(12)

2. (Balancierte) Suchb¨ aume

2.1 H¨ ohenbalancierte B¨ aume 2.1.1 (a,b)-B¨ aume

Definition 11

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.

(13)

Bei jedem internen Knoten v mit d = d(v) Kindern werden d − 1 Schl¨ ussel k

1

, . . . , k

d−1

gespeichert, 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 H¨ohenbalancierte B¨aume 50/65

ľErnst W. Mayr

(14)

Beispiel 12

1 2 3 4 5 6

1

A A

3 4 5

B B

A AA

2

l ll

!!!!!

(2, 4)-Baum

(15)

Lemma 13

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

b

n =

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 H¨ohenbalancierte B¨aume 52/65

ľErnst W. Mayr

(16)

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)

(17)

2. Insert(k, S)

F¨ uhre IsElement(k, S) aus; Blatt w;

if k 6= k(w) then

co w enth¨ alt den kleinsten Schl¨ ussel ∈ S, der > k ist oc

f¨ uge k links von w ein;

v := Vater von w;

if v hat nun mehr als b Kinder then Rebalancierung(v

if if

EADS 2.1 H¨ohenbalancierte B¨aume 54/65

ľErnst W. Mayr

(18)

1 2 3 4 5 6 7 8

4 5 7

3 6

1 2 1

A A

A A

AA

aa aa aa

1 3 4 5 7 8

1

A A

4 5 7

BB

A AA

3

l ll

!!!!!

2 6

2

(19)

Rebalancierung(v):

spalte v in zwei Knoten v

1

und v

2

, v

1

¨ ubernimmt die linke

” H¨ alfte“ der Kinder von v, v

2

den Rest; da a ≤ b b + 1

2 c ≤ d b + 1

2 e ≤ b und b ≥ 2a − 1 , erf¨ ullen v

1

und v

2

die Gradbedingung;

Vereinfachung: Falls ein unmittelbarer Bruder

v

0

von v Grad

< b hat, ¨ ubernimmt v

0

das ¨ 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 H¨ohenbalancierte B¨aume 56/65

ľErnst W. Mayr

(20)

3. Delete(k, S):

F¨ uhre IsElement(k, S) aus. Blatt w. Sei k(w) = k;

v := Vater von w;

L¨ osche w;

if v hat nunmehr < a Kinder then

f¨ uhre rekursiv aufsteigend Rebalancierung

0

(v) durch

if

(21)

1 2 4 5 6 7 1 2

A A

5 6

A A

4

Q QQ

1

2 4 5 6 7

A A

A A

A A

1

4

6

2 5

H HH H

1 2

@

3

@

4

AA

AA

1

2

5 6 7

5 6

A A

2 4

Q Q QQ

. oder &

EADS 2.1 H¨ohenbalancierte B¨aume 58/65

ľErnst W. Mayr

(22)

Rebalancierung

0

(v):

Falls ein unmittelbarer Bruder v

0

von v Grad > a hat, adoptiert v das n¨ achste Kind von v

0

;

Ansonsten wird v mit einem unmittelbaren Bruder verschmolzen; die Gradbedingung f¨ ur den dadurch entstehenden Knoten ist erf¨ ullt; die Rebalancierung wird rekursiv/iterativ f¨ ur den Vaterknoten fortgesetzt.

Zeitbedarf: O(log n)

(23)

Spezialf¨ alle von (a, b)-B¨ aumen:

(2, 3)-B¨ aume;

(2, 4)-B¨ aume;

(a, 2a − 1)-B¨ aume: B-B¨ aume

EADS 2.1 H¨ohenbalancierte B¨aume 60/65

ľErnst W. Mayr

(24)

Bemerkungen:

1

zur Wahl von a:

Daten in RAM⇒aklein, z.B.a= 2 odera= 3.

Daten auf Platte⇒agroß, z.B.a= 100.

2

Zur Wahl von b:

b ≥ 2a liefert wesentlich bessere amortisierte Komplexit¨ at

(ohne Beweis, siehe Mehlhorn).

(25)

Top-Down-Rebalancierung: b ≥ 2a.

Bei der Restrukturierung nach der Top-Down-Strategie folgen wir wie gewohnt dem Pfad von der Wurzel zum gesuchten Blatt. Beim Einf¨ ugen stellen wir jetzt jedoch f¨ ur jeden besuchten Knoten sicher, dass der Knoten weniger als b Kinder hat.

Wenn der gerade betrachtete Knoten ein b-Knoten ist, dann spalten wir ihn sofort auf. Weil der Vater kein b-Knoten ist (das haben wir ja bereits sichergestellt) pflanzt sich der

Aufspaltungsprozess nicht nach oben hin fort. Insbesondere kann das neue Element ohne Probleme eingef¨ ugt werden, wenn die Suche das Blattniveau erreicht hat.

Damit diese Strategie m¨ oglich ist, muss b mindestens 2a sein (und nicht 2a − 1), da sonst nach der Spaltung nicht gen¨ ugend

Elemente f¨ ur die beiden Teile vorhanden sind.

EADS 2.1 H¨ohenbalancierte B¨aume 62/65

ľErnst W. Mayr

(26)

Beim L¨ oschen verfahren wir analog. F¨ ur jeden besuchten Knoten, außer der Wurzel des (a, b)-Baumes, stellen wir sicher, dass er mindestens a + 1 Kinder hat. Wenn der gerade betrachtete Knoten nur a Kinder hat, so versuchen wir zuerst, ein Element des rechten oder linken Nachbarknoten zu stehlen.

Haben beide Nachbarknoten nur jeweils a Kinder, so verschmelzen

wir unseren Knoten mit einem der beiden Nachbarn. Ist der Vater

nicht die Wurzel, so hatte er aber vorher mindestens a + 1 Kinder,

und dieser Verschmelzungsprozess kann sich nicht nach oben

fortsetzen. Andernfalls erniedrigt sich der Grad der Wurzel um 1,

wenn die Wurzel Grad > 2 hat, oder die alte Wurzel wird gel¨ oscht

und der soeben verschmolzene Knoten wird zur neuen Wurzel.

(27)

Restrukturierung nach der Top-Down-Strategie sorgt nicht f¨ ur eine bessere Laufzeit, sondern erleichtert die Synchronisation, wenn mehrere Prozesse gleichzeitig auf einen (a, b)-Baum zugreifen wollen.

Bei herk¨ ommlichen (a, b)-B¨ aumen schreiten die Such- und die Restrukturierungsoperationen in entgegengesetzten Richtungen fort, was dazu f¨ uhrt, dass sich oft Prozesse gegenseitig behindern (der eine will im Baum absteigen, der andere muss auf dem gleichen Pfad aufw¨ arts restrukturieren).

Bei der Top-Down-Strategie gibt es nur Operationsfolgen, die den Baum hinabsteigen. Mehrere Prozesse k¨ onnen so in einer Art Pipeline gleichzeitig einen Pfad mit kurzem Abstand begehen.

EADS 2.1 H¨ohenbalancierte B¨aume 64/65

ľErnst W. Mayr

Referenzen

ÄHNLICHE DOKUMENTE

Abgabe bis Do, 26.11., 12 Uhr Aufgabe 1 zur Bearbeitung in der ¨ Ubung Aufgaben 2-5 zur selbst¨ andigen Bearbeitung..

Damit folgt die

[r]

Theorem

Martin Fuchssteiner Katrin Krohne. TECHNISCHE UNIVERSIT¨

UBUNGEN ZUR VARIATIONSRECHNUNG IM SS 2011 ¨ BLATT 2 (BESPRECHUNG AM 17.. Hin- weis: Verwenden Sie die

Hinweis: Als Hilfsmittel sind hier nur solche Aussagen zugelassen, die bereits in der Vorlesung bewiesen

Sofern Ihre Punktzahl f¨ ur einen ¨ Ubungs- schein noch nicht ausreicht, k¨ onnen Sie Ihr Punktekonto damit auff¨ ullen – vereinbaren Sie einen Konsultationstermin in der Zeit