• Keine Ergebnisse gefunden

5. Vorrangwarteschlangen - Priority Queues Priority Queues unterst¨utzen die Operationen Insert()

N/A
N/A
Protected

Academic year: 2021

Aktie "5. Vorrangwarteschlangen - Priority Queues Priority Queues unterst¨utzen die Operationen Insert()"

Copied!
30
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

5. Vorrangwarteschlangen - Priority Queues Priority Queues unterst¨ utzen die Operationen

Insert(), Delete(), ExtractMin(), FindMin(), DecreaseKey(), Merge().

Priority Queues per se sind

nicht

f¨ ur IsElement()-Anfragen, also zum

Suchen

geeignet. Falls ben¨ otigt, muss daf¨ ur eine passende W¨ orterbuch-Datenstruktur parallel mitgef¨ uhrt werden.

EADS 5 Vorrangwarteschlangen - Priority Queues 154/598

ľErnst W. Mayr

(2)

5.1 Binomial Queues (binomial heaps)

Binomialwarteschlangen (Binomial Queues/Binomial Heaps) werden mit Hilfe von

Binomialb¨aumen

konstruiert.

Definition 40

Die Binomialb¨ aume B

n

, n

0, sind rekursiv wie folgt definiert:

Bn−1

Bn−1

B

0

B

1

B

2

B

n

Achtung:

Binomialb¨ aume sind offensichtlich

keine

Bin¨ arb¨ aume!

(3)

Lemma 41

Ein B

n

l¨ asst sich wie folgt zerlegen:

B

n−1

B

n−2

B

n−3

B

1

B

0

Erste Zerlegung von B

n

:

der Breite nach

EADS 156/598

ľErnst W. Mayr

(4)

Lemma 41

Ein B

n

l¨ asst sich wie folgt zerlegen:

B

0

B

0

B

1

B

n−3

B

n−2

B

n−1

R¨ uckgrat

Zweite Zerlegung von B

n

:

der Tiefe nach

(5)

Satz 42

F¨ ur den Binomialbaum B

n

gilt:

1

B

n

hat 2

n

Knoten.

2

Die Wurzel von B

n

hat Grad n.

3

B

n

hat H¨ ohe/Tiefe n.

4

B

n

hat

ni

Knoten in Tiefe i.

EADS 5.1 Binomial Queues (binomial heaps) 157/598

ľErnst W. Mayr

(6)

Beweis:

zu 1: Induktion unter Verwendung der Definition zu 2: Siehe

erste Zerlegung

von Binomialb¨ aumen zu 3: Siehe

zweite Zerlegung

von Binomialb¨ aumen zu 4: Induktion ¨ uber n:

(I) n= 0:B0hat 1 Knoten in Tiefei= 0und0Knoten in Tiefe i >0, also 0i

Knoten in Tiefei.

(II) IstNin die Anzahl der Knoten in Tiefeiim Bn, so gilt unter der entsprechenden Induktionsannahme f¨urBn, dass

Nin+1=Nin+Ni−1n =

n

i

+

n

i−1

= n+ 1

i

, woraus wiederum per Induktion die Behauptung folgt.

(7)

Bemerkung:

Eine m¨ ogliche Implementierung von Binomialb¨ aumen ist das Schema

” Pointer zum

ersten

Kind und Pointer zum

n¨achsten

Geschwister“.

EADS 5.1 Binomial Queues (binomial heaps) 159/598

ľErnst W. Mayr

(8)

Definition 43

Eine

Binomial Queue

mit n Elementen wird wie folgt aufgebaut:

1

Betrachte die Bin¨ ardarstellung von n.

2

F¨ ur jede Position i mit einem 1-Bit wird ein Binomialbaum B

i

ben¨ otigt (der 2

i

Knoten hat).

3

Verbinde die (Wurzeln der) Binomialb¨ aume in einer doppelt verketteten zirkul¨ aren Liste.

4

Beachte, dass innerhalb jedes Binomialbaums die

Heap-Bedingung erf¨ ullt sein muss. Dadurch enth¨ alt die Wurzel eines jeden Binomialbaums gleichzeitig sein minimales

Element.

5

Richte einen

Min-Pointer

auf das Element in der Wurzel-Liste

mit minimalem Schl¨ ussel ein.

(9)

Beispiel 44

Beispiel: n = 11 = (1011)

2

: B

3

2 3

4

8

B

1

1

5

11 9

10

6

B

0

7

min

EADS 5.1 Binomial Queues (binomial heaps) 161/598

ľErnst W. Mayr

(10)

Operationen f¨ ur Binomial Queues:

IsElement : Die Heap-Bedingung wirkt sich nur auf die Anordnung der Datenelemente innerhalb jedes einzelnen Binomialbaums aus, regelt aber nicht, in welchem Binomialbaum ein gegebenes Element gespeichert ist.

Tats¨ achlich kann ein Element in jedem der vorhandenen Binomialb¨ aume stehen. Das Suchen ist hier nicht effizient implementierbar, denn im worst-case m¨ usste jedes Element der Binomialb¨ aume angeschaut werden.

Also w¨ aren zum Suchen eines Elements schlimmstenfalls 2

0

+ 2

1

+

· · ·

+ 2

blognc−1

= Θ(n) Elemente zu betrachten.

Daher wird eine gesonderte Datenstruktur, etwa ein

Suchbaum, f¨ ur die IsElement-Operation verwendet. Damit ist

Suchen mit Zeitaufwand

O(log

n) m¨ oglich.

(11)

Operationen f¨ ur Binomial Queues:

Merge: Das Vorgehen f¨ ur das Merge (disjunkte Vereinigung) zweier Binomial Queues entspricht genau der

Addition zweier Bin¨arzahlen: Ein einzelnes

B

i

wird ¨ ubernommen, aus zwei B

i

’s wird ein B

i+1

konstruiert. Damit die Heap-Bedingung erhalten bleibt, wird als Wurzel des entstehenden B

i+1

die Wurzel der beiden B

i

mit dem kleineren Schl¨ ussel genommen.

Allerdings kann ein solcher

” Ubertrag“ dazu f¨ ¨ uhren, dass im n¨ achsten Verschmelzungsschritt drei B

i+1

zu verschmelzen sind. Dann wird unter Beachtung obiger Regel ein B

i+2

gebildet und einer der B

i+1

unver¨ andert ¨ ubernommen.

EADS 5.1 Binomial Queues (binomial heaps) 163/598

ľErnst W. Mayr

(12)

Algorithmus:

for i := 0, 1, 2, 3, . . . do if (∃ genau 3 B

i

s) then

verbinde zwei der B

i

’s zu einem B

i+1

und behalte das dritte B

i

elif (∃ genau 2 B

i

s) then verbinde sie zu einem B

i+1

elif (∃ genau ein B

i

) then

¨ ubernimm es fi

od

Zeitkomplexit¨ at:

O(log

n) =

O(log(n1

+ n

2

))

(13)

Operationen f¨ ur Binomial Queues:

Insert: Die Insert-Operation wird einfach durch eine Merge-Operation mit einem B

0

implementiert.

Beispiel 45

1 0 0 1 0 1 1 1

(B

7

) (B

4

) (B

2

) (B

1

) (B

0

) 1

1 0 0 1 1 0 0 0

Zeitkomplexit¨ at:

O(log

n)

EADS 5.1 Binomial Queues (binomial heaps) 165/598

ľErnst W. Mayr

(14)

Operationen f¨ ur Binomial Queues:

Initialisierung einer BQ durch n sukzessive Insert-Operationen:

Hier erg¨ abe die obige Absch¨ atzung einen Gesamtaufwand von

O(n

log n), was allerdings schlecht abgesch¨ atzt ist.

Wir sind an den Kosten zum sukzessiven Aufbau einer Binomial Queue mit n Elementen interessiert, die ¨ ubrigens identisch sind zum Aufwand f¨ ur das bin¨ are Z¨ ahlen von 0 bis n, wenn jeder Z¨ ahlschritt und jeder ¨ Ubertrag jeweils eine Zeiteinheit kosten:

0 + 1

| {z }

1

+1

| {z }

2Schritte

+1

| {z }

1

+1

| {z }

3

+1

| {z }

1

(15)

Sei a

n

die Anzahl der Schritte (Einf¨ ugen des neuen Elements und anschließende Verschmelzungen) beim Mergen eines Knotens zu einer Queue mit n

1 Elementen. Dann gilt f¨ ur a

n

:

n a

n

1 1 2 2 . . . 4 1 3 . . . 8 1 2 1 4

. . . 16 1 2 1 3 1 2 1 5

. . . 32 1 2 1 3 1 2 1 4 1 2 1 3 1 2 1 6 Man erkennt sofort, dass jede Zeile (außer den beiden ersten) doppelt so lange ist wie die vorhergehende und dabei die Folge aller vorhergehenden Zeilen enth¨ alt, wobei das letzte Element noch um eins erh¨ oht ist.

EADS 5.1 Binomial Queues (binomial heaps) 167/598

ľErnst W. Mayr

(16)

Damit ergibt sich f¨ ur den Gesamtaufwand der sukzessiven Erzeugung einer Binomial Queue mit n Elementen

T

n

=

n

X

i=1

a

i

n +

j

n 2

k

+

j

n 4

k

+

j

n 8

k

+

· · ·

2n .

(17)

Operationen f¨ ur Binomial Queues:

FindMin: Diese Operation ist trivial ausf¨ uhrbar, denn es ist ein Pointer auf das minimale Element gegeben.

Zeitkomplexit¨ at:

O(1)

EADS 5.1 Binomial Queues (binomial heaps) 169/598

ľErnst W. Mayr

(18)

Operationen f¨ ur Binomial Queues:

ExtractMin:Das Minimum ist auf Grund der Heapbedingung Wurzel eines Binomialbaums B

k

in der Liste. Wird es gel¨ oscht, so zerf¨ allt der Rest in k Teilb¨ aume B

0

, B

1

, . . . , B

k−1

:

B

k

&

k Kinder B

0

, B

1

, . . . , B

k−1

Die Teilb¨ aume B

0

, B

1

, . . . , B

k−1

sind alle zur verbleibenden Queue zu mergen. Außerdem muss der Min-Pointer

aktualisiert werden.

Der Zeitaufwand f¨ ur die ExtractMin-Operation ist daher:

O(log

n)

(19)

Operationen f¨ ur Binomial Queues:

Delete : L¨ osche Knoten x:

1. Fall: xist Min-Wurzel: s.o.

2. Fall: xist eine andere Wurzel in der Wurzelliste. Analog zu oben, ohne den Min-Pointer zu aktualisieren.

3. Fall: xist nicht Wurzel eines Binomialbaumes.

EADS 5.1 Binomial Queues (binomial heaps) 171/598

ľErnst W. Mayr

(20)

Angenommen, x ist in einem B

k

enthalten:

B

0

B

i−1

(I)

(B

i

) B

i

-

(III) (B

i

ohne x) B

i+1

B

k−3

(II) (B

i+1

, . . . ,B

k−1

)

B

k−2

B

k−1

B

k

(21)

Es ergeben sich im 3. Fall folgende Unterf¨ alle:

(3a)

x ist Wurzel von B

i

:

B

i

x B

0

,B

1

, . . . ,B

i−1

Verfahre wie im 2. Fall.

(3b)

x ist nicht Wurzel des B

i

:

B

i

x

Wiederhole rekursiv Fall 3, bis Fall (3a) eintritt.

EADS 5.1 Binomial Queues (binomial heaps) 173/598

ľErnst W. Mayr

(22)

Insgesamt muss die Binomial Queue ohne B

k

mit einer aus einer Teilmenge von

{B0

, . . . , B

k−1}

bestehenden Binomial Queue vereinigt werden.

Zeitkomplexit¨ at:

O(log

n)

(23)

Operationen f¨ ur Binomial Queues:

DecreaseKey : Verkleinere k(x)

1. Fall: xist die Min-Wurzel: keine Struktur¨anderung n¨otig

2. Fall: xist eine andere Wurzel: keine Struktur¨anderung n¨otig, ggf.

Aktualisierung des Min-Pointers

3. Fall: Sonst wieDelete(x), aber Einf¨ugen/Merge des Baumes mit Wurzelxund dem neuen reduzierten Schl¨ussel k(x)in die Wurzelliste.

Zeitkomplexit¨ at:

O(log

n)

EADS 5.1 Binomial Queues (binomial heaps) 175/598

ľErnst W. Mayr

(24)

Satz 46

Binomial Queues haben f¨ ur die Operationen Insert, Delete, ExtractMin, FindMin, Merge und Initialize jeweils

worst-case-Kosten von

O(log

n) .

(25)

Die urspr¨ ungliche Literatur zu Binomial Queues:

Jean Vuillemin:

A data structure for manipulating priority queues,

Commun. ACM21(4), pp. 309–315 (1978) Mark R. Brown:

Implementation and analysis of binomial queue algorithms,

SIAM J. Comput.7(3), pp. 298–319 (1978)

EADS 5.1 Binomial Queues (binomial heaps) 177/598

ľErnst W. Mayr

(26)

5.2 Fibonacci-Heaps Vorbemerkungen:

1

Fibonacci-Heaps stellen eine Erweiterung der Binomial Queues und eine weitere M¨ oglichkeit zur Implementierung von Priority Queues dar. Die

amortisierten

Kosten f¨ ur die Operationen Delete() und ExtractMin() betragen hierbei

O(log

n), die f¨ ur alle anderen Heap-Operationen lediglich

O(1).

Nat¨ urlich k¨ onnen die worst-case-Gesamtkosten f¨ ur n Insert und n ExtractMin nicht unter Ω(n log n) liegen, denn diese Operationen zusammengenommen stellen einen

Sortieralgorithmus mit unterer Schranke Ω(n log n) dar.

(27)

Vorbemerkungen:

2

Die Verwendung von Fibonacci-Heaps erlaubt eine

Verbesserung der Komplexit¨ at der Algorithmen f¨ ur

minimale Spannb¨aume

sowie f¨ ur Dijkstra’s

k¨urzeste Wege-Algorithmus,

denn diese verwenden relativ h¨ aufig die

DecreaseKey -Operation, welche durch Fibonacci-Heaps billig zu implementieren ist. Bei einem Algorithmus, bei dem die Delete - und ExtractMin-Operationen nur einen geringen Anteil der Gesamtoperationen darstellen, k¨ onnen Fibonacci-Heaps asymptotisch schneller als Binomial Queues sein.

EADS 5.2 Fibonacci-Heaps 178/598

ľErnst W. Mayr

(28)

5.2.1 Die Datenstruktur

Die Schl¨ ussel sind an den Knoten von B¨ aumen gespeichert.

Jeder Knoten hat folgende Gr¨ oßen gespeichert:

Schl¨ussel und Wert

Rang (= Anzahl der Kinder)

Zeiger zum ersten Kind, zum Vater (NIL im Falle der Wurzel), zu doppelt verketteter Liste der Kinder

Markierung∈ {0,1}(außer Wurzel)

Bemerkung: Die doppelte Verkettung der Kinder- bzw.

Wurzellisten in Heaps erlaubt das L¨ oschen eines Listeneintrages in

Zeit

O(1).

(29)

Binomial-Queue vs. Fibonacci-Heap:

Beide sind W¨ alder von B¨ aumen, innerhalb derer die Heap-Bedingung gilt.

a priori keine Einschr¨ ankung f¨ ur die Topologie der B¨ aume, aber ohne Delete - oder DekreaseKey-Operationen (u.¨ a.) bleibt ein Binomialwald ein Binomialwald und ein Fibonacci-Heap ein Wald aus Binomialb¨ aumen.

Fibonacci-Heaps kennen keine Invariante der Form

” Nur B¨ aume verschiedenen Wurzel-Rangs“.

Fibonacci-Heaps:

lazy merge.

Fibonacci-Heaps:

lazy delete.

EADS 5.2 Fibonacci-Heaps 180/598

ľErnst W. Mayr

(30)

Uberblick: ¨

Operationen worst case amortisiert

Insert

O(1) O(1)

Merge

O(1) O(1)

FindMin

O(1) O(1)

DecreaseKey

O(n) O(1)

Delete

O(n) O(log

n)

ExtractMin

O(n) O(log

n)

Referenzen

ÄHNLICHE DOKUMENTE

Using the description of multiline queues as functions on words, we introduce the notion of a spectral weight of a word by defining a new weighting on multiline queues.. We show

Des weiteren k¨ onnen mehrere Prozesse gemeinsam eine einzige Message Queue zur Kommunikation nut- zen, es muss nicht f¨ ur jeden Kommunikationsweg eine eigene Pipe verwendet werden..

Although middle-income country health technology assess- ment agencies were initially unconnected to the design of publicly funded benefits plans or coverage decisions,

Input/Output ports and associated address decoding and card select circuitry provide program control of the interrupt latches, al lowing latch reading (poll ing),

 Delete splits the node to be deleted and its subtree, performs a DeleteMin on the subtree, and pairs the resulting tree with the root of the heap..  DeleteMin removes and

the produced subheaps rooted at p and r are joined and the resulting subheap is put in the place of the subheap originally rooted at p or r, depending on which becomes the root of

In this paper we study a system consisting of c parallel identical servers and a common queue. The service times are Erlang-r distributed and the interarrival

Recall that in the preceding example each year of education had the same ranking effect (effect on scores which determine ranking), yet each grade had different