• Keine Ergebnisse gefunden

u [ B ]:= ∞ od u [ i ]:= u [ i − 1]+2 for i :=2 to B − 1 do u [0]:=0 ; u [1]=1 entsprechendderInvarianteii)setzen: Initialize for Operationen: i :=0 :LeereBucketserzeugenunddieBucketgrenzen to B do b [ i ]:= ∅ od u [ i ]

N/A
N/A
Protected

Academic year: 2021

Aktie "u [ B ]:= ∞ od u [ i ]:= u [ i − 1]+2 for i :=2 to B − 1 do u [0]:=0 ; u [1]=1 entsprechendderInvarianteii)setzen: Initialize for Operationen: i :=0 :LeereBucketserzeugenunddieBucketgrenzen to B do b [ i ]:= ∅ od u [ i ]"

Copied!
18
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Operationen:

1 Initialize: Leere Buckets erzeugen und die Bucketgrenzenu[i]

entsprechend der Invariante ii) setzen:

for i:= 0to B do b[i] := od u[0] := 0;u[1] = 1

for i:= 2to B1 do u[i] :=u[i1] + 2i−2 od

u[B] :=

(2)

Operationen:

2 Insert(x): Um ein neues Element einzuf¨ugen, wird linear nach dem richtigen Bucket gesucht, beginnend beim letzten Bucket:

i:=B1

while u[i]> k(x) do i:=i1 od uge x inb[i]ein

EADS 7.3 Radix-Heaps 296/530

ľErnst W. Mayr

(3)

Operationen:

3 DecreaseKey(x, δ): Hierbei wird analog zur ProzedurInsert linear nach dem Bucket gesucht, in den das Element mit dem ver¨anderten Schl¨ussel eingef¨ugt werden muss. Der einzige Unterschied besteht darin, dass die Suche in diesem Fall beim aktuellen Bucket des Elements beginnen kann, da der

Schl¨ussel erniedrigt wird und das Element deshalb nie in einen gr¨oßeren Bucket wandern kann. Aus diesem Grund ist es jedoch notwendig, zu jedem Element x die dazugeh¨orige aktuelle Bucketnummer in b no[x]zu speichern:

i:=b no[x]

entferne x ausb[i]

k(x) :=k:=k(x)δ;co ¨uberpr¨ufe Invarianten! oc while (u[i]> k) do i:=i1 od

uge x inb[i]ein

(4)

Operationen:

4 ExtractMin:

Es wird ein Element aus b[0]entfernt (und zur¨uckgegeben).

Falls b[0]nun leer ist, wird nach dem ersten nicht leeren Bucket b[i],i >0, gesucht und der kleinste dort enthaltene Schl¨ussel kfestgestellt. Es wirdu[0]auf k gesetzt, und die Bucketgrenzen werden gem¨aß der Invarianten neu gesetzt.

Danach werden die Elemente in b[i]auf die davorliegenden Buckets verteilt:

EADS 298/530

ľErnst W. Mayr

(5)

Operationen:

4 ExtractMin:

entferne (und gib zur¨uck) ein beliebiges Element in b[0]

if #Elemente in Radix-Heap = 0 then return if b[0] nicht leerthen return

i:= 1

while b[i] = do i:=i+ 1od k:= kleinster Schl¨ussel inb[i]

u[0] :=k u[1] :=k+ 1 for j:= 2 to ido

u[j] = min{u[j1] + 2j−2, u[i+ 1]}

od

verteile alle Elemente aus b[i]aufb[0], b[1], . . . , b[i1]

(6)

Beispiel 71

ppppppppppppppp

0 1 2 4 8 16

0 0

7 6 6

ppppppppppppppp

0 1 2 4 8 16

1. ExtractMin 0 0

7 6 6

@@

EADS 299/530

ľErnst W. Mayr

(7)

Beispiel 71

ppppppppppppppp

0 1 2 4 8 16

2. ExtractMin 0 7

6 6

@@

ppppppppppppppp

6 7 8 8 8 16

6 6

7 PP PP i

@@

I 1

neu gesetzte Intervallgrenzen

(8)

Korrektheit von ExtractMin:

Es gilt:b[i]6=∅ ⇒ Intervallgr¨oße 2i−1.

Unterhalbb[i]steheni Buckets zur Verf¨ugung mit Intervallen [k, k+ 1[, [k+ 1, k+ 2[, [k+ 2, k+ 4[, . . . ,[k+ 2i−2, k+ 2i−1[

(wobei alle Intervallgrenzen jedoch h¨ochstensu[i+ 1] sein k¨onnen).

Da alle Schl¨ussel inb[i]aus dem Intervall

[k,min{k+ 2i−11, u[i+ 1]1}]sind, passen sie alle in b[0], b[1], . . . , b[i1].

EADS 7.3 Radix-Heaps 300/530

ľErnst W. Mayr

(9)

Analyse der amortisierten Kosten:

Potenzial: c· X

x∈Radix-Heap

b no[x],

ur ein geeignetesc >0.

Amortisierte Komplexit¨at:

i) Initialize:O(B) ii) Insert:O(B)

iii) DecreaseKey:1 +O(∆b no[x]c·∆b no[x]) =O(1) iv) ExtractMin:

O(i+|b[i]|+P

x∈b[i]∆b no[x]c·P

x∈b[i]∆b no[x]) =O(1)

(10)

Satz 72

Ausgehend von einem leeren Heap betr¨agt die worst-case (reelle) Laufzeit f¨ur kInsert-, l DecreaseKey und

lExtractMin-Operationen bei Radix-Heaps O(klogC+l).

Beweis:

s.o.

EADS 7.3 Radix-Heaps 302/530

ľErnst W. Mayr

(11)

7.3.1 Literatur:

R.K. Ahuja, K. Mehlhorn, J.B. Orlin, R.E. Tarjan:

Faster Algorithms for the Shortest Path Problem J.ACM37, pp. 213–223 (1990)

B.V. Cherkassky, A.V. Goldberg, T. Radzig:

Shortest Path Algorithms: Theory and Experimental Evaluation

Math. Prog.73, pp. 129–174 (1996)

B.V. Cherkassky, A.V. Goldberg, C. Silverstein:

Buckets, Heaps, Lists and Monotone Priority Queues Proc. 8th SODA, ACM, pp. 83–92 (1997)

(12)

8. Union/Find-Datenstrukturen

8.1 Motivation

'

&

$

% '

&

$

%

'

&

$

%

r r r

r r r r r r r r

- 3 6

Union(T1, T2): Vereinige T1

und T2 T1T2= Find(x): Finde den

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

EADS 8.1 Motivation 304/530

ľErnst W. Mayr

(13)

8.2 Union/Find-Datenstruktur 8.2.1 Intrees

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

2 Union(T1, T2):

r

@ T1@

r

@

T2@ r

@ T2@

r

@ T1@ 1

3 Find: Suche Wurzel des Baumes, in dem sichx befindet.

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

Zeit f¨urUnion =O(1)

(14)

8.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 dannO(logn).

Zeit f¨urFind = O(logn) Zeit f¨urUnion =O(1)

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

Ω(logn)

EADS 8.2 Union/Find-Datenstruktur 306/530

ľErnst W. Mayr

(15)

8.2.3 Pfad-Kompression mit gewichteter Union (zweite Verbesserung)

Wir betrachten eine Folge vonk Find- und Union-Operationen auf einer Menge mitnElementen, darunter n1Union.

(16)

Implementierung:GewichteteUnion 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 XX XX XX XX y

s s

s s

s C

B D A

E

EADS 8.2 Union/Find-Datenstruktur 308/530

ľErnst W. Mayr

(17)

Implementierung:Find ur Pfad-Kompression:

@

@@

@

@@

Q Q QQ

Q Q QQ

@

@@ I

@

@@ I

@

@@ I

3

A AA K

A AA K

Q Q QQ 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)

(18)

Bemerkung:

Nach Definition ist

logn= min{i0; log log log. . .logn

| {z }

i log’s

1}

Beispiel 73

log0 = log1 = 0 log2 = 1

log3 = 2

log16 = 3 da 16 = 222 log265536= 5 da 265536= 2222

2

EADS 8.2 Union/Find-Datenstruktur 310/530

ľErnst W. Mayr

Referenzen

ÄHNLICHE DOKUMENTE

• In order to determine a solution of (1) over a complete lattice with infinite ascending chains, we define a suitable widening and then solve (3) :-). • Caveat: The construction

[r]

In der Abbildung sind drei magenta Parallelo- gramme eingezeichnet, welche je vier Rasterdreiecke

The main thrust of this article is that social capital is an important ingredient in the statebuilding process, a lack of which gave rise to the December 2013

2 Die Ausgabe des The- mas der Masterarbeit erfolgt durch eine Prüferin oder einen Prüfer (§ 5 Abs. 1) des entspre- chenden Faches aus der Fakultät für Biologie, Chemie

Wir werden von vome herein sagen, dass diese Wörter, da sie sich dem Bartb'schen Gesetze nicht fügen , entweder assyrische Wörter sind , aber keine. Derivata mit dem Praefix ma- ,

[r]

wir unendlih viele Lösungen, die wir