![Page 1: Algorithmen I - Tutorium 1 - 5. Sitzung · Algorithmen I - Tutorium 1 - 5. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:46:54 PM](https://reader034.vdokument.com/reader034/viewer/2022050218/5f6423b1a6f9fd3f10079b93/html5/thumbnails/1.jpg)
Algorithmen ITutorium 1 - 5. Sitzung
Dennis Felsing
www.stud.uni-karlsruhe.de/~ubcqr/algo
2011-05-16
![Page 2: Algorithmen I - Tutorium 1 - 5. Sitzung · Algorithmen I - Tutorium 1 - 5. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:46:54 PM](https://reader034.vdokument.com/reader034/viewer/2022050218/5f6423b1a6f9fd3f10079b93/html5/thumbnails/2.jpg)
Heaps
Heaps
1 HeapsBinare HeapsErhalten der Heap-EigenschaftErzeugen eines HeapsHeapsortPrioritatswarteschlangenAufgaben
Dennis Felsing Algorithmen I 2/12
![Page 3: Algorithmen I - Tutorium 1 - 5. Sitzung · Algorithmen I - Tutorium 1 - 5. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:46:54 PM](https://reader034.vdokument.com/reader034/viewer/2022050218/5f6423b1a6f9fd3f10079b93/html5/thumbnails/3.jpg)
Heaps
Binare Heaps
Definition
Ein Binarer Heap ist ein Array, dass sich als Binarbaum darstellenlasst. Bei Min-Heaps gilt als Heap-EigenschaftA[Parent(i)] ≤ A[i ], bei Max-Heaps gilt A[Parent(i)] ≥ A[i ].
Wir arbeiten im folgenden mit Max-Heaps.
Wichtige Operationen
Max-Heapify: Stelle Max-Heap-Eigenschaft her (O(log n))
Build-Max-Heap: Erzeuge Max-Heap aus Array (O(n))
Heapsort: Sortiere ein Array (inplace, O(n log n))
Dennis Felsing Algorithmen I 3/12
![Page 4: Algorithmen I - Tutorium 1 - 5. Sitzung · Algorithmen I - Tutorium 1 - 5. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:46:54 PM](https://reader034.vdokument.com/reader034/viewer/2022050218/5f6423b1a6f9fd3f10079b93/html5/thumbnails/4.jpg)
Heaps
Binare Heaps
Aufgabe
Welcher Zusammenhang besteht zwischen sortierten Arrays undHeaps?
Losung
Aufsteigend sortiertes Array ⇒ Min-Heap
Absteigend sortiertes Array ⇒ Max-Heap
Umkehrung gilt nicht!
Dennis Felsing Algorithmen I 4/12
![Page 5: Algorithmen I - Tutorium 1 - 5. Sitzung · Algorithmen I - Tutorium 1 - 5. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:46:54 PM](https://reader034.vdokument.com/reader034/viewer/2022050218/5f6423b1a6f9fd3f10079b93/html5/thumbnails/5.jpg)
Heaps
Erhalten der Heap-Eigenschaft
Situation
Die Binarbaume mit Wurzel Left(i) und Right(i) sindMax-Heaps. A[i ] kann aber kleiner als seine Kinder sein.
Max-Heapify(A, i)
1 l = Left(i)2 r = Right(i)3 max = i4 if l ≤ A.heap-size und A[l ] > A[max ]5 max = l6 if r ≤ A.heap-size und A[r ] > A[max ]7 max = r8 if max 6= i9 vertausche A[i ] mit A[max ]
10 Max-Heapify(A,max)Dennis Felsing Algorithmen I 5/12
![Page 6: Algorithmen I - Tutorium 1 - 5. Sitzung · Algorithmen I - Tutorium 1 - 5. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:46:54 PM](https://reader034.vdokument.com/reader034/viewer/2022050218/5f6423b1a6f9fd3f10079b93/html5/thumbnails/6.jpg)
Heaps
Erzeugen eines Heaps
Build-Max-Heap(A)
1 A.heap-size = A.length2 for i = bA.length/2c downto 13 Max-Heapify(A, i)
Beispiel
Wende Build-Max-Heap auf das ArrayA = [4, 1, 3, 2, 16, 9, 10, 14, 8, 7] an.
Dennis Felsing Algorithmen I 6/12
![Page 7: Algorithmen I - Tutorium 1 - 5. Sitzung · Algorithmen I - Tutorium 1 - 5. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:46:54 PM](https://reader034.vdokument.com/reader034/viewer/2022050218/5f6423b1a6f9fd3f10079b93/html5/thumbnails/7.jpg)
Heaps
Heapsort
Heapsort(A)
1 Build-Max-Heap(A)2 for i = A.length downto 23 vertausche A[1] mit A[i ]4 A.heap-size = A.heap-size − 15 Max-Heapify(A, 1)
Beispiel
Sortiere das Array A = [4, 1, 3, 2, 16, 9, 10, 14, 8, 7] mit Heapsort.
Dennis Felsing Algorithmen I 7/12
![Page 8: Algorithmen I - Tutorium 1 - 5. Sitzung · Algorithmen I - Tutorium 1 - 5. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:46:54 PM](https://reader034.vdokument.com/reader034/viewer/2022050218/5f6423b1a6f9fd3f10079b93/html5/thumbnails/8.jpg)
Heaps
Prioritatswarteschlangen
Prioritatswarteschlangen (engl. priority queues) lassen sich mitHeaps effizient implementieren. Dazu benotigt man die folgendenOperationen bei einer Max-Priority Queue:
Max-Heap-Insert(A, x): Fuge x in Heap A ein (O(log n))
Heap-Maximum(A): Gebe das Maximum von A zuruck(O(1))
Heap-Extract-Max(A): Entferne das Maximum von A(O(log n))
Heap-Increase-Key(A, x , k): Erhohe den Schlussel von xauf k (O(log n))
Aufgabe
Wie lassen sich Queues und Stacks durch eine Priority Queueimplementieren?
Dennis Felsing Algorithmen I 8/12
![Page 9: Algorithmen I - Tutorium 1 - 5. Sitzung · Algorithmen I - Tutorium 1 - 5. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:46:54 PM](https://reader034.vdokument.com/reader034/viewer/2022050218/5f6423b1a6f9fd3f10079b93/html5/thumbnails/9.jpg)
Heaps
Aufgaben
Aufgabe
Die Operation Heap-Delete(A, i) entfernt ein Element i vomHeap A und erhalt dabei die Heap-Eigenschaft. ImplementiereHeap-Delete in Pseudocode.
Dennis Felsing Algorithmen I 9/12
![Page 10: Algorithmen I - Tutorium 1 - 5. Sitzung · Algorithmen I - Tutorium 1 - 5. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:46:54 PM](https://reader034.vdokument.com/reader034/viewer/2022050218/5f6423b1a6f9fd3f10079b93/html5/thumbnails/10.jpg)
Heaps
Aufgabe d-nare Heaps
Definition
Ein d-narer Heap ist eine Verallgemeinerung des binaren Heapsmit d statt 2 Kindern.
Aufgaben
1 Wie lasst sich ein d-narer Heap in einem Array reprasentieren?
2 Was ist die Hohe eines d-naren Heaps mit n Elementen?
Dennis Felsing Algorithmen I 10/12
![Page 11: Algorithmen I - Tutorium 1 - 5. Sitzung · Algorithmen I - Tutorium 1 - 5. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:46:54 PM](https://reader034.vdokument.com/reader034/viewer/2022050218/5f6423b1a6f9fd3f10079b93/html5/thumbnails/11.jpg)
Heaps
Ubersicht
1 HeapsBinare HeapsErhalten der Heap-EigenschaftErzeugen eines HeapsHeapsortPrioritatswarteschlangenAufgaben
Dennis Felsing Algorithmen I 11/12
![Page 12: Algorithmen I - Tutorium 1 - 5. Sitzung · Algorithmen I - Tutorium 1 - 5. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:46:54 PM](https://reader034.vdokument.com/reader034/viewer/2022050218/5f6423b1a6f9fd3f10079b93/html5/thumbnails/12.jpg)
Heaps
Dennis Felsing Algorithmen I 12/12