• Keine Ergebnisse gefunden

ExtractMin Extrahieren und L¨ oschen des Elements mit dem kleinsten Schl¨ ussel

N/A
N/A
Protected

Academic year: 2021

Aktie "ExtractMin Extrahieren und L¨ oschen des Elements mit dem kleinsten Schl¨ ussel"

Copied!
13
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

5. Vorrangwarteschlangen (priority queues)

Definition 200

Eine Vorrangwarteschlange (priority queue) ist eine Datenstruktur, die die folgenden Operationen effizient unterst¨ utzt:

1

Insert

2

ExtractMin Extrahieren und L¨ oschen des Elements mit dem kleinsten Schl¨ ussel

3

DecreaseKey Verkleinern eines Schl¨ ussels

4

Union (meld) Vereinigung zweier (disjunkter) Priority Queues

(2)

Wir besprechen die Implementierung einer Vorrangwarteschlange als Binomial Heap. Diese Implementierung ist (relativ) einfach, aber asymptotisch bei weitem nicht so gut wie modernere

Datenstrukturen f¨ ur Priority Queues, z.B. Fibonacci Heaps (die in der weiterf¨ uhrenden Vorlesung EA1 besprochen werden).

Hier ist ein kurzer Vergleich der Zeitkomplexit¨ aten:

BinHeap FibHeap

Insert O(log n) O(1)

ExtractMin O(log n) O(log n) DecreaseKey O(log n) O(1)

Union O(log n) O(1)

worst case amortisiert

(3)

Definition 201

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

(4)

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

(5)

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

(6)

Satz 202

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 k i

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.

(7)

Definition 203

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

(8)

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 204

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

O(log n).

(9)

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.

(10)

2. Fall Sonst. Sei H 1 = {B i 1 ; i ∈ I 1 ⊂ N 0 } und sei H 2 = {B i 2 ; 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.

(11)

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 205

Die Union-Operation zweier Binomial Heaps mit zusammen n

Schl¨ usseln kann in Zeit O(log n) durchgef¨ uhrt werden.

(12)

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

(13)

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

Referenzen

ÄHNLICHE DOKUMENTE

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,

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

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

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