• Keine Ergebnisse gefunden

Einf¨uhrung in die Informatik IV

N/A
N/A
Protected

Academic year: 2021

Aktie "Einf¨uhrung in die Informatik IV"

Copied!
26
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

SS 2005

Einf¨ uhrung in die Informatik IV

Ernst W. Mayr

Fakult¨at f¨ur Informatik TU M¨unchen

http://www14.in.tum.de/lehre/2005SS/info4/index.html.de 1. Juli 2005

(2)

Beispiel 182 (Einf¨ugen eines Knotens in AVL-Baum)

1 2

3 4

5 6

7

8 9

0

(3)

Zur Wiederherstellung der H¨ohenbedingung benutzen wir so genannte Rotationen und Doppelrotationen.

Beispiel 183 (Rotation um(x, y):)

66 KAPITEL 3. ALGORITHMEN UND DATENSTRUKTUREN

Beschäftigen wir uns also zunächst mitinsert:

1. Dieser Schritt erfolgt wie bisher.

2. In diesem Schritt wird die Höhenbedingung wieder hergestellt. Es dürfte klar sein, dass die Höhenbedingung nur auf dem Pfad von der Wurzel zu dem eingefügten Knoten verletzt sein kann. Wir verfolgen daher den Pfad von unten nach oben und stellen die Höhenbedingung wieder her. Dazu nutzen wir sogenannte Rotationen.

Die folgende Skizze zeigt eine Rotation umx-y:

C C C C C

C C C C C b

@

@

C C C C C b

@

@@

(−∞, x) (x, y)

(y,+∞)

A B

C y

x -

Rechtsrotation

Linksrotation

C C C C C

C C C C C

b

@

@

C C C C C

b

@

@@

(−∞, x)

(x, y) (y,+∞)

A

B C

x y

Wie man unschwer erkennen kann wird durch diese Operation die Höhe der Teil- bäume verändert. Sehen wir uns daher ein Beispiel an, wie man die Rotation zum Wiederherstellen der Höhenbedingung verwenden kann:

D D D D D D

C C C C C

b

@

@

C C C C C

b

H HH

H

A

B

C

(−∞, x)

(x, y)

(y,+∞)

x

y 6

?

h-1

6

?

h-1

6

?

h

- Rotation

C C C C C

C C C C C b

@

@

D D D D D D b

H HH

H

A B

C

(−∞, x) (x, y)

(y,+∞)

y x

6

?

h-1

6

?

h-1

6

?

h

Während im Knotenydie Höhenbedingung nach dem Einfügen noch gilt, ist sie in xverletzt. Nach der Rotation gilt die Höhenbedingung jedoch wieder. Die Höhe der Teilbäume vonyist gleich der Höhe der Teilbäume vonxvor dem Einfügen. Damit ist die Höhenbedingung jetzt überall im Baum erfüllt.

Mitunter muss man eine Doppelrotation vornehmen, um den Baum zu rebalancieren.

D D D D

C C C C C b

D D D D D D b

D D D D D D

b

PP PP 6

?

h

6

h

6

?

h-1

6

? A h

C D

(−∞, x)

x y

z

D D D D D D

D D D D D D b

@

@

C C C C C

D D D D D D b

@

@ b

PPPP

6

?

h

6

?

h

6

?

h-1

6

?

h

A B

C

(y, z) D x

y z

Info IV 3.2 AVL-B¨aume

Ernst W. Mayr 2/11

(4)

Beispiel 184 (Wiederherstellung der H¨ohenbedingung)

66 KAPITEL 3. ALGORITHMEN UND DATENSTRUKTUREN

Beschäftigen wir uns also zunächst mitinsert:

1. Dieser Schritt erfolgt wie bisher.

2. In diesem Schritt wird die Höhenbedingung wieder hergestellt. Es dürfte klar sein, dass die Höhenbedingung nur auf dem Pfad von der Wurzel zu dem eingefügten Knoten verletzt sein kann. Wir verfolgen daher den Pfad von unten nach oben und stellen die Höhenbedingung wieder her. Dazu nutzen wir sogenannte Rotationen.

Die folgende Skizze zeigt eine Rotation umx-y:

C C C C C

C C C C C b

@

@

C C C C C b

@

@@

(−∞, x) (x, y)

(y,+∞)

A B

C y

x -

Rechtsrotation

Linksrotation

C C C C C

C C C C C

b

@

@

C C C C C

b

@

@@

(−∞, x)

(x, y) (y,+∞)

A

B C

x y

Wie man unschwer erkennen kann wird durch diese Operation die Höhe der Teil- bäume verändert. Sehen wir uns daher ein Beispiel an, wie man die Rotation zum Wiederherstellen der Höhenbedingung verwenden kann:

D D D D D D

C C C C C

b

@

@

C C C C C

b

H H

HH

A

B

C

(−∞, x)

(x, y)

(y,+)

x

y 6

?

h-1

6

?

h-1

6

?

h

- Rotation

C C C C C

C C C C C b

@

@

D D D D D D b

H H

HH

A B

C

(−∞, x) (x, y)

(y,+)

y x

6

?

h-1

6

?

h-1

6

?

h

Während im Knotenydie Höhenbedingung nach dem Einfügen noch gilt, ist sie in xverletzt. Nach der Rotation gilt die Höhenbedingung jedoch wieder. Die Höhe der Teilbäume vonyist gleich der Höhe der Teilbäume vonxvor dem Einfügen. Damit ist die Höhenbedingung jetzt überall im Baum erfüllt.

Mitunter muss man eine Doppelrotation vornehmen, um den Baum zu rebalancieren.

D D D D

C C C C b

D D D D D b

D D D D D D

b

PP PP 6

?

h

6

h

6

h-1

6 A h

C D

(−∞, x)

x y

z

D D D D D

D D D D D b

@

@

C C C C C

D D D D D b

@

@ b

PPPP

6

h

6

h

6

?

h-1

6

h

A B

C

(y, z) D x

y z

Info IV 3.2 AVL-B¨aume

Ernst W. Mayr 3/11

(5)

Beispiel 185 (Doppelrotation zur Rebalancierung)

66 KAPITEL 3. ALGORITHMEN UND DATENSTRUKTUREN

Beschäftigen wir uns also zunächst mitinsert:

1. Dieser Schritt erfolgt wie bisher.

2. In diesem Schritt wird die Höhenbedingung wieder hergestellt. Es dürfte klar sein, dass die Höhenbedingung nur auf dem Pfad von der Wurzel zu dem eingefügten Knoten verletzt sein kann. Wir verfolgen daher den Pfad von unten nach oben und stellen die Höhenbedingung wieder her. Dazu nutzen wir sogenannte Rotationen.

Die folgende Skizze zeigt eine Rotation umx-y:

C C C C C

C C C C C b

@

@

C C C C C b

@

@@

(−∞, x) (x, y) (y,+∞)

A B

C y

x -

Rechtsrotation

Linksrotation

C C C C C

C C C C C

b

@

@

C C C C C

b

@

@@

(−∞, x)

(x, y) (y,+) A

B C

x y

Wie man unschwer erkennen kann wird durch diese Operation die Höhe der Teil- bäume verändert. Sehen wir uns daher ein Beispiel an, wie man die Rotation zum Wiederherstellen der Höhenbedingung verwenden kann:

D D D D D D

C C C C C

b

@

@

C C C C C

b

H H

HH

A

B

C (−∞, x)

(x, y)

(y,+) x

y 6

? h-1

6

? h-1

6

? h

- Rotation

C C C C C

C C C C C b

@

@

D D D D D D b

H H

HH

A B

C (−∞, x) (x, y)

(y,+∞) y

x

6

? h-1

6

? h-1

6

? h

Während im Knotenydie Höhenbedingung nach dem Einfügen noch gilt, ist sie in xverletzt. Nach der Rotation gilt die Höhenbedingung jedoch wieder. Die Höhe der Teilbäume vonyist gleich der Höhe der Teilbäume vonxvor dem Einfügen. Damit ist die Höhenbedingung jetzt überall im Baum erfüllt.

Mitunter muss man eine Doppelrotation vornehmen, um den Baum zu rebalancieren.

D D D D D D

C C C C C b

D D D D D D b

D D D D D D

b

PP PP 6

? h

6

? h

6

? h-1

6

? A h

B

C D

(−∞, x)

(x, y)

(y, z) (z,+) x

y

z

D D D D D D

D D D D D D b

@

@

C C C C C

D D D D D D b

@

@ b

PP PP

6

? h

6

? h

6

? h-1

6

? h

A B

C

D (−∞, x) (x, y)

(y, z)

(z,+) x

y z

(6)

Zur Rebalancierung des AVL-Baums sind Rotationen und

Doppelrotationen nur entlang des Pfades zum eingef¨ugten Knoten erforderlich. Damit ergibt sich

Lemma 186

In einen AVL-Baum mitnKnoten kann ein neuer Schl¨ussel in Zeit O(logn)eingef¨ugt werden.

Ebenso kann man zeigen Lemma 187

In einen AVL-Baum mitnKnoten kann ein im Baum vorhandener Schl¨ussel in ZeitO(logn) gel¨oscht werden.

Damit Satz 188

In einem AVL-Baum mitnKnoten kann jede

W¨orterbuch-Operation in Zeit O(logn)ausgef¨uhrt werden.

(7)

Zur Rebalancierung des AVL-Baums sind Rotationen und

Doppelrotationen nur entlang des Pfades zum eingef¨ugten Knoten erforderlich. Damit ergibt sich

Lemma 186

In einen AVL-Baum mitnKnoten kann ein neuer Schl¨ussel in Zeit O(logn)eingef¨ugt werden.

Ebenso kann man zeigen Lemma 187

In einen AVL-Baum mitnKnoten kann ein im Baum vorhandener Schl¨ussel in ZeitO(logn) gel¨oscht werden.

Damit Satz 188

In einem AVL-Baum mitnKnoten kann jede

W¨orterbuch-Operation in Zeit O(logn)ausgef¨uhrt werden.

(8)

Zur Rebalancierung des AVL-Baums sind Rotationen und

Doppelrotationen nur entlang des Pfades zum eingef¨ugten Knoten erforderlich. Damit ergibt sich

Lemma 186

In einen AVL-Baum mitnKnoten kann ein neuer Schl¨ussel in Zeit O(logn)eingef¨ugt werden.

Ebenso kann man zeigen Lemma 187

In einen AVL-Baum mitnKnoten kann ein im Baum vorhandener Schl¨ussel in ZeitO(logn) gel¨oscht werden.

Damit Satz 188

In einem AVL-Baum mitnKnoten kann jede

W¨orterbuch-Operation in Zeit O(logn)ausgef¨uhrt werden.

(9)

Beispiel 189

1 2

3 4

5 6

7

8 9

0

(10)

Beispiel 189

1 2

3 4

5 6

7

8 9

0

1 2

3 4

5 6

7

8 9 0

(11)

Beispiel 190 (Rebalancierung mit Doppelrotation)

0 1

2

4 5

6 7

8 9

3

(12)

Beispiel 190 (Rebalancierung mit Doppelrotation)

0 1

2

4 5

6 7

8 9

3

0 1

2

3 4

5

6 7

8 9

(13)

3.3 (a, b)-B¨aume Definition 191

Ein(a, b)-Baum ist ein externer Suchbaum, f¨ur den gilt:

1 alle Bl¨atter haben die gleiche Tiefe

2 alle internen Knoten haben ≤b Kinder

3 alle internen Knoten außer der Wurzel haben ≥a, die Wurzel hat ≥2 Kinder

4 b≥2a−1

5 in jedem internen Knoten sind jeweils die gr¨oßten Schl¨ussel seiner Unterb¨aume mit Ausnahme des letzten gespeichert

(14)

3.3 (a, b)-B¨aume Definition 191

Ein(a, b)-Baum ist ein externer Suchbaum, f¨ur den gilt:

1 alle Bl¨atter haben die gleiche Tiefe

2 alle internen Knoten haben ≤b Kinder

3 alle internen Knoten außer der Wurzel haben ≥a, die Wurzel hat ≥2 Kinder

4 b≥2a−1

5 in jedem internen Knoten sind jeweils die gr¨oßten Schl¨ussel seiner Unterb¨aume mit Ausnahme des letzten gespeichert

(15)

3.3 (a, b)-B¨aume Definition 191

Ein(a, b)-Baum ist ein externer Suchbaum, f¨ur den gilt:

1 alle Bl¨atter haben die gleiche Tiefe

2 alle internen Knoten haben ≤b Kinder

3 alle internen Knoten außer der Wurzel haben ≥a, die Wurzel hat ≥2 Kinder

4 b≥2a−1

5 in jedem internen Knoten sind jeweils die gr¨oßten Schl¨ussel seiner Unterb¨aume mit Ausnahme des letzten gespeichert

(16)

3.3 (a, b)-B¨aume Definition 191

Ein(a, b)-Baum ist ein externer Suchbaum, f¨ur den gilt:

1 alle Bl¨atter haben die gleiche Tiefe

2 alle internen Knoten haben ≤b Kinder

3 alle internen Knoten außer der Wurzel haben ≥a, die Wurzel hat ≥2 Kinder

4 b≥2a−1

5 in jedem internen Knoten sind jeweils die gr¨oßten Schl¨ussel seiner Unterb¨aume mit Ausnahme des letzten gespeichert

(17)

3.3 (a, b)-B¨aume Definition 191

Ein(a, b)-Baum ist ein externer Suchbaum, f¨ur den gilt:

1 alle Bl¨atter haben die gleiche Tiefe

2 alle internen Knoten haben ≤b Kinder

3 alle internen Knoten außer der Wurzel haben ≥a, die Wurzel hat ≥2 Kinder

4 b≥2a−1

5 in jedem internen Knoten sind jeweils die gr¨oßten Schl¨ussel seiner Unterb¨aume mit Ausnahme des letzten gespeichert

(18)

3.3 (a, b)-B¨aume Definition 191

Ein(a, b)-Baum ist ein externer Suchbaum, f¨ur den gilt:

1 alle Bl¨atter haben die gleiche Tiefe

2 alle internen Knoten haben ≤b Kinder

3 alle internen Knoten außer der Wurzel haben ≥a, die Wurzel hat ≥2 Kinder

4 b≥2a−1

5 in jedem internen Knoten sind jeweils die gr¨oßten Schl¨ussel seiner Unterb¨aume mit Ausnahme des letzten gespeichert

(19)

Beispiel 192

1 4 7 9 15 17 21 24 32 35 39 43 47 52 53 56 62 67 71

1·4 9 17 24 35 43·47 53·56 67

7·15 32 52·62

21·39

(20)

Bemerkung:

(a, b)-B¨aume mitb= 2a−1heißen auchB-B¨aume. Diese wurden erstmals in einer Arbeit von R. Bayer und E.M. McCreight im Jahr 1970 beschrieben. (2,3)-B¨aume wurden von J. Hopcroft ebenfalls 1970 eingef¨uhrt.

Insert-Operation: Ubersteigt durch eine Insert-Operation ein¨ Knoten die Anzahl der zul¨assigen Kinder, so wird er in zwei Knoten geteilt.

Delete-Operation: F¨allt durch eine Delete-Operation die Anzahl der Kinder eines Knoten untera, so wird ein Kind vom linken oder rechten Geschwister des Knoten adoptiert.

(21)

Bemerkung:

(a, b)-B¨aume mitb= 2a−1heißen auchB-B¨aume. Diese wurden erstmals in einer Arbeit von R. Bayer und E.M. McCreight im Jahr 1970 beschrieben. (2,3)-B¨aume wurden von J. Hopcroft ebenfalls 1970 eingef¨uhrt.

Insert-Operation: Ubersteigt durch eine Insert-Operation ein¨ Knoten die Anzahl der zul¨assigen Kinder, so wird er in zwei Knoten geteilt.

Delete-Operation: F¨allt durch eine Delete-Operation die Anzahl der Kinder eines Knoten untera, so wird ein Kind vom linken oder rechten Geschwister des Knoten adoptiert.

(22)

Bemerkung:

(a, b)-B¨aume mitb= 2a−1heißen auchB-B¨aume. Diese wurden erstmals in einer Arbeit von R. Bayer und E.M. McCreight im Jahr 1970 beschrieben. (2,3)-B¨aume wurden von J. Hopcroft ebenfalls 1970 eingef¨uhrt.

Insert-Operation: Ubersteigt durch eine Insert-Operation ein¨ Knoten die Anzahl der zul¨assigen Kinder, so wird er in zwei Knoten geteilt.

Delete-Operation: F¨allt durch eine Delete-Operation die Anzahl der Kinder eines Knoten untera, so wird ein Kind vom linken oder rechten Geschwister des Knoten adoptiert.

(23)

Beispiel 193 (F¨uge

”60“ in (2,3)-Baum ein:)

1 4 7 9 15 17 21 24 32 35 39 43 47 52 53 56 62 67 71

1·4 9 17 24 35 43·47 53·56 67

7·15 32 52·62

21·39

(24)

Beispiel 193 (F¨uge

”60“ in (2,3)-Baum ein:)

1 4 7 9 15 17 21 24 32 35 39 43 47 52 53 56 60 62 67 71 1·4 9 17 24 35 43·47 53·56·60 67

7·15 32 52·62

21·39

(25)

Beispiel 193 (F¨uge

”60“ in (2,3)-Baum ein:)

1 4 7 9 15 17 21 24 32 35 39 43 47 52 53 56 60 62 67 71

1·4 9 17 24 35 43·47 53 60 67

7·15 32 52·56·62

21·39

(26)

Beispiel 193 (F¨uge

”60“ in (2,3)-Baum ein:)

1 4 7 9 15 17 21 24 32 35 39 43 47 52 53 56 60 62 67 71

1·4 9 17 24 35 43·47 53 60 67

7·15 32 52 62

21 56

39

Referenzen

ÄHNLICHE DOKUMENTE

Das Argument war dann, dass beim Erkennen von z (mindestens) ein Zustand zweimal besucht werden muss und damit der dazwischen liegende Weg im Automaten beliebig oft wiederholt

Dies ist auch nach der Transformation der Fall. W¨ ahrend vor der Transformation alle Zeichenreihen der obigen Form von rechts her aufgebaut werden, werden sie danach von links

Ernst W.. Am Anfang steht ein neues Kellersymbol auf dem Stack. Sobald bei der Simulation von A 1 dieses auf dem Stack vorgefunden wird, weiß man, dass A 1 seinen Stack leerger¨

2 Werden zwei oder ein Stacksymbol abgelegt und dabei das oberste Stacksymbol X ge¨ andert, entfernen wir zun¨ achst in einem eigenen Schritt das oberste Stacksymbol und pushen dann

Eine kontextfreie Grammatik ist eine LR(k)-Grammatik, wenn man durch Lookaheads der L¨ ange k erreichen kann, dass bei einer Reduktion von links nach rechts in jedem Schritt h¨

Die von linear beschr¨ ankten, nichtdeterministischen Turingmaschinen akzeptierten Sprachen sind genau die kontextsensitiven (also Chomsky-1)

Gibt es einen Unterschied, wenn man sich auf eine bestimmte Programmiersprache beschr¨ ankt..

Ebenso wird oft ein spezielles Ausgabeband verwendet, das nur geschrieben, aber nicht gelesen werden kann (write-only). Der Schreibkopf kann dabei nur nach rechts bewegt werden... n