binomiale heaps - math.uni-wuppertal.deschaefer/sammlung/binomialeheaps.pdf · binomiale heaps 2....
TRANSCRIPT
![Page 1: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/1.jpg)
17.01.2003 Christian John / Tobias Berger Nr.1
Binomiale Heaps
![Page 2: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/2.jpg)
17.01.2003 Christian John / Tobias Berger Nr.2
Binomiale Heaps
Gliederung:
1. Binomialer Baum
2. Binomialer Heap
3. Operationen auf Binomialen Heaps
3.1 - make-heap3.2 - minimum(h)3.3 - link(y,z)3.4 - merge(h1,h2)
![Page 3: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/3.jpg)
17.01.2003 Christian John / Tobias Berger Nr.3
Binomiale Heaps
1. Binomialer Baum = Basisstruktur für Binomiale Heaps
Definition:Für ein k>=0 definieren wir die Struktur des Binomialen Baumes:
0B
1?kB
ist ein Baum mit nur einem Knoten
entsteht aus zwei Bäumen , indem man die Wurzel des einen Baumes zum Sohn des anderenmacht
kB
![Page 4: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/4.jpg)
17.01.2003 Christian John / Tobias Berger Nr.4
Binomiale Heaps
1?kB
kBkB0B
![Page 5: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/5.jpg)
17.01.2003 Christian John / Tobias Berger Nr.5
Binomiale Heaps
Verschmelzung Binomialer Bäume:
Die Verschmelzung Binomialer Bäume erfolgt gleich der Addition von Binärzahlen, wobei die Anzahl der Knoten der Bäume in Binärzahlen dargestellt wird:
+ =
1B1B 2B0I0 + 0I0 = I00
![Page 6: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/6.jpg)
17.01.2003 Christian John / Tobias Berger Nr.6
Binomiale Heaps
Eigenschaften für Binomiale Bäume:
• besteht exakt aus 2k Knoten
• hat die Höhe k
• es ergeben sich genau Knoten in der Tiefe i mit i=0,1,2,...,k
• die Wurzel besitzt Ausgangsgrad k und die Teilbäume von links
nach rechts sind ,....,
Alle Knoten haben einen kleineren Grad als die Wurzel.
kB
kB
1?kB
???
????
?ik
0B
![Page 7: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/7.jpg)
17.01.2003 Christian John / Tobias Berger Nr.7
Binomiale Heaps
Beweise der Eigenschaften für Binomiale Bäume:
• besteht aus zwei Bäumen , also = 2 = 2k
• da bei der Konstruktion von ein Baum Unterbaum der
Wurzel des anderen wird, erhöht sich die Höhe von
gegenüber der von um genau 11?kB
kB
kBkB 1?kB
1?kB
1?kBkB1?kB
![Page 8: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/8.jpg)
17.01.2003 Christian John / Tobias Berger Nr.8
Binomiale Heaps
Beweise der Eigenschaften für Binomiale Bäume:
• Aufgrund der Konstruktion von ergibt sich die Anzahl der
Knoten auf Höhe i als Summe der Anzahl der Knoten auf Höhe i
in plus Anzahl der Knoten auf Höhe i -1 in
Also: + =
1?kB
kB
1?kB
???
????
? ?i
k 1???
????
???11
ik
???
????
?ik
![Page 9: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/9.jpg)
17.01.2003 Christian John / Tobias Berger Nr.9
Binomiale Heaps
Beweise der Eigenschaften für Binomiale Bäume:
• die Konstruktion von verändert nur den Ausgangsgrad der
Wurzel des rechten Teilbaumes . Dieser Grad war vor
der Konstruktion k - 1 und ist nun k, da links ein
Teilbaum hinzugekommen ist. Dieser Teilbaum ist , und die
anderen Unterbäume der Wurzel sind nach Voraussetzung
,..., 2?kB
1?kBkB
1?kB
0B
![Page 10: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/10.jpg)
17.01.2003 Christian John / Tobias Berger Nr.10
Binomiale Heaps
Korollar:
Der maximale Grad eines Knotens in einem Binomialen Baum, der n Knoten hat, ist ld n
n = 2k
ld n = k
ld n = log2 n (Logarithmus zur Basis 2)
![Page 11: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/11.jpg)
17.01.2003 Christian John / Tobias Berger Nr.11
Binomiale Heaps
2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt; jeder Knoten enthält einen Schlüssel
Definition:Jeder dieser Bäume ist Heap-geordnet, das heißt, der Schlüssel eines Knotens ist kleiner/gleich der Schlüssel seiner Söhne. Es darf kein Baum mit gleichem Grad mehrfach vorhanden sein.
![Page 12: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/12.jpg)
17.01.2003 Christian John / Tobias Berger Nr.12
Binomiale Heaps
Zusammenhang zwischen Binomialem Heap und Binärzahlen:
Ein Binomialer Heap, zusammengesetzt aus Binomialen Bäumen, lässt sich als Binärzahl verwalten!
Ein Heap mit folgenden Bäumen , , , , lässt sich als Binärzahl wie folgt schreiben:
Ein Baum mit vier Knoten kann als Binärzahl dargestellt werden; wenn Bäume verschmelzen, gleicht dieses einer Addition von Binärzahlen.
IIII
0I00
2B 3B0B 1B
![Page 13: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/13.jpg)
17.01.2003 Christian John / Tobias Berger Nr.13
Binomiale Heaps
000I + 00I0 + 0I00 + I000 = IIII
Ein Binomialer Heap mit n Knoten besteht aus höchstens ?ld n?+1Binomialen Bäumen:
10 7
33 23
41
2
6 1725
54
47 3149
8
130B
1B
2B3B
![Page 14: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/14.jpg)
17.01.2003 Christian John / Tobias Berger Nr.14
Binomiale Heaps
Repräsentation des Heap
0
250
121
1 12
0
290
141
1 63
111
01100
380
270
180
170
01 102
Pkeydegreesiblingchild
![Page 15: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/15.jpg)
17.01.2003 Christian John / Tobias Berger Nr.15
Binomiale Heaps
3.1 make-heap()
Erzeugt einen leeren Heap. Ein leerer Heap wird einfach durch einen nil-Zeiger repräsentiert
Laufzeit: ? (1)
3. Operationen auf Binomiale Heaps
![Page 16: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/16.jpg)
17.01.2003 Christian John / Tobias Berger Nr.16
Binomiale Heaps
3.2 minimum(h)
Liefert einen Zeiger auf den Knoten mit dem kleinsten Schlüssel imHeap h. Die Wurzeln der Binomialen Bäume werden also durchsucht.
Laufzeit: ? (ld n)
![Page 17: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/17.jpg)
17.01.2003 Christian John / Tobias Berger Nr.17
Binomiale Heaps
minimum(h)
min-ptr := nil;x := head[h];min := maxint;while x <> nil doif key[x] < min thenmin := key[x];min-ptr := x;
endif;x := sibling[x];
endwhile;return min-ptr;
![Page 18: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/18.jpg)
17.01.2003 Christian John / Tobias Berger Nr.18
Binomiale Heaps
3.3 link(y,z)
Diese Funktion “linkt“ drei Zeiger von zwei Knoten um; der Knoteny wird Sohn von z: y bekommt den bisherigen Sohn von z als Bruder, bevor y selber der Sohn von z wird.
Laufzeit: ? (1)
![Page 19: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/19.jpg)
17.01.2003 Christian John / Tobias Berger Nr.19
Binomiale Heaps
link(y,z)
p[y] := z;sibling[y] := child[z];child[z] := y;degree[z] := degree[z] + 1;
![Page 20: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/20.jpg)
17.01.2003 Christian John / Tobias Berger Nr.20
Binomiale Heaps
3.4 merge(h1,h2)
Merge durchläuft beide Teilmengen sequentiell und erzeugt die Gesamtfolge sequentiell. Die Gesamtfolge ist kein BinomialerHeap.
Laufzeit: ? (ld n)
![Page 21: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/21.jpg)
17.01.2003 Christian John / Tobias Berger Nr.21
Binomiale Heaps
merge(h1,h2)
h-ptr := make-heap();last-ptr := head[h];x-ptr := head[h1];y-ptr := head[h2];while(x-ptr != nil && y-ptr != nil)if(degree[x-ptr]<=degree[y-ptr])sibling[last-ptr] := x-ptr;x-ptr := sibling[x-ptr];
elsesibling[last-ptr] := y-ptr;y-ptr := sibling[y-ptr];
last-ptr := sibling[y-ptr];
![Page 22: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/22.jpg)
17.01.2003 Christian John / Tobias Berger Nr.22
Binomiale Heaps
merge(h1,h2) 2.Teil
while(x-ptr != nil)sibling[last-ptr] := x-ptr; x-ptr := sibling[x-ptr];
while(y-ptr != nil) sibling[last-ptr] := y-ptr; y-ptr := sibling[y-ptr];
![Page 23: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/23.jpg)
17.01.2003 Christian John / Tobias Berger Nr.23
Binomiale HeapsBeispiel der union-Funktion:
Heap[5]:
Heap[7]:
![Page 24: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/24.jpg)
17.01.2003 Christian John / Tobias Berger Nr.24
Binomiale HeapsInhalt
1. Operationen | Wiederholungen1.1 Binomialer Heap1.2 minimum(h)1.3 Datenstruktur eines Heapelements1.3 link (y,z)1.4 merge(h1,h2)
2. weitere Operationen2.1 union(h1,h2)2.2 insert (h,x)2.3 extract_min(h)2.4 decrease key(h,x,k)2.5 delete key(h,x)
3. Anwendungsbeispiel
1. Binomiale Heaps
![Page 25: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/25.jpg)
17.01.2003 Christian John / Tobias Berger Nr.25
Binomiale Heaps
Operationen | Wiederholungen | 1
![Page 26: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/26.jpg)
17.01.2003 Christian John / Tobias Berger Nr.26
Binomiale Heaps1.1 Binomialer Heap
1. Operationen | Wiederholungen
0001 + 0010 + 0100 + 1000 = 1111
10 7
33 23
41
2
6 1725
54
47 3149
8
13
B0 B1 B2 B3
![Page 27: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/27.jpg)
17.01.2003 Christian John / Tobias Berger Nr.27
Binomiale Heaps1.2 Datenstruktur eines Heapelements
1. Operationen | Wiederholungen
parent
key
degree
child sibling
![Page 28: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/28.jpg)
17.01.2003 Christian John / Tobias Berger Nr.28
Binomiale Heaps1.2 Datenstruktur eines Heapelements
1. Operationen | Wiederholungen
0
250
121
1 12
0
290
141
1 63
111
01100
380
270
180
170
01 92
![Page 29: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/29.jpg)
17.01.2003 Christian John / Tobias Berger Nr.29
Binomiale Heaps1.2 minimum(h)
Liefert einen Zeiger auf den Knoten mit dem kleinsten Schlüssel imHeap h. Die Wurzeln der Binomialen Bäume werden also durchsucht.
Laufzeit: O (ld n)
1. Operationen | Wiederholungen
![Page 30: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/30.jpg)
17.01.2003 Christian John / Tobias Berger Nr.30
Binomiale Heaps1.3 link (y,z)
Diese Funktion “linkt“ drei Zeiger von zwei Knoten um;
der Knoten y wird Sohn von z;y bekommt den bisherigen Sohn von z als Bruder, bevor y selber der Sohn von z wird.
Laufzeit: O (1)
link(y,z)
p[y] := z;sibling[y] := child[z];child[z] := y;degree[z] := degree[z] + 1;
1. Operationen | Wiederholungen
![Page 31: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/31.jpg)
17.01.2003 Christian John / Tobias Berger Nr.31
Binomiale Heaps1.4 merge(h1,h2)
merge(h1,h2) durchläuft beide Teilmengen sequentiell und erzeugt die Gesamtfolge sequentiell. Die Gesamtfolge ist kein Binomialer Heap.
Laufzeit: O (ld n)
1. Operationen | Wiederholungen
![Page 32: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/32.jpg)
17.01.2003 Christian John / Tobias Berger Nr.32
Binomiale Heaps
weitere Operationen | 2
![Page 33: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/33.jpg)
17.01.2003 Christian John / Tobias Berger Nr.33
Binomiale Heaps2.1 union(h1,h2)
2. weitere Operationen
verbindet die die zwei Heaps h1 und h2 und gibt den neuen Head h zurück
benutzt die bekannten Funktionen: - make()- link()- merge()
Laufzeit: O (ld n) (siehe später)
Beispiel: 1 0 0 1+ 0 1 0 1
1 1 1 0
23 22 21 20
![Page 34: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/34.jpg)
17.01.2003 Christian John / Tobias Berger Nr.34
Binomiale Heaps2.1 union(h1,h2) - BEISPIEL
2. weitere Operationen
Beispiel einer union-Funktion
Heap[5]: Heap[7]: Heap[13]:
Heap[13]: Heap[13]: Heap[13]:
merge()
step1 step2 step3
![Page 35: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/35.jpg)
17.01.2003 Christian John / Tobias Berger Nr.35
Binomiale Heaps2. weitere Operationen2.1 union(h1,h2) - PSEUDO CODE
h := make-heap() head[h] := merge(h1,h2)if head[h] = nil
then return hprev-x := nilx := head[h] next-x := sibling[x]while next-x <> nil
do if (degree[x] <> degree[next-x]) or (sibling[next-x] <> nil and degree[sibling[next-x]] = degree[x])
then prev-x := x x := next-x
else if key[x] <= key[next-x]then sibling[x] := sibling[next-x]
link(next-x,x)else if prev-x = NIL
then head[H] := next-xelse sibling[prev-x] := next-x
link(x,next-x) x := next-x
next-x := sibling[x]return h
![Page 36: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/36.jpg)
17.01.2003 Christian John / Tobias Berger Nr.36
Binomiale Heaps2. weitere Operationen2.1 union(h1,h2) - AUFWAND
Aufwand :
O(1)make_heap()O(ld n)heap_merge()O(1) * ( ? ldn1 ?+ ? ldn2 ?+ 2 )while()
O(ld n)union(h1,h2)
![Page 37: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/37.jpg)
17.01.2003 Christian John / Tobias Berger Nr.37
Binomiale Heaps2.2 insert(h,x)
2. weitere Operationen
Stützt sich auf union ab.Es wird ein Heap h‘ mit x als einzigem Knoten erzeugt und mit h vereinigt.
Laufzeit: O (ld n)
![Page 38: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/38.jpg)
17.01.2003 Christian John / Tobias Berger Nr.38
Binomiale Heaps2.2 insert(h,x) - PSEUDO CODE
2. weitere Operationen
insert(h,x)
h‘ := make-heap();p[x] := nil;child[x] := nil;sibling := nil;degree[x] := 0;head[h‘] := x;h := union(h, h‘);return h;
![Page 39: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/39.jpg)
17.01.2003 Christian John / Tobias Berger Nr.39
Binomiale Heaps2.3 extract_min(h)
2. weitere Operationen
Liefert einen Verweis auf den Knoten mit dem kleinsten Schlüsselund entfernt diesen aus dem Heap.
Laufzeit: O (ld n)
![Page 40: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/40.jpg)
17.01.2003 Christian John / Tobias Berger Nr.40
Binomiale Heaps2.3 extract_min(h) - PSEUDO CODE
2. weitere Operationen
extract_min(h)
1 finde die Wurzel x mit minimalem Schlüssel in der Wurzelliste von hund entferne x aus der Wurzelliste;
2 h‘ := make-heap();
3 kehre die Reihenfolge der verketteten Söhne von x um und setzte head[h‘] auf den Kopf der umgedrehten Liste;
4 h := union(h, h‘);
5 return h
Laufzeit: O(ld n)
![Page 41: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/41.jpg)
17.01.2003 Christian John / Tobias Berger Nr.41
Binomiale Heaps2. weitere Operationen2.3 extract_min(h) - BEISPIEL
1 3
2
Heap[7]:
x
Heap[3]:
x.child
Heap[3]:
Heap[3]:3 1
2
union()
![Page 42: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/42.jpg)
17.01.2003 Christian John / Tobias Berger Nr.42
Binomiale Heaps2. weitere Operationen2.3 extract_min(h) - BEISPIEL
0
250
121
113
180
x0
70
41
122
450
x.child
250
121
180
0
70
41
122
450
![Page 43: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/43.jpg)
17.01.2003 Christian John / Tobias Berger Nr.43
Binomiale Heaps2. weitere Operationen2.3 extract_min(h) - BEISPIEL
x.child
250
1210112
Heap[]
x.child
250
121 0112
Heap[]
x.child
250 0112
Heap[]
121
x.child
250 0112
Heap[]
121
nil
nil
Heap[] x.child
x.child x.child.sibling
temp Heap[]
Heap[].sibling temp
![Page 44: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/44.jpg)
17.01.2003 Christian John / Tobias Berger Nr.44
Binomiale Heaps2. weitere Operationen2.3 extract_min(h) - BEISPIEL
Heap[] x.child
x.child x.child.sibling
temp Heap[]
Heap[].sibling temp
x.child
250
121 0112
Heap[]
nil
temp
x.child
250
121 0112
Heap[]
nil
temp
x.child
250
121 0112
Heap[]
nil
temp
x.child
250
121 0112
Heap[]
nil
temp
![Page 45: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/45.jpg)
17.01.2003 Christian John / Tobias Berger Nr.45
Binomiale Heaps2.4 decrease_key(h,x,k)
2. weitere Operationen
Gegeben: Element z, dessen Schlüssel man verkleinern will
Wenn der neue Wert k kleiner ist als der bisherige x, wird z so oft mit seinem Vater getauscht, bis der Wert des Vater kleiner ist als k oder z die Wurzel ist.
Dieses wird gemacht um die Heapstruktur wieder herzustellen.
Laufzeit: O(ld n)
![Page 46: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/46.jpg)
17.01.2003 Christian John / Tobias Berger Nr.46
Binomiale Heaps2.4 decrease_key(h,x,k)
2. weitere Operationen
if k > key[x]
then error „new key is greater than current key“
key[x] k
y x
z p[y]
while z nil and key[y] < key[z]
do exchange key[y] key[z]
//if y and z have satellite fields,exchange them,too
y z
z p[y]
=
![Page 47: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/47.jpg)
17.01.2003 Christian John / Tobias Berger Nr.47
Binomiale Heaps2.4 decrease_key(h,x,k) - BEISPIEL
2. weitere Operationen
6
10 8 14 29
16 28 13 11 17 38
7 23 77 27
42
16
16
7
16
7
10
10
7
10
7
66
![Page 48: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/48.jpg)
17.01.2003 Christian John / Tobias Berger Nr.48
Binomiale Heaps2.5 delete_key(h,x)
2. weitere Operationen
Gegeben: Element x, welches wir löschen wollen
Setze Wert von z auf -
decrease_key()
delete_minimum
Laufzeit: O(ld n)
![Page 49: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/49.jpg)
17.01.2003 Christian John / Tobias Berger Nr.49
Binomiale Heaps
Anwendungsbeispiel | 3
![Page 50: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/50.jpg)
17.01.2003 Christian John / Tobias Berger Nr.50
Binomiale Heaps
2
1
3
4
5
6
78
A B
C
D
E
3.1 minimal spannende Bäume
3. Anwendungsbeispiel
Gesucht: minimal spannender Baum
möglich mit binomialen Heaps?
![Page 51: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/51.jpg)
17.01.2003 Christian John / Tobias Berger Nr.51
Binomiale Heaps
2
1
3
4
5
6
78
A B
C
D
E
A16
7
A - B A - E
A - C
B58
6
B - C B - E
B - A
C3
7 4
8
C - D
C - A C - E
C - B
D2
3
D - E
D - C
E
4
1
2 5
E - A
E - D E - B
E - C
3.1 minimal spannende Bäume
3. Anwendungsbeispiel
![Page 52: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/52.jpg)
17.01.2003 Christian John / Tobias Berger Nr.52
Binomiale Heaps3.1 minimal spannende Bäume - PSEUDOCODE
3. Anwendungsbeispiel
mst()
T <- nil
foreach Knoten vi ? V
Ei <- make_heap()union(Ei,{(vi,v):v ? E}anz = |V|
while anz > 1e = extract_min(E1)if(e.anf, e.end liegen in versch Zuskomp)
anz = anz-1T <- T+{e}union (E1, Ei)
return T
Aufwand
O( |E| * ld(|E|) )
![Page 53: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/53.jpg)
17.01.2003 Christian John / Tobias Berger Nr.53
Binomiale Heaps
2
1
3
4
5
6
78
A B
C
D
E
A16
7
A - B A - E
A - C
B58
6
B - C B - E
B - A
C3
7 4
8
C - D
C - A C - E
C - B
D2
3
D - E
D - C
E
4
1
2 5
E - A
E - D E - B
E - Canz = 5
3.1 minimal spannende Bäume
3. Anwendungsbeispiel
![Page 54: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/54.jpg)
17.01.2003 Christian John / Tobias Berger Nr.54
Binomiale Heaps
A6
7
A - B
A - C
B58
6
B - C B - E
B - A
C3
7 4
8
C - D
C - A C - E
C - B
D2
3
D - E
D - C
E
4
1
2 5
E - A
E - D E - B
E - C
nil
anz = 4
A
6
7
A - B
A - C
B58
6
B - C B - E
B - A
C3
7 4
8
C - D
C - A C - E
C - B
D2
3
D - E
D - C
E
4
25
E - DE - B
E - C
nil
anz = 4
nicht in
die Liste
3.1 minimal spannende Bäume
3. Anwendungsbeispiel
![Page 55: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/55.jpg)
17.01.2003 Christian John / Tobias Berger Nr.55
Binomiale Heaps
A
6
7
A - B
A - C
B58
6
B - C B - E
B - A
C3
7 4
8
C - D
C - A C - E
C - B
D E4
5
E - B
E - Cnil
anz = 3
2
3
D - E
D - C
nil
nicht in
die Liste
A
6
7
A - B
A - C
B58
6
B - C B - E
B - A
C3
7 4
8
C - D
C - A C - E
C - B
D E4
5
E - B
E - Cnil
anz = 3
3
D - Cnil
3.1 minimal spannende Bäume
3. Anwendungsbeispiel
![Page 56: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/56.jpg)
17.01.2003 Christian John / Tobias Berger Nr.56
Binomiale Heaps
A
6
7
A - B
A - C
B58
6
B - C B - E
B - A
3
7 4
8
C - D
C - A C - E
C - B
D E
4
5
E - B
E - C
nilanz = 2
nilC
nil
A
6
7
A - B
A - C
B58
6
B - C B - E
B - A
74
8
C - AC - E
C - B
D
E
4
5
E - B
E - C
nil
anz = 2
nil
Cnil
nicht in
die Liste
nicht in
die Liste
3.1 minimal spannende Bäume
3. Anwendungsbeispiel
![Page 57: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/57.jpg)
17.01.2003 Christian John / Tobias Berger Nr.57
Binomiale Heaps
A6
7
A - B
A - C
7
4
8
C - A
C - E
C - Banz = 2
5
E - B
D Enilnil
Cnil
B58
6
B - C B - E
B - A
A6
7
A - B
A - C
7
8
C - A
C - Banz =2
5
E - B
D Enilnil
Cnil
B58
6
B - C B - E
B - A
nicht in
die Liste
3.1 minimal spannende Bäume
3. Anwendungsbeispiel
![Page 58: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/58.jpg)
17.01.2003 Christian John / Tobias Berger Nr.58
Binomiale Heaps
A6
7
A - B
A - C
7
8
C - A
C - Banz =1
D Enilnil
Cnil58
6
B - C B - E
B - A
Bnil
2
1
3
5
A B
C
D
E
minimal spannender Baum
3.1 minimal spannende Bäume
3. Anwendungsbeispiel
![Page 59: Binomiale Heaps - math.uni-wuppertal.deschaefer/Sammlung/Binomialeheaps.pdf · Binomiale Heaps 2. Binomialer Heap = Eine Baumstruktur die sich aus Binomialen Bäumen zusammensetzt;](https://reader030.vdocuments.net/reader030/viewer/2022040315/5e18dad189768c5d66648fec/html5/thumbnails/59.jpg)
17.01.2003 Christian John / Tobias Berger Nr.59
Binomiale Heaps
Quellen:
http://www.olli.informatik.uni-oldenburg.de/BHeapA/index.html
http://www.informatik.uni-ulm.de/dbis/f&l/lehre/SS99/ProseminarSS99/BinomialHeaps.pdf
http://www.uni-paderborn.de/cs/heiss/lehre/ws97/
ausarbeitungen/marquardt.ps.gz
http://www.informatik.uni-bonn.de/~meinard/papers/
Misc/merzenich98.ps