Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Ähnliche Dokumente
Untere Schranke für allgemeine Sortierverfahren

Kapitel 2: Sortier- und Selektionsverfahren Gliederung

Kap. 3: Sortieren (3)

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Algorithmen und Datenstrukturen SS09. Foliensatz 15. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik

Heapsort. Dr. Michael Brinkmeier (TU Ilmenau) Algorithmen und Datenstrukturen / 50

Datenstrukturen & Algorithmen

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

Kapitel 8 Fortgeschrittene Sortieralgorithmen

A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.2 Quicksort. A7.

8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)

Technische Universität München

Algorithmen und Datenstrukturen

Kap. 3ff: Untere Laufzeitschranke und Lineare Verfahren

Kapitel 3: Sortierverfahren Gliederung

Motivation Überblick

Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Satz 172 Jedes vergleichsbasierte Sortierverfahren benötigt im worst-case mindestens n ld n + O(n) Vergleiche und hat damit Laufzeit Ω(n log n).

2 Sortieren durch Vergleichen Eingabefolge a 1, a 2,..., a n 2, 1, 3 Sortieralg. Für festes n ist ein vergleichsbasierter Sortieralg. charakterisiert

Heapsort. Erstellung eines Heaps

Heapsort. 1. Erstelle aus dem gegebenen Array einen Heap (DownHeap) 2. Tausche erstes und letztes Element des Arrays

Untere Schranke für allgemeine Sortierverfahren

4. Sortieren 4.1 Vorbemerkungen

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.

Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Heapsort

Informatik II, SS 2018

Praktikum Algorithmische Anwendungen WS 2006/07 Sortieren in linearer Laufzeit

Heapsort. Ziel: Sortieren Feld A[1..n]von nschlüsseln in O(n log n)worst case Zeit(so wie Mergesort), aber ohne Zusatzspeicher(so wie Quicksort).

Wiederholung. Divide & Conquer Strategie

Übung Algorithmen I

Übung Algorithmen I

Wiederholung. Beschreibung von Algorithmen durch Pseudocode. Laufzeitverhalten beschreiben durch O-Notation.

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

Übung Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (25 Sortieren vorsortierter Daten)

7. Sortieren Lernziele. 7. Sortieren

Grundlagen: Algorithmen und Datenstrukturen

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren

Kap. 3: Sortieren. Überblick. Unser Sortierproblem. Motivation. Laufzeitmessung. Warum soll ich hier bleiben? Sortierverfahren sind WICHTIG!!!

Die mittlere Höhe eines Binärbaumes. h(t) = 1 e(t) mit E(t) = Menge der Blätter von t, h(b, t) = Höhe des Blattes b in t

Kap. 3: Sortieren. 4. VO DAP2 SS April 2009

Algorithmen und Datenstrukturen 1 VL Übungstest WS November 2008

Sortieren II / HeapSort Heaps

Datenstrukturen und Algorithmen Beispiellösung zu Heimübungsblatt 7. Abbildung 1: Das Array A als Baum (vgl. Foliensatz 16, Folie 3)

Adnan Kadric Kevin Kandler Seminararbeit Sommersemester 2017

6 Quicksort. die mittlere Laufzeit Θ(n log n) beträgt und. die in der asymptotischen Notation verborgenen Konstanten sehr klein sind.

15. Elementare Graphalgorithmen

10. Sortieren III. Untere Schranken für das vergleichsbasierte Sortieren, Radix- und Bucketsort

Komplexität von Algorithmen OOPM, Ralf Lämmel

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle

Naiver Algorithmus für Hamiltonkreis

Formaler. Gegeben: Elementfolge s = e 1,...,e n. s ist Permutation von s e 1 e n für eine lineare Ordnung ` '

Klausur. 18. Juli 2008, 10:15-12:15 Uhr. Name:... Matrikelnummer:... Anzahl beschriebener Blätter (ohne Aufgabenblatt):... D(p) : Y = p x X + p y

Mi, 21. Mai, ab 12:30 Uhr, in E23 (OH14) Dann ab 14:30 Uhr: Motivation: Gegeben: hier: später: Aufgabe:

Quicksort ist ein Divide-and-Conquer-Verfahren.

Asymptotik und Laufzeitanalyse

Informatik II, SS 2018

Algorithmen & Komplexität

Übung Algorithmen und Datenstrukturen

7 Sortieren in linearer Zeit

Sortieren & Co. KIT Institut für Theoretische Informatik

Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/07

Heapsort, Quicksort, Mergesort. 8. Sortieren II

Algebraische Entscheidungsbäume

3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen

Randomisierte Algorithmen 2. Erste Beispiele

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array

Informatik II, SS 2016

3.2. Divide-and-Conquer-Methoden

Algorithmen und Datenstrukturen. Kapitel 3: Sortierverfahren. Skript zur Vorlesung. Algorithmen und Datenstrukturen

Datenstrukturen & Algorithmen

Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array

Algorithmen und Datenstrukturen

14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

Abschnitt 19: Sortierverfahren

Kapitel 6 Elementare Sortieralgorithmen

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

Heapsort, Quicksort, Mergesort. 8. Sortieren II

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015

Algorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier

Sortieren Anordnen einer gegebenen Menge von Objekten in einer bestimmten Ordnung.

14. Rot-Schwarz-Bäume

Übung Algorithmen I

Algorithmen und Datenstrukturen 8. Vorlesung

Übersicht. Datenstrukturen und Algorithmen. Divide-and-Conquer. Übersicht. Vorlesung 9: Quicksort (K7)

Algorithmen und Datenstrukturen

Informatik II, SS 2016

Präsenzübung Datenstrukturen und Algorithmen SS 2014

Algorithmen und Datenstrukturen

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

Copyright, Page 1 of 7 Heapsort

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2

Klausur Algorithmen und Datenstrukturen

Algorithmen und Programmieren II

1. Einführung. Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen?

Transkript:

8. Untere Schranken für Sortieren Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). Werden nun gemeinsame Eigenschaften dieser Algorithmen untersuchen. Fassen gemeinsame Eigenschaften in Modell des Vergleichssortierers zusammen. Zeigen dann, dass jeder Vergleichssortierer Laufzeit Ω(nlog(n)) besitzt. SS 2016 DuA - Kapitel 8 1

Laufzeit von Sortieralgorithmen Laufzeit Algorithmus Insertion- worst-case average-case 2 2 Θ ( n ) Θ ( n ) Sort Merge- Sort Quick- 2 ( n ) sort Heapsort Θ ( n log( n) ) Θ ( n log( n) ) Θ Θ ( n log( n) ) ( n log( n) ) Θ - SS 2016 DuA - Kapitel 8 2

Vergleichssortierer Definition 8.1: Ein Vergleichssortierer ist ein Algorithmus, der zu jeder beliebigen Eingabefolge (,,,a n ) von Zahlen eine Permutation π berechnet, so dass aπ ( 1 ) aπ ( 2) aπ ( n ). Dabei benutzt ein Vergleichssortierer außer den durch den Pseudocode definierten Kontrolloperationen nur die Vergleichsoperationen =,,,, <, >. Bemerkungen: 1. Wir nehmen an, dass Eingabezahlen immer paarweise verschieden sind. Benötigen daher = nicht. 2. Können uns auf den Vergleich einschränken. Andere Vergleichen sind hierzu äquivalent. SS 2016 DuA - Kapitel 8 3

Entscheidungsbäume Definition 8.2: Ein Entscheidungsbaum über n Zahlen ist ein binärer Baum, bei dem 1. Jeder innere Knoten mit i : j, 1 i, j n gelabelt ist. π auf 1,,n gelabelt ist. 2. Jedes Blatt mit einer Permutation { } SS 2016 DuA - Kapitel 8 4

Entscheidungsbäume und Sortieren Mit Entscheidungsbäumen können Vergleichssortierer modelliert werden. Hierzu 1. wird bei Eingabe ( a, ) 1,a n ein Pfad von der Wurzel des Baums zu einem Blatt des Baums durchlaufen. 2. wird an einem inneren Knoten gelabelt mit i : j die Kante zum linken Kind genommen, falls ai a j, sonst wird die Kante zum rechten Kind genommen. 3. wird die Permutation π des Blatts am Ende des Pfades ausgegeben. Zu einem Vergleichssortierer gibt es für jede Eingabegröße n einen Entscheidungsbaum. SS 2016 DuA - Kapitel 8 5

Entscheidungsbaum für Insertion-Sort InsertionSort(Array A) 1. for j 2 to length(a) do 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key SS 2016 DuA - Kapitel 8 6

Entscheidungsbaum für Insertion-Sort 1:2 > 2:3 1:3 > > (1,2,3) 1:3 > (2,1,3) 2:3 > (1,3,2) (3,1,2) (2,3,1) (3,2,1) Eingabe : a = 6,a2 = 8, a3 1 = 5 SS 2016 DuA - Kapitel 8 7

Entscheidungsbaum für Insertion-Sort i j a 3 key = : InsertionSort(Array A) for j 2 to length(a) do key A[j] i j 1 while i > 0 and A[i] > key do A[i+1] A[i] i i 1 A[i+1] key SS 2016 DuA - Kapitel 8 8

Entscheidungsbaum für Insertion-Sort i j a 3 key = a 3 : InsertionSort(Array A) for j 2 to length(a) do key A[j] i j 1 while i > 0 and A[i] > key do A[i+1] A[i] i i 1 A[i+1] key SS 2016 DuA - Kapitel 8 9

Entscheidungsbaum für Insertion-Sort i a 3 key = a 3 j : InsertionSort(Array A) for j 2 to length(a) do key A[j] i j 1 while i > 0 and A[i] > key do A[i+1] A[i] i i 1 A[i+1] key,, a 3 SS 2016 DuA - Kapitel 8 10

Entscheidungsbaum für Insertion-Sort i j a 3 key = a 3 : InsertionSort(Array A) for j 2 to length(a) do key A[j] i j 1 while i > 0 and A[i] > key do A[i+1] A[i] i i 1 A[i+1] key,, a 3 SS 2016 DuA - Kapitel 8 11

Entscheidungsbaum für Insertion-Sort i j a 3 key = a 3 : InsertionSort(Array A) for j 2 to length(a) do key A[j] i j 1 while i > 0 and A[i] > key do A[i+1] A[i] i i 1 A[i+1] key >,, a 3 SS 2016 DuA - Kapitel 8 12

Entscheidungsbaum für Insertion-Sort i a 3 key = a 3 : > > j InsertionSort(Array A) for j 2 to length(a) do key A[j] i j 1 while i > 0 and A[i] > key do A[i+1] A[i] i i 1 A[i+1] key >,, a 3,, a 3 > >, a 3, a 3,,, a 3, a 3,, SS 2016 DuA - Kapitel 8 13

Untere Schranke für Vergleichssortierer Lemma 8.3: Für Eingaben der Größe n hat ein Entscheidungsbaum für einen Vergleichssortierer mindestens n! Blätter. Beweis: Wir zeigen, jede Permutation muss in einem der Blätter vorkommen. Annahme: eine bestimmte Permutation (π(1),, π(n)) kommt nicht vor. Wir betrachten die Eingabe (,,a n ) mit a π (1) < < a π (n). Sei π π eine beliebige Permutation. Dann gibt es ein j, so dass π (j) π(j) (sei o.b.d.a. a π (j) > a π (j)). In der Ausgabe (nach π ) wäre a π (j) nicht an der richtigen Position; somit wäre die Folge nicht sortiert. SS 2016 DuA - Kapitel 8 14

Untere Schranke für Vergleichssortierer ( ). Lemma 8.4: log( n! ) = Θ nlog( n) Beweis: n! = 1 2 n > ( n/2+1) n > (n/2) n/2 n! = 1 2 n < n n (n/2) log(n/2) = log((n/2) n/2 ) < log(n!) < log(n n ) = n log(n) (n/2) log(n/2) = (n/2) (log(n)-1) > (n/4) log(n) für alle n>4 SS 2016 DuA - Kapitel 8 15

Untere Schranke für Vergleichssortierer Satz 8.5: Die von einem Vergleichssortierer bei Eingabegröße n benötigte Anzahl von Vergleichen ist Ω ( nlog( n) ). Beweis: Ein binärer Baum mit N Blättern hat Höhe mindestens log(n). Annahme: Es gibt einen Baum der Höhe log(n)-1 (Anzahl der Ebenen ist log(n)). Ebene i hat höchstens 2 i Elemente Der Baum hat höchstens 2 log(n)-1 < N Blätter. Korollar 8.6: Die von Merge-Sort und Heapsort benötigte Θ nlog n ist asymptotisch optimal. Laufzeit von ( ( )) SS 2016 DuA - Kapitel 8 16