1.3 Erinnerung: Mergesort

Ähnliche Dokumente
Ideen der Informatik Suchen und Sortieren [Ordnung muss sein ] Kurt Mehlhorn Adrian Neumann viele Folien von Kostas Panagiotou

Sortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2

Randomisierte Algorithmen 2. Erste Beispiele

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

Abschnitt: Algorithmendesign und Laufzeitanalyse

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

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

Programmieren I. Kapitel 7. Sortieren und Suchen

Algorithmen und Datenstrukturen

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

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

JAVA - Suchen - Sortieren

Datenstrukturen & Algorithmen

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:

Datenstrukturen und Algorithmen

Algorithmen und Datenstrukturen Wintersemester 2004/ November T(n) = T(n a) + T(a) + n

MATHEMATISCHE ANALYSE VON ALGORITHMEN

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit

Sortierverfahren für Felder (Listen)

Algorithmentheorie Randomisierung. Robert Elsässer

5.4 Das Rucksackproblem

16. All Pairs Shortest Path (ASPS)

Kapitel 6 Elementare Sortieralgorithmen

Grundlagen der Programmierung 2. Sortierverfahren

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

T (n) = max. g(x)=n t(n) S(n) = max. g(x)=n s(n)

WS 2009/10. Diskrete Strukturen

Suchen und Sortieren (Die klassischen Algorithmen)

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) :

Achtung: Groß O definiert keine totale Ordnungsrelation auf der Menge aller Funktionen! Beweis: Es gibt positive Funktionen f und g so, dass

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

Abschnitt 18: Effizientes Suchen in Mengen

Informatik I 1. Kapitel. Einführung in Algorithmen und Datenstrukturen. Einführung in Algorithmen. Einführung in Algorithmen.

Algorithmen und Datenstrukturen

Datenstrukturen & Algorithmen

Folge 13 - Quicksort

Algorithmen und Datenstrukturen 1

Klausur Algorithmen und Datenstrukturen

Vom Leichtesten zum Schwersten Sortieralgorithmen

Was bisher geschah. 1. Zerlegung in monotone Polygone 2. Triangulierung der monotonen Teilpolygone

Asymptotische Laufzeitanalyse: Beispiel

Algorithmen und Datenstrukturen 1-1. Seminar -

2 i. i=0. und beweisen Sie mittels eines geeigneten Verfahrens die Korrektheit der geschlossenen Form.

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Randomisierte Algorithmen

Datenstrukturen und Algorithmen

SS11 Effiziente Algorithmen 5. Kapitel: Dynamische Programmierung

Programmiertechnik II

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J

Grundlagen der Programmierung

Übung zur Vorlesung Algorithmische Geometrie

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

Geometrische Algorithmen

Informatik I 4. Kapitel Suchen in sequentiellen Listen

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 3, Donnerstag 6.

Kostenmodell. Daniel Graf, Tobias Pröger. 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016)

Bayes sches Lernen: Übersicht

Datenstrukturen. Sommersemester Kapitel 1: Motivation / Grundlagen. Steffen Lange

Sortierverfahren. Sortierverfahren für eindimensionale Arrays

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Rekursion

Algorithmen und Datenstrukturen 1

Übersicht Datenstrukturen und Algorithmen. Literatur. Algorithmus: Wikipedia Definition. Vorlesung 1: Einführung. Prof. Dr.

Algorithmen und Datenstrukturen (für ET/IT)

12 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang

Logik für Informatiker

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

Kostenmaße. F3 03/04 p.188/395

18 Höhere Ableitungen und Taylorformel

Teile und Herrsche Teil 2

MafI I: Logik & Diskrete Mathematik (F. Hoffmann)

Die Komplexitätsklassen P und NP

Binary Decision Diagrams (Einführung)

3. Kombinatorik und Wahrscheinlichkeit

7. Triangulation von einfachen Polygonen

Fragen für die Klausuren

Lineares Programmieren

Algorithmik - Kompaktkurs

Streaming Data: Das Modell

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

23. November Betweenness Centrality Closeness Centrality. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 108

Programmiertechnik II

4 Diskrete Wahrscheinlichkeitsverteilungen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Algorithmen II Vorlesung am

Kapitel 8. Rekursionsgleichungen. Landau-Symbole. Lösen von Rekursionsgleichungen Allgemeines Iterationsmethode Spezialfälle Erzeugende Funktionen

3: Zahlentheorie / Primzahlen

Transkript:

Mergesort 1.3 Erinnerung: Mergesort Um n Zahlen/Objekte a 1,..., a n zu sortieren, geht der Mergesort-Algorithmus so vor: Falls n n 0 : Sortiere mit einem naiven Algorithmus (z. B. Insertion Sort). Sonst: k := n/2. Sortiere a 1,..., a k (erste Hälfte) rekursiv, Ergebnis b 1,..., b k ; sortiere a k+1,..., a n (zweite Hälfte) rekursiv, Ergebnis b k+1,..., b n. Mische die Folgen b 1,..., b k und b k+1,..., b n zu einer sortierten Folge zusammen Reißverschlussverfahren Aufwand: n 1 Vergleiche. FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 42

Mergesort Analyse über Rekurrenzungleichungen : Wir zählen nur Vergleiche. C(n) = Anzahl der Vergleiche beim Sortieren von n Eingaben, schlechtester Fall. C(1) = 0, C(2) = 1, C(3) = 3. C(n) =C( n/2 )+C( n/2 )+n 1. Behauptung: C(n) =n log n (2 log n 1). n 1 2 3 4 5 6 7 8 9 10 11 12 13 14... C(n) 0 1 3 5 8 11 14 17 21 25 29 33 37 41... Beweis: Tafel. FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 43

Mergesort Satz 1.3.1 Für die Vergleichsanzahl im schlechtesten Fall bei Mergesort gilt: Beweis: Tafel. C(n) n log n. FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 44

Master-Theorem 1.4 Das Master-Theorem Wir betrachten Rekurrenzungleichungen der folgenden Form: B(n) { g, falls n =1 a B(n/b)+f (n), sonst. Dabei: a 1 eine ganze Zahl, b > 1 ist eine Konstante, f (n) ist eine monoton wachsende Funktion. Falls n/b keine ganze Zahl ist, sollte man sich an Stelle von B(n/b) z. B. B( n/b ) denken. FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 45

Master-Theorem Ergibt sich bei Divide-and-Conquer-Algorithmus mit: Trivialer Basisfall (Größe 1) hat höchstens Kosten g, aus Instanz der Größe n > 1 werden ( divide ) a Teilinstanzen der Größe n/b (passend gerundet) gebildet, es erfolgen a rekursive Aufrufe, und die a Lösungen werden kombiniert. Kosten für das Aufspalten und das Kombinieren: f (n). O.B.d.A.: B(n) monoton wachsend. Sonst definiere: ˆB(n) = max{b(i) 1 i n}. ˆB(n) ist monoton und erfüllt die Rekurrenzungleichung. FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 46

Master-Theorem Vereinfachende Annahmen (nicht wesentlich): n = b l. b > 1 ist ganzzahlig. Level 0: Wurzel, hat Eintrag f (n) und hat a Kinder auf Level 1. Knoten v auf Level i <l hat Eintrag f (n/b i ) und hat a Kinder auf Level i + 1. Knoten auf Level l sind Blätter, sie haben Eintrag g. FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 47

Master-Theorem f (n) f (n) a f (n/b) f (n/b) a f (n/b) a l f (n/b 2 ) f (n/b 2 ) f (n/b 2 ) f (n/b 2 ) a 2 f (n/b 2 ) g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g a l g FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 48

Master-Theorem Lemma 1.4.1 Wenn v ein Knoten auf Level i ist, dann gilt: B(n/b i ) Summe der Einträge im Unterbaum unter v. (Beweis durch Induktion über l i.) Also: B(n) Summe aller Einträge im Baum. FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 49

Master-Theorem Auf Level i gibt es a i Knoten mit Eintrag f (n/b i ). Summation liefert: B(n) 0 i<l a i f (n/b i )+a l g. Erster Term B 1 : Beitrag zu Gesamtkosten aus dem Inneren des Baums. Zweiter Term B 2 : Beitrag von den Blättern. (Algorithmisch: Die a l Basisfälle.) Leicht: B 2 (n) =a l g =(b log b a ) l g =(b l ) log b a g = n log b a g. FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 50

Master-Theorem Erster Term: B 1 (n) = 0 i<l ai f (n/b i ). 3Fälle, je nach Verhalten des Gesamtaufwandes a i f (n/b i ) auf Level i, für i =0,..., l 1. Intuitiv: 1. Fall: a i f (n/b i )wächst mit i an. 2. Fall: a i f (n/b i ) bleibt in etwa gleich über alle i. 3. Fall: a i f (n/b i ) schrumpft mit i. Genaueres folgt. FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 51

Master-Theorem 1. Fall: f (n) =O(n α ) mit b α < a. Die Beiträge aus den unteren Baumebenen (kleine Instanzen) dominieren, nicht wegen ihrer Größe, sondern wegen ihrer Anzahl. f (n) f (n/b) f (n/b) f (n/b) f (n/b 2 ) f (n/b 2 ) f (n/b 2 ) f (n/b 2 ) f (n/b 2 ) f (n/b 2 ) f (n/b 2 ) f (n/b 2 ) f (n/b 2 ) g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 52

Master-Theorem Wir benutzen immer die Summenformel für geometrische Reihen: ( ) 0 i<l q i = ql 1 q 1,für q 0, q 1. FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 53

Master-Theorem B 1 (n) = 0 i<l = O ( a i f (n/b i ) 0 i<l a i ( n b i ) α ) = O ( ( a ) i n α ) b α 0 i<l ( = O n α (a/b α ) l ) (a/b α ) 1 ( ) = O n α a l 1 (b l ) α = O(a l ). Also: B(n) B 1 (n)+b 2 (n) =O(a l )=O(n log b a ). FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 54

Master-Theorem 1. Fall: f (n) =O(n α ) mit b α < a. Typische Beispiele: Karatsuba-Algorithmus, Strassen-Algorithmus. FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 55

Master-Theorem 2. Fall: f (n) =O(n log b a ). f (n/b i )wächst mit n/b i, i = l 1,..., 0, höchstens mit einer Rate, die durch das Schrumpfen der Größe der Baumebene ausgeglichen wird. Der Gesamtaufwand ist beschränkt durch den Aufwand für die Ebene direkt über den Blättern, multipliziert mit der Anzahl der Levels. f (n) f (n/b) f (n/b) f (n/b 2 ) f (n/b 2 ) f (n/b 2 ) f (n/b 2 ) g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 56

Master-Theorem B 1 (n) = = O = O = O 0 i<l a i f (n/b i ) 0 i<l a i ( n ) logb a b i a i nlog b a a i 0 i<l ( l n log a) b. Also: B(n) B 1 (n)+b 2 (n) =O(l n log b a )+O(n log b a )=O((log n) n log b a ). Typische Beispiele: Mergesort, Binäre Suche. FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 57

Master-Theorem 3. Fall: f (n) = Ω(n α ), mit b α > a UND (Regularitätsbedingung: f wächst stets mit der entsprechenden Rate) Es gibt ein c < 1 mit: f (n) (a/c) f (n/b). Wenn man die Größe des Inputs von n/b auf n erhöht, wachsen die Kosten im Knoten von f (n/b) auf f (n), mindestens um den Faktor a/c > a. f (n) wächst sehr rasch mit n, so dass der Beitrag der oberen Baumebenen und insbesondere der Wurzel überwiegt. FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 58

Master-Theorem f (n) f (n/b) f (n/b) f (n/b 2 ) f (n/b 2 ) f (n/b 2 ) f (n/b 2 ) FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 59

Master-Theorem Aus der Regularitätsbedingung gewinnen wir: f (n/b) c a f (n) ( c ) 2 f (n/b 2 ) f (n) a. f (n/b i ) ( c a ) i f (n), also: FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 60

Master-Theorem B 1 (n) = a i f (n/b i ) 0 i<l ( c ) i a i f (n) a 0 i<l = 0 i<l = f (n) c i f (n) 0 i<l = O(f (n)), c i weil 0 i<l ci = 1 cl 1 c = O(1). FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 61

Master-Theorem Satz 1.4.2 (Das Master-Theorem) { g, falls n =1 Es gelte B(n) a B(n/b)+f (n), sonst, wobei b > 1 und a ganzzahlige Konstante sind. Dann gilt für n = b l : 1 Falls f (n) =O(n α ) mit α< log b a, dann ist B(n) =O(n log b a ). 2 Falls f (n) =O(n log b a ), dann ist B(n) =O(n log b a log n). 3 Falls f (n) = Ω(n α ) mit α> log b a und f (n) a c konstant, dann ist B(n) = O(f (n)). f (n/b), für c < 1 FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 62

Master-Theorem Erweiterungen: Dieselben Formeln gelten für: Beliebige n, nicht nur n = b l. Verallgemeinerte Relation B(n) a B(n )+f (n), n n/b + d. b > 1 nicht ganzzahlig. Analoge untere Schranken. Genaueres im Buch von Cormen, Leiserson, Rivest und Stein. FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 63

Quicksort 1.5 Quicksort (Hoare 1 ) Neue Analyse Input: Folge/Array (a 1,..., a n ). Falls n = 1, Ausgabe (a 1 ). Falls n = 2, sortiere mit einem Vergleich. Sonst: Wähle Element x {a 1,..., a n } als Pivotelement oder partitionierendes Element. (Z.B.: x = a 1 oder x = a i mit i zufällig.) Zerlege (a 1,..., a n ) in eine Teilfolge b 1,..., b p 1, alle x, in das Element x, und eine Teilfolge c p+1,..., c n, alle x. Sortiere diese beiden Folgen rekursiv, Ergebnis (d 1,..., d p 1 ) und (e p+1,..., e n ). Ausgabe: Folge/Array (d 1,..., d p 1, x, e p+1,..., e n ). FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 64

Quicksort 1 C. A. R. Hoare ( 1934), brit. Informatiker, erfand Quicksort & Korrektheitskalkül. I conclude that there are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult. (Dankesrede für den Turingpreis 1980) I think Quicksort is the only really interesting algorithm that I ve ever developed. FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 65

Quicksort Analyse: Wir nehmen an, alle Schlüssel sind verschieden. Wir wählen immer das erste Element als Pivotelement betrachten also deterministisches Quicksort. Weiter nehmen wir an, jede der n! Anordnungen sind gleich wahrscheinlich (Wahrscheinlichkeit 1/n!), und berechnen die erwartete Anzahl A(n) von Vergleichen. Falls n 1: kein Vergleich. Falls n = 2: 1 Vergleich. Sonst: FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 66

Quicksort Es seien b 1 < < b n die Eingabe-Elemente in sortierter Reihenfolge. Es ist klar, dass b i und b j maximal einmal miteinander verglichen werden. (Wenn b i und b j verglichen werden, ist eines der beiden Pivotelement und wird nie mehr mit etwas anderem verglichen.) FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 67

Quicksort C := Gesamtanzahl der Vergleiche. (Zufallsvariable, abhängig von der zufälligen Anordnung am Anfang.) Sei C = X ij, 1 i<j n wobei X ij = { 1, falls bi und b j verglichen werden 0, sonst. FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 68

Quicksort Daraus: E(C) = 1 i<j n E(X ij )= 1 i<j n Pr(X ij = 1). (Das folgt aus der Linearität des Erwartungswertes, normalerweise geschrieben als E(X + Y )=E(X )+E(Y ).) Was ist Pr(X ij = 1) = Pr(b i und b j werden verglichen)? Wir beobachten den Algorithmus. Klar: Im Zuge der Rekursion werden durch Aufspalten immer kleinere Teillisten gebildet. Solange kein Element von I ij = {b i, b i+1,..., b j } Pivotelement wird, landen alle Elemente von I ij immer in derselben Teilliste (alle größer als Pivot oder alle kleiner als Pivot). FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 69

Quicksort In dem Moment, in dem zum ersten Mal ein Element von I ij partitionierendes Element wird, fällt die Entscheidung: Wenn dies b i oder b j ist, werden b i und b j verglichen. Wenn dies ein Element von {b i+1,..., b j 1 } ist, nicht (jetzt nicht, aber auch nicht später, da sie in verschiedenen Teillisten landen). Weil alle Elemente in I ij die gleiche Wahrscheinlichkeit haben, zuerst als Pivotelement gewählt zu werden, gilt Pr(b i und b j werden verglichen) = 2 I ij = 2 j i +1. Also: E(C) = 1 i<j n 2 j i +1. FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 70

Quicksort 1 i<j n 2 j i +1 = 1 i n i<j n =2 2 2 j i +1 1 i n 2 k n i+1 1 i n 2 k n =2 n (H n 1) 2 n ln n 1 k = (2 ln 2) n log n < 1,3863n log n. 1 k FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 71

Quicksort Dabei ist H n = 1 + 1 2 + + 1 n [ln n + 1 2, ln n + 1] (n-te harmonische Zahl). Satz 1.5.1 Die durchschnittliche Anzahl von Vergleichen von Quicksort auf einer Eingabe aus n verschiedenen Zahlen, die zufällig angeordnet ist, ist höchstens 2 n (H n 1) < 1,3863n log n. Für die, die es genau wissen wollen: E(C) = 2(n + 1)H n 4n = (2 log 2 e)n log n Θ(n). FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 72

Quicksort Variation: Randomisiertes Quicksort. Das Pivotelement wird jeweils zufällig gewählt. In diesem Fall ist die gleiche Analyse anwendbar. Aber: Es gibt keine worst-case-inputs mehr. Satz 1.5.2 Wenn man das Pivot-Element stets zufällig wählt, ist auf einer beliebigen, festen Eingabe aus n verschiedenen Zahlen die erwartete Anzahl von Vergleichen, die Quicksort ausführt, höchstens 2 n (H n 1) < 1,3863n log n. (Siehe hierzu: Randomisierte Algorithmen.) FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 73

Selektionsproblem 1.6 Das Selektionsproblem Gegeben ist eine Folge (a 1,..., a n ) von n Objekten aus einer totalen Ordnung (D,<) (in Array oder als Liste), sowie eine Zahl k, 1 k n. O.B.d.A.: Alle Einträge verschieden. Aufgabe Finde das Element der Folge, das Rang k hat, d. h. ein Objekt x in der Liste mit {i a i x} = k. Spezialfall: Der Median einer Folge mit n Einträgen ist das Element mit Rang n/2. Median({2, 4, 7, 9}) = 4, Median({4, 7, 9}) = 7. Einfache Lösung: Sortiere, mit Ergebnis (b 1,..., b n ), nun wähle x = b k. Kosten: n log n Vergleiche, Zeit O(n log n). FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 74

Selektionsproblem Zunächst: Ein randomisierter Algorithmus für das Auswahlproblem. Quickselect (Hoare) Ansatz: Wie bei Quicksort. Gegeben: Folge (a 1,..., a n ), Zahl k, 1 k n. O.B.d.A.: Die a i sind verschieden. Falls n = 1, ist nichts zu tun. Falls n = 2, sortiere mit einem Vergleich, Ergebnis (b 1, b 2 ), gib Element b k zurück. FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 75

Selektionsproblem Falls n 3: Wähle ein Element x aus {a 1,..., a n } als partitionierendes Element zufällig. Zerlege (a 1,..., a n ) mit n 1 Vergleichen in eine Teilfolge b 1,..., b p 1, alle < x, in das Element x, und eine Teilfolge c p+1,..., c n, alle > x. 1. Fall: k = p. Das Ergebnis ist x. 2. Fall: k < p. Finde (rekursiv) in (b 1,..., b p 1 ) das Element vom Rang k. 3. Fall: k > p. Finde (rekursiv) in (c p+1,..., c n ) das Element vom Rang k p. FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 76

Selektionsproblem Korrektheit: Klar. Zu analysieren: (Erwartete) Rechenzeit. Wir analysieren die erwartete Anzahl von Vergleichen. Vorgehen: Wie bei Quicksort. Wieder ist die erwartete Anzahl von Vergleichen entscheidend. Eingabezahlen, sortiert: b 1 < < b n. C k = 1 i<j n X ij, wobei X ij = { 1, falls bi und b j verglichen werden 0, sonst. FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 77

Selektionsproblem Was ist E(X ij )=Pr(X ij = 1) = Pr(b i und b j werden verglichen)? 1. Fall: k i < j: Es kommt darauf an, ob b i oder b j vor allen anderen Einträgen in {b k,..., b j } Pivot werden. Pr(X ij = 1) = 2 j k+1. 2. Fall: i < k < j: Es kommt darauf an, ob b i oder b j vor allen anderen Einträgen in {b i,..., b j } Pivot werden. Pr(X ij = 1) = 2 j i+1. 3. Fall: i < j k: Es kommt darauf an, ob b i oder b j vor allen anderen Einträgen in {b i,..., b k } Pivot werden. Pr(X ij = 1) = 2 k i+1. FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 78

Selektionsproblem Also: E(C k )=2 ( k i<j n 1 j k+1 + 1 i<k<j n 1 j i+1 + 1 i<j k 1 k i+1 ). Erste und dritte Summe lassen sich leicht als n k bzw. k 1 abschätzen (Übung!). Zusammen: 2(n 1). In der Übung zeigen wir: Zusammen: E(C k ) 4n. 1 i<k<j n 1 j i+1 n. FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 79

Selektionsproblem Satz 1.6.1 Der Algorithmus Quickselect löst das Auswahlproblem und hat eine erwartete Vergleichsanzahl von 4n und eine erwartete Laufzeit von O(n). FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 80

Selektionsproblem Mitteilung: (a) Eine genauere Analyse ergibt für α = k/n konstant eine erwartete Vergleichsanzahl von 2(1 + H(α) ln 2 + o(1))n < (3.3863 + o(1)) n. Dabei ist H(α) = α log α (1 α) log(1 α) die binäre Entropie. Sie liegt zwischen 0 und 1; das Maximum 1 ist bei α = 1 2 nach dem Median entspricht., was der Suche (b) Die beste Schranke für die erwartete Vergleichsanzahl bei einem Algorithmus für das Auswahlproblem, nämlich 3 2n + o(n), erreicht ein anderer randomisierter Algorithmus (siehe Vorlesung Randomisierte Algorithmen ). FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 81