binomial queues, fibonacci...
TRANSCRIPT
![Page 1: Binomial Queues, Fibonacci Heapsac.informatik.uni-freiburg.de/.../Misc/Slides/07_Binomial_Queues.pdfWS04/05 2 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e127a846fb9c75f4b230cfc/html5/thumbnails/1.jpg)
WS04/05
Binomial Queues
Prof. Dr. S. Albers
![Page 2: Binomial Queues, Fibonacci Heapsac.informatik.uni-freiburg.de/.../Misc/Slides/07_Binomial_Queues.pdfWS04/05 2 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e127a846fb9c75f4b230cfc/html5/thumbnails/2.jpg)
2WS04/05
Vorrangswarteschlangen: Operationen
(Vorrangswarte)schlange (queue) Q
Struktur zur Speicherung von Elementen, für die eine Prioritätsordnung definiert ist, und für die folgende Operationen ausführbar sind:
Operationen: Q.initialize(): erstellt die leere Schlange QQ.isEmpty(): liefert true gdw. Q ist leerQ.insert(e): fügt Eintrag e in Q ein und gibt einen Zeiger auf den
Knoten, der Eintrag e enthält, zurückQ.deletemin(): liefert den Eintrag aus Q mit minimalen Schlüssel und
entfernt ihnQ.min(): liefert den Eintrag aus Q mit minimalen SchlüsselQ.decreasekey(v,k): verringert den Schlüssel von Knoten v auf k
![Page 3: Binomial Queues, Fibonacci Heapsac.informatik.uni-freiburg.de/.../Misc/Slides/07_Binomial_Queues.pdfWS04/05 2 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e127a846fb9c75f4b230cfc/html5/thumbnails/3.jpg)
3WS04/05
Vorrangswarteschlangen:Operationen
Zusätzliche Operationen:
Q.delete(v): entfernt Knoten v mit Eintrag aus Q (ohne v zu suchen)
Q.meld(Q´): vereinigt Q und Q´ (concatenable queue)
Q.search(k): sucht den Eintrag mit Schlüssel k in Q (searchable queue)
u.v.a., z.B. predecessor, successor, max, deletemax
![Page 4: Binomial Queues, Fibonacci Heapsac.informatik.uni-freiburg.de/.../Misc/Slides/07_Binomial_Queues.pdfWS04/05 2 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e127a846fb9c75f4b230cfc/html5/thumbnails/4.jpg)
4WS04/05
Vorrangswarteschlangen Implementationen
O(1)*O(log n)O(log n)O(1)decr.-key
O(1)O(log n)O(n) od.O(m log n)
O(1)meld (m≤n)
O(log n)*O(log n)O(log n)O(n)delete-min
O(1)O(log n)O(1)O(n)min
O(1)O(log n)O(log n)O(1)insert
Fib.-Hp.Bin. – Q.HeapListe
* = amortisierte Kostendelete(e,Q) = decreasekey(e, ∞ , Q) + deletemin(Q)
![Page 5: Binomial Queues, Fibonacci Heapsac.informatik.uni-freiburg.de/.../Misc/Slides/07_Binomial_Queues.pdfWS04/05 2 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e127a846fb9c75f4b230cfc/html5/thumbnails/5.jpg)
5WS04/05
Definition
n-ter Binomialbaum Bn, n ≥ 0
B0 = Bn+1 =
Bn
Bn
![Page 6: Binomial Queues, Fibonacci Heapsac.informatik.uni-freiburg.de/.../Misc/Slides/07_Binomial_Queues.pdfWS04/05 2 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e127a846fb9c75f4b230cfc/html5/thumbnails/6.jpg)
6WS04/05
Binomial BäumeB0 B2 B3B1
![Page 7: Binomial Queues, Fibonacci Heapsac.informatik.uni-freiburg.de/.../Misc/Slides/07_Binomial_Queues.pdfWS04/05 2 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e127a846fb9c75f4b230cfc/html5/thumbnails/7.jpg)
7WS04/05
Binomial BäumeB4
![Page 8: Binomial Queues, Fibonacci Heapsac.informatik.uni-freiburg.de/.../Misc/Slides/07_Binomial_Queues.pdfWS04/05 2 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e127a846fb9c75f4b230cfc/html5/thumbnails/8.jpg)
8WS04/05
Folgerung
1. Bn hat 2n Knoten2. Bn hat Höhe n3. Wurzel von Bn hat Grad n ( = Ordnung)4. Bn =
5. Es gibt genau Knoten mit Tiefe i in Bn
.....
in
![Page 9: Binomial Queues, Fibonacci Heapsac.informatik.uni-freiburg.de/.../Misc/Slides/07_Binomial_Queues.pdfWS04/05 2 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e127a846fb9c75f4b230cfc/html5/thumbnails/9.jpg)
9WS04/05
Exkurs: Binomialkoeffizienten
in
= # Möglichkeiten, i aus n Objekten zu wählen
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
Pascal‘sches Dreieck:
![Page 10: Binomial Queues, Fibonacci Heapsac.informatik.uni-freiburg.de/.../Misc/Slides/07_Binomial_Queues.pdfWS04/05 2 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e127a846fb9c75f4b230cfc/html5/thumbnails/10.jpg)
10WS04/05
Anzahl Knoten mit Tiefe i in Bn
Es gibt genau Knoten mit Tiefe i in Bn
in
![Page 11: Binomial Queues, Fibonacci Heapsac.informatik.uni-freiburg.de/.../Misc/Slides/07_Binomial_Queues.pdfWS04/05 2 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e127a846fb9c75f4b230cfc/html5/thumbnails/11.jpg)
11WS04/05
Binomial Queues
Binomialqueue Q:Vereinigung heapgeordneter Binomialbäume verschiedener Ordnung zur Speicherung von Schlüsseln
n Schlüssel:
Bi ∈ Q i-tes Bit in (n)2 = 1
9 Schlüssel:{2, 4, 7, 9,12, 23, 58, 65, 85}9 = (1001)2
![Page 12: Binomial Queues, Fibonacci Heapsac.informatik.uni-freiburg.de/.../Misc/Slides/07_Binomial_Queues.pdfWS04/05 2 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e127a846fb9c75f4b230cfc/html5/thumbnails/12.jpg)
12WS04/05
Binomial Queues: Beispiel 1
9 Schlüssel:{2, 4, 7, 9,12, 23, 58, 65, 85}9 = (1001)2
23B0
58
84
2
9
7
12
4
65
B3 Min bestimmen in Zeit:O(log n)
![Page 13: Binomial Queues, Fibonacci Heapsac.informatik.uni-freiburg.de/.../Misc/Slides/07_Binomial_Queues.pdfWS04/05 2 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e127a846fb9c75f4b230cfc/html5/thumbnails/13.jpg)
13WS04/05
Binomial Queues: Beispiel 2
11 Schlüssel:{2, 4, 6, 8, 14, 15, 17, 19, 23, 43, 47}11 = (1011)2 ! 3 Binomialbäume
B3, B1, und B0
14
15
4
43
19
47
17
23
Q11:2
6
8
![Page 14: Binomial Queues, Fibonacci Heapsac.informatik.uni-freiburg.de/.../Misc/Slides/07_Binomial_Queues.pdfWS04/05 2 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e127a846fb9c75f4b230cfc/html5/thumbnails/14.jpg)
14WS04/05
Child - Sibling Darstellung
siblingchild
degreeentry
parentKnotenformat:
B1B0 B2
![Page 15: Binomial Queues, Fibonacci Heapsac.informatik.uni-freiburg.de/.../Misc/Slides/07_Binomial_Queues.pdfWS04/05 2 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e127a846fb9c75f4b230cfc/html5/thumbnails/15.jpg)
15WS04/05
Binomialbäume: Vereinigung (Link)Vereinigung zweier Binomialbäume B, B´ von gleicher Ordnung
Bn + Bn ! Bn+1
Link-Operation:
B.Link(B´)/*Mache Wurzel des Baumes mit größerem Schlüssel zum Sohn des Baumes
mit kleinerem Schlüssel */1 if B.key > B´.key2 then B´.Link(B)3 return
/* B.key ≤ B´.key*/4 B´.parent = B5 B´.sibling = B.child6 B.child = B´7 B.degree = B.degree +1
konstante Zeit
![Page 16: Binomial Queues, Fibonacci Heapsac.informatik.uni-freiburg.de/.../Misc/Slides/07_Binomial_Queues.pdfWS04/05 2 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e127a846fb9c75f4b230cfc/html5/thumbnails/16.jpg)
16WS04/05
Beispiel zur Link-Operation
•12•
B+
••18
B2B2
2015•
B´
••22
••4025
••30
![Page 17: Binomial Queues, Fibonacci Heapsac.informatik.uni-freiburg.de/.../Misc/Slides/07_Binomial_Queues.pdfWS04/05 2 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e127a846fb9c75f4b230cfc/html5/thumbnails/17.jpg)
17WS04/05
Binomial Queues: Vereinigung (Meld)
B0 B5 B6 B9 B10 B11Q1
B0 B5 B8 B10 B11
Q2
Q1∪Q2
B1 B7 B8 B9 B11 B12
Zeit: O (log n)
![Page 18: Binomial Queues, Fibonacci Heapsac.informatik.uni-freiburg.de/.../Misc/Slides/07_Binomial_Queues.pdfWS04/05 2 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e127a846fb9c75f4b230cfc/html5/thumbnails/18.jpg)
18WS04/05
Binomial Queues: Operationen
Q.initialize:
Q.root = null
Q.insert(e):
new B0B0.entry = eQ.meld(B0)
Zeit = O(log n)
Q1
B0 B5 B6 B9 B10 B11
B0Q2
![Page 19: Binomial Queues, Fibonacci Heapsac.informatik.uni-freiburg.de/.../Misc/Slides/07_Binomial_Queues.pdfWS04/05 2 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e127a846fb9c75f4b230cfc/html5/thumbnails/19.jpg)
19WS04/05
Binomial Queues: Deletemin
Q.deletemin():
1. Bestimme Bi mit minimalen Schlüssel in der Wurzelliste und entferne Bi aus Q (liefert Q´)
2. Drehe die Reihenfolge der Söhne von Bi um,also zu B0 , B1 , ..... , Bi-1 ! Q´´
3. Q´.meld(Q´´)
Zeit: O(log n)
![Page 20: Binomial Queues, Fibonacci Heapsac.informatik.uni-freiburg.de/.../Misc/Slides/07_Binomial_Queues.pdfWS04/05 2 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e127a846fb9c75f4b230cfc/html5/thumbnails/20.jpg)
20WS04/05
Binomial Queues: Deletemin Beispiel 1Q11:
2 4 8
14
15
43
19
47
17
23
6
![Page 21: Binomial Queues, Fibonacci Heapsac.informatik.uni-freiburg.de/.../Misc/Slides/07_Binomial_Queues.pdfWS04/05 2 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e127a846fb9c75f4b230cfc/html5/thumbnails/21.jpg)
21WS04/05
Binomial Queues: Deletemin Beispiel 2B4 B5B2 B3B0
Q
B2Q´
B0 B3 B5
Q´´B0 B1 B2 B3
![Page 22: Binomial Queues, Fibonacci Heapsac.informatik.uni-freiburg.de/.../Misc/Slides/07_Binomial_Queues.pdfWS04/05 2 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e127a846fb9c75f4b230cfc/html5/thumbnails/22.jpg)
22WS04/05
Binomialqueues: Decreasekey
Q.decreasekey(v, k):
1. v.entry.key := k2. v.entry nach oben steigen lassen in dem geg. Baum,
bis die Heapbedingung erfüllt ist.
Zeit: O (log n )B3 2
4 58
84
9
7 65
12
![Page 23: Binomial Queues, Fibonacci Heapsac.informatik.uni-freiburg.de/.../Misc/Slides/07_Binomial_Queues.pdfWS04/05 2 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e127a846fb9c75f4b230cfc/html5/thumbnails/23.jpg)
23WS04/05
Binomial Queues: Worst Case Folge von Operationen
B6Q
Q.deletemin():
B0 B1 B2 B3 B4 B5
Q
Zeit: O(log n)
![Page 24: Binomial Queues, Fibonacci Heapsac.informatik.uni-freiburg.de/.../Misc/Slides/07_Binomial_Queues.pdfWS04/05 2 Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e127a846fb9c75f4b230cfc/html5/thumbnails/24.jpg)
24WS04/05
Binomialqueues Worst Case Folge von Operationen
insert(e, Q):
B6
Zeit: O(log n)