Invariate Build-Max

Werbung
Prof. Dr. Burkhard Monien
Paderborn, den 15. Mai 2006
Übungen zur Vorlesung
Datenstrukturen und Algorithmen
Rest der Lösung von Aufgabe 16
Blatt 5
Invariate Build-Max-Heap’
Vor Durchlauf der Schleife mit Index i, ist das Array A[1..i − 1] ein Max-Heap auf den ersten
i − 1 Eingabezahlen.
Initialisierung
Der erste Schleifendurchlauf erfolgt mit i = 2 und das Array A[1..1] ist ein Max-Heap auf
der ersten Eingabezahl.
Erhaltung
Gelte die Invariante vor Durchlauf mit Index i. Dann ist A[1..i − 1] ein Max-Heap auf den
ersten i − 1 Eingabezahlen. In Zeile 3 wird dann Max-Heap-Insert mit Parametern A, A[i]
aufgerufen. Dieser Aufruf erweitert den Heap korrekt um den Eintrag A[i]. Die Korrektheit
folgt aus der Korrektheit von Max-Heap-Insert.
Terminierung
Am Ende und vor Durchlauf der Schleife mit Index (length(A) + 1) ist A[1..lenght(A)] ein
Max-Heap auf allen Eingabezahlen.
Laufzeit
Es ist n = length(A). In Max-Heap-Insert wird die nächste Eingabezahl von unten in den
Heap geschoben. Jede Vertauschung benötigt dabei konstante Zeit. Da der Heap maximale
Höhe
log(heap − size(A)) ≤ log(n)
hat, beötigt Max-Heap-Insert O(log(n)) Zeit.
Max-Heap-Insert wird von Build-Max-Heap’ genau n − 1 mal aufgerufen.
⇒ Laufzeit is O(n log(n)).
Herunterladen