• Keine Ergebnisse gefunden

Definition 176

N/A
N/A
Protected

Academic year: 2021

Aktie "Definition 176"

Copied!
32
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Definition 176

Der Binomialbaum B

0

besteht aus genau einem Knoten.

Den Binomialbaum B

k

, k ≥ 1, erh¨ alt man, indem man die Wurzel eines B

k−1

zu einem zus¨ atzlichen Kind der Wurzel eines zweiten B

k−1

macht.

B

0

B

1

B

2

B

3

ADS-EI 4 Vorrangwarteschlangen (priority queues) 367/451

ľErnst W. Mayr

(2)

Rekursiver Aufbau des Binomialbaums B

k

(rekursive Verfolgung des rechten Zweigs) B

k

B

k−1

B

k−1

. . .

B

k−1

B

k−2

B

2

B

1

B

0

B

k

(3)

Rekursiver Aufbau des Binomialbaums B

k

(rekursive Verfolgung des linken Zweigs)

B

k

B

k−1

B

k−1

B

k

B

k−1

B

k−2

B

1

B

0

B

0

ADS-EI 4 Vorrangwarteschlangen (priority queues) 369/451

ľErnst W. Mayr

(4)

Satz 177

F¨ ur den Binomialbaum B

k

, k ≥ 0, gilt:

1

er hat H¨ ohe k und enth¨ alt 2

k

Knoten;

2

er enth¨ alt genau

ki

Knoten der Tiefe i, f¨ ur alle i ∈ {0, . . . , k};

3

seine Wurzel hat k Kinder, alle anderen Knoten haben < k Kinder.

Beweis:

Der Beweis ergibt sich sofort aus dem rekursiven Aufbau des B

k

und der Rekursionsformel k

i

=

k − 1 i

+

k − 1 i − 1

f¨ ur Binomialkoeffizienten.

(5)

Definition 178

Ein Binomial Heap ist eine Menge H von Binomialb¨ aumen, wobei jedem Knoten v ein Schl¨ ussel key(v) zugeordnet ist, so dass folgende Eigenschaften gelten:

1

jeder Binomialbaum ∈ H erf¨ ullt die Heap-Bedingung und ist ein min-Heap:

(∀ Knoten v, w)[v Vater von w ⇒ key(v) ≤ key(w)]

2

H enth¨ alt f¨ ur jedes k ∈ N

0

h¨ ochstens einen B

k

ADS-EI 4 Vorrangwarteschlangen (priority queues) 371/451

ľErnst W. Mayr

(6)

F¨ ur jeden Binomial Heap H gilt also

1

Enth¨ alt H n Schl¨ ussel, n ∈ N , so besteht H h¨ ochstens aus max{1, dld ne} Binomialb¨ aumen.

2

In jedem von H’s Binomialb¨ aumen ist ein kleinster Schl¨ ussel an der Wurzel gespeichert; verlinkt man daher die Wurzeln aller Binomialb¨ aume von H in einer zirkul¨ aren Liste, kann ein minimaler Schl¨ ussel in H durch einfaches Durchlaufen dieser Liste gefunden werden.

Korollar 179

In einem Binomial Heap mit n Schl¨ usseln ben¨ otigt FindMin Zeit

O(log n).

(7)

Wir betrachten nun die Realisierung der Union-Operation. Hierbei wird vorausgesetzt, dass die Objektmengen, zu denen die Schl¨ ussel in den beiden zu verschmelzenden Binomial Heaps H

1

und H

2

geh¨ oren, disjunkt sind. Es ist jedoch durchaus m¨ oglich, dass der gleiche Schl¨ ussel f¨ ur mehrere Objekte vorkommt.

1. Fall H

1

und H

2

enthalten jeweils nur einen Binomialbaum B

k

(mit dem gleichen Index k):

In diesem Fall f¨ ugen wir den B

k

, dessen Wurzel den gr¨ oßeren Schl¨ ussel hat, als neuen Unterbaum der Wurzel des anderen B

k

ein, gem¨ aß der rekursiven Struktur der Binomialb¨ aume. Es entsteht ein B

k+1

, f¨ ur den per Konstruktion weiterhin die Heap-Bedingung erf¨ ullt ist.

ADS-EI 4 Vorrangwarteschlangen (priority queues) 373/451

ľErnst W. Mayr

(8)

2. Fall Sonst. Sei H

1

= {B

i1

; i ∈ I

1

⊂ N

0

} und sei H

2

= {B

i2

; i ∈ I

2

⊂ N

0

}.

Wir durchlaufen dann alle Indizes k ∈ [0, max{I

1

∪ I

2

}] in aufsteigender Reihenfolge und f¨ uhren folgende Schritte durch:

1

falls kein Binomialbaum mit Index k vorhanden ist: noop

2

falls genau ein Binomialbaum mit Index k vorhanden ist, wird dieser in den verschmolzenen Binomial Heap ¨ ubernommen

3

falls genau zwei Binomialb¨ aume mit Index k vorhanden sind, werden diese gem¨ aß dem 1. Fall verschmolzen; der

entstehende B

k+1

wird im n¨ achsten Schleifendurchlauf wieder betrachtet. Dadurch kann auch der folgende Fall eintreten!

4

falls genau drei Binomialb¨ aume mit Index k vorhanden sind, wird einer davon in den verschmolzenen Binomial Heap

¨

ubernommen; die beiden anderen werden gem¨ aß dem 1. Fall

verschmolzen; der entstehende B

k+1

wird im n¨ achsten

Schleifendurchlauf wieder betrachtet.

(9)

Man beachte, dass nie mehr als 3 Binomialb¨ aume mit gleichem Index auftreten k¨ onnen!

Bemerkung:

Es besteht eine einfache Analogie zur Addition zweier Bin¨ arzahlen, wobei das Verschmelzen zweier gleich großer Binomialb¨ aume dem Auftreten eines Ubertrags ¨ entspricht!

Lemma 180

Die Union-Operation zweier Binomial Heaps mit zusammen n Schl¨ usseln kann in Zeit O(log n) durchgef¨ uhrt werden.

ADS-EI 4 Vorrangwarteschlangen (priority queues) 375/451

ľErnst W. Mayr

(10)

Die Operation Insert(H, k):

1

erzeuge einen neuen Binomial Heap H

0

= {B

0

} mit k als einzigem Schl¨ ussel

2

H := Union(H, H

0

)

Falls H n Schl¨ ussel enth¨ alt, betr¨ agt die Laufzeit der

Insert-Operation offensichtlich O(log n).

(11)

Die Operation ExtractMin(H):

1

durchlaufe die Liste der Wurzeln der Binomialb¨ aume in H und finde den/einen Baum mit minimaler Wurzel

2

gib den Schl¨ ussel dieser Wurzel zur¨ uck

3

entferne diesen Binomialbaum aus H

4

erzeuge einen neuen Binomial Heap H

0

aus den Unterb¨ aumen der Wurzel dieses Baums

5

H := Union(H, H

0

)

Falls H n Schl¨ ussel enth¨ alt, betr¨ agt die Laufzeit der ExtractMin-Operation offensichtlich O(log n).

ADS-EI 4 Vorrangwarteschlangen (priority queues) 377/451

ľErnst W. Mayr

(12)

Die Operation DecreaseKey(H, v, k) (diese Operation ersetzt, falls k < key(v), key(v) durch k):

1

sei B

i

der Binomialbaum in H, der den Knoten v enth¨ alt

2

falls k < key(v), ersetze key(v) durch k

3

stelle, falls n¨ otig, die Heap-Bedingung auf dem Pfad von v zur Wurzel von B

i

wieder her, indem, solange n¨ otig, der Schl¨ ussel eines Knotens mit dem seines Vaters ausgetauscht wird Falls H n Schl¨ ussel enth¨ alt, betr¨ agt die Laufzeit der

DecreaseKey-Operation offensichtlich O(log n).

(13)

5. Union/Find-Datenstrukturen

5.1 Motivation

'

&

$

% '

&

$

%

'

&

$

%

r r r

r r r r

r r r r

- 3 6

Union(T

1

, T

2

): Vereinige T

1

und T

2

T

1

∩ T

2

= ∅ Find(x): Finde den

Repr¨ asentanten der (gr¨ oßten) Teilmenge, in der sich x gerade befindet.

ADS-EI 5.1 Motivation 379/451

ľErnst W. Mayr

(14)

5.2 Union/Find-Datenstruktur 5.2.1 Intrees

1

Initialisierung: x → •x: Mache x zur Wurzel eines neuen (einelementigen) Baumes.

2

Union(T

1

, T

2

):

r

@ T

1

@

r

@

T

2

@ ⇒ r

@ T

2

@

r

@ T

1

@ 1

3

Find : Suche Wurzel des Baumes, in dem sich x befindet.

Bemerkung: Naive Implementation: worst-case-Tiefe = n Zeit f¨ ur Find = Ω(n)

Zeit f¨ ur Union = O(1)

(15)

5.2.2 Gewichtete Union (erste Verbesserung)

Mache die Wurzel des kleineren Baumes zu einem Kind der Wurzel des gr¨ oßeren Baumes. Die Tiefe des Baumes ist dann O(log n).

Zeit f¨ ur Find = O(log n) Zeit f¨ ur Union = O(1)

Es gilt auch: Tiefe des Baumes im worst-case:

Ω(log n)

ADS-EI 5.2 Union/Find-Datenstruktur 381/451

ľErnst W. Mayr

(16)

5.2.3 Pfad-Kompression mit gewichteter Union (zweite Verbesserung)

Wir betrachten eine Folge von k Find- und Union-Operationen auf

einer Menge mit n Elementen, darunter n − 1 Union.

(17)

Implementierung: Gewichtete Union f¨ ur Pfad-Kompression:

@

@ I

@

@ I

@

@ I

s s

s s

s s

s s

e c

b d a

y x

z

@

@ I

@

@ s I

s s

s s

s C

B D A

E

Union

@

@ I

@

@ I

@

@ I

s s

s s

s s

s s

e c

b d a

y z

x

@

@ I

@

@ I X X X X X X X X y

s s

s s

s C

B D A

E

ADS-EI 5.2 Union/Find-Datenstruktur 383/451

ľErnst W. Mayr

(18)

Implementierung: Find f¨ ur Pfad-Kompression:

@

@ @

@

@ @

Q Q Q Q

Q Q Q Q

@

@ @ I

@

@ @ I

@

@ @ I

3

A A A K

A A A K

Q Q Q Q k

t

t t

t t

t t

t

t t

t

t t

t t t

e

c d

a b

y z

x

a y

d

b z

e c x

Find(c)

(Pfadkompression) ⇒

(19)

Bemerkung:

Nach Definition ist

log

n = min{i ≥ 0; log log log . . . log n

| {z }

i log’s

≤ 1}

Beispiel 181

log

0 = log

1 = 0 log

2 = 1

log

3 = 2

log

16 = 3 da 16 = 2

22

log

2

65536

= 5 da 2

65536

= 2

222

2

ADS-EI 5.2 Union/Find-Datenstruktur 385/451

ľErnst W. Mayr

(20)

Satz 182

Bei der obigen Implementierung ergibt sich eine amortisierte Komplexit¨ at von O(log

n) pro Operation.

Beweis:

(der Vollst¨ andigkeit halber, geh¨ ort nicht zum Vorlesungsstoff!) Sei T

0

der (endg¨ ultige) In-Baum, der durch die Folge der Union’s, ohne die Find ’s, entstehen w¨ urde (also keine Pfad-Kompression).

Ordne jedem Element x drei Werte zu:

rank(x):= H¨ ohe des Unterbaums in T

0

mit Wurzel x class(x):=

i ≥ 1 falls a

i−1

< rank(x) ≤ a

i

ist (i ≥ 1) 0 falls rank(x) = 0

Dabei gilt: a

0

= 0, a

i

= 2

2

..2 i 20en

f¨ ur i ≥ 1.

Setze zus¨ atzlich a

−1

:= −1.

(21)

* *

* *

* *

H H H Y

H H H Y

t

t t t t t t

t t

0 1

2 3

4 5

6 0

0

X X X y

X X X y

X X X y

XX X z class 1

class 2

class 3

class 0

p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p

p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p

p p p p p p p pp pp

p pp p pp pp pp p pp pp pp pp pp pp pp pp pp

ADS-EI 5.2 Union/Find-Datenstruktur 387/451

ľErnst W. Mayr

(22)

Beweis (Forts.):

dist(x) ist die Distanz von x zu einem Vorfahr y im

momentanen Union/Find-Baum (mit Pfad-Kompression), so dass class(y) > class(x) bzw. y die Wurzel des Baumes ist.

Definiere die Potenzialfunktion Potenzial := c X

x

dist(x), c eine geeignete Konstante > 0

(23)

Beweis (Forts.):

Beobachtungen:

i) Sei T ein Baum in der aktuellen Union/Find-Struktur (mit Pfad-Kompression), seien x, y Knoten in T, y Vater von x.

Dann ist class(x) ≤ class(y).

ii) Aufeinander folgende Find(x) durchlaufen (bis auf eine) verschiedene Kanten. Diese Kanten sind (im wesentlichen) eine Teilfolge der Kanten in T

0

auf dem Pfad von x zur Wurzel.

ADS-EI 5.2 Union/Find-Datenstruktur 389/451

ľErnst W. Mayr

(24)

Beweis (Forts.):

Amortisierte Kosten Find(x):

Sei x

0

→ x

1

→ x

2

. . . x

k

= r der Pfad von x

0

zur Wurzel. Es gibt h¨ ochstens log

n-Kanten (x

i−1

, x

i

) mit class(x

i−1

) < class(x

i

). Ist class(x

i−1

) = class(x

i

) und i < k (also x

i

6= r), dann ist

dist(x

i−1

) vor der Find(x)-Operation ≥ 2, nachher gleich 1.

Damit k¨ onnen die Kosten f¨ ur alle Kanten (x

i−1

, x

i

) mit class(x

i−1

)

= class(x

i

) aus der Potenzialverringerung bezahlt werden. Es ergeben sich damit amortisierte Kosten

O(log

n)

(25)

Beweis (Forts.):

Amortisierte Gesamtkosten aller (n − 1)-Union’s:

ppppp ppppp ppppp pppppp

pppppp ppp s s r

x ppppp ppppp ppppp pppppp

pppppp ppp s r

0

ppppp ppppp ppppp pppppp

pppppp ppp s s r

x pppppp

pppppp ppp s r

0

⇒ T

1

< T

2

T

1

T

2

c g

c g c g

c g c g c g

Die gesamte Potenzialerh¨ ohung durch alle Union’s ist nach oben durch das Potenzial von T

0

beschr¨ ankt (Beobachtung ii).

ADS-EI 5.2 Union/Find-Datenstruktur 391/451

ľErnst W. Mayr

(26)

Beweis (Forts.):

Potenzial(T

0

) ≤ c ·

logn

X

i=0

ai

X

rank(x)=j=ai−1+1

dist(x)

≤ c ·

logn

X

i=0

ai

X

rank(x)=j=ai−1+1

n 2

j

a

i

≤ c · n

logn

X

i=0

a

i

1

2

ai−1

= c · n

logn

X

i=0

1

= O(n log

n) .

Die zweite Ungleichung ergibt sich, da alle Unterb¨ aume, deren

Wurzel x rank(x) = j hat, disjunkt sind und jeweils ≥ 2

j

Knoten

enthalten.

(27)

6. Traversierung von Graphen

Sei G = (V, E) ein ungerichteter Graph. Anhand eines Beipiels betrachten wir die zwei Algorithmen DFS (Tiefensuche) und BFS (Breitensuche).

ADS-EI 6 Traversierung von Graphen 393/451

ľErnst W. Mayr

(28)

6.1 DFS-Algorithmus

while ∃ unvisited v do

r := pick (random) unvisited node push r onto stack

while stack 6= ∅ do v := pop top element if v unvisited then

mark v visited

push all neighbours of v onto stack perform operations DFS Ops(v) fi

od

od

(29)

Beispiel 183

A A

A

A @

@

@

@

A

A A

A @

@

@

@

A A

A A

U - 6

@

@

@

@ I

? * 1 g

2 g

3 g

4 g 5 g 6 g

7 g

8 g

9 g 1 t

2 t

3 t

4 t 5 t

t 6 t 7 8 t

9 t B

B B

B B

B Q

Q Q

Q Q

Q B

B B

B B

B Q

Q Q

Q Q

Q

H H H H

ADS-EI 6.1 DFS-Algorithmus 395/451

ľErnst W. Mayr

(30)

Beobachtung: Die markierten Kanten bilden einen Spannbaum:

A A

A

A @

@

@

@

A A

A

A @

@

@

@

A A

A A

U - 6

@

@

@

@ I

? * 1 g

2 g

3 g

4 g 5 g 6 g

7 g

8 g

9 g 1 t

2 t

3 t

4 t 5 t

t 6 t 7 8 t

9 t B

B B

B B

B Q

Q Q

Q Q

Q B

B B

B B

B Q

Q Q

Q Q

Q H H H H

R¨ uckw¨ artskante

9 g 8 g 6 g 7 g

5 g 4 g 3 g 2 g

1 g

@

@

s s

s s

s

s

s

s

s

(31)

Folge der Stackzust¨ ande

1 2

8 7

3 9 8 1 8 7

4 9 2 9 8 1 8 7

5 3 9 2 9 8 1 8 7

9 8 6 4 3 9 2 9 8 1 8 7

2 3 5 8 6 4 3 9 2 9 8 pp ppppp 1

7 6 5 2 1 6 4 3 9 2 9 pp ppppp 8

6 8 1 6 5 2 1 6 4 3 9 pp ppppp 2

7 8 5 8 1 6 5 2 1 6 4 pp ppppp 3 h h

h

h h h h h h h h h h h h 6 6

h

? ? ? ? ? ? ? ? ? visited visited

Stack:

: oberstes Stackelement : schon besuchte Knoten

: Nachbarn Zustand:

a) b) c) d) e) f)

g)

h) i) j)

ADS-EI 6.1 DFS-Algorithmus 397/451

ľErnst W. Mayr

(32)

Wir betrachten den Stackzustand:

Im Zustand g) sind die Elemente 2, 3 und 5 als visited markiert (siehe Zust¨ ande b), c) und e)). Deswegen werden sie aus dem Stack entfernt, und das Element 8 wird zum obersten

Stackelement. Im Zustand j) sind alle Elemente markiert, so dass

eins nach dem anderen aus dem Stack entfernt wird.

Referenzen

ÄHNLICHE DOKUMENTE

Es wäre gut, wenn Sie am Klausurtag bereits um 9.40 Uhr am Hörsaal sind, damit die Klausur pünktlih um 9.45 Uhr

Fachbereich Mathematik und Informatik Sommersemester 2008 Universit¨ at

Da sie Angst haben, dass ihre Nachrichten mitgelesen werden, kreieren sie dazu einen geheimen Schl ¨ussel mithilfe des Diffie-Hellman Schl ¨usselaustausches.. Sei G = (Z/77, +)

Problem: Es entstehen prim¨ are H¨ aufungen (primary clustering) um diejenigen Schl¨ ussel herum, die beim Einf¨ ugen eine Kollision hervorgerufen haben. EADS 4.2 Methoden

2 In jedem von H’s Binomialb¨ aumen ist ein kleinster Schl¨ ussel an der Wurzel gespeichert; verlinkt man daher die Wurzeln aller Binomialb¨ aume von H in einer zirkul¨ aren Liste,

2 In jedem von H’s Binomialb¨ aumen ist ein kleinster Schl¨ ussel an der Wurzel gespeichert; verlinkt man daher die Wurzeln aller Binomialb¨ aume von H in einer zirkul¨ aren Liste,

(a) Bestimmen Sie die Struktur der elliptischen Kurven (als Gruppen), die durch die Glei- chungen y 2 = x 3 + ax f¨ ur a = 1, 2, 3 ¨ uber F 17 gegeben sind (dazu ist die Software

Implementieren Sie auch die anderen notwen- digen Rotationsarten und erg¨anzen Sie die Methode zum Einf¨ugen um die entsprechenden Methoden- aufrufe f¨ur Rotationen.. Schreiben