Kapitel 4: Sortier- und Selektionsverfahren Gliederung 1. Grundlagen 2. Analyse der Laufzeit von Algorithmen 3. Untere Schranken für algorithmische Probleme 4. Sortier- und Selektionsverfahren 5. Paradigmen des Algorithmenentwurfs 6. Ausgewählte Datenstrukturen 7. Algorithmische Geometrie 8. Umgang mit algorithmisch schwierigen Problemen • • • 4/2, Folie 1 © 2014 Prof. Steffen Lange - Sortieren durch Vergleichen Untere Schranken fürs Sortieren durch Vergleichen Selektionsverfahren HDa/FbI - Algorithmik Kapitel 4: Sortier- und Selektionsverfahren Sortieren durch Vergleichen – untere Schranken u Zielstellung • diskutieren, wie man beweisen kann, daß es kein Verfahren zum Sortieren durch Vergleichen geben kann, das sowohl im „worst case“ als im „average case“ eine Komplexität hat, die kleiner gleich Θ(n*log(n)) ist ... problematisch ist, daß wir gar nicht alle Verfahren zum Sortieren durch Vergleichen kennen (/* manche sind noch gar nicht entwickelt worden */) ... wir müssen daher besser verstehen, was allen Verfahren zum Sortieren durch Vergleichen gemeinsam ist 4/2, Folie 2 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 4: Sortier- und Selektionsverfahren Sortieren durch Vergleichen – untere Schranken u Grundidee • es sei A ein Verfahren zum Sortieren durch Vergleichen und n die Länge der zu sortierenden Folge • dann kann man A und n einen Entscheidungsbaum zuordnen (/* in diesem Baum wird Buch geführt über die Vergleiche, die A beim Sortieren einer Folge der Länge n durchführt */) ... um eine untere Schranke für das Sortieren durch Vergleichen abzuleiten, genügt es Entscheidungsbäume besser zu verstehen und deren Eigenschaften zu analysieren (/* es ist ausreichend, nur solche Entscheidungsbäume zu analysieren, die „potentiell“ einem Verfahren zum Sortieren durch Vergleichen zugeordnet werden können */) 4/2, Folie 3 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 4: Sortier- und Selektionsverfahren Sortieren durch Vergleichen – untere Schranken u Grundlegende Idee • es sei n die Länge der betrachteten Schlüsselfolge alle Entscheidungsbäume (/* mit n Eingabevariablen */) alle „relevanten“ Entscheidungsbäume (/* mit n Eingabevariablen */) alle Sortierverfahren (/* für das Sortieren durch Vergleichen */) 4/2, Folie 4 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 4: Sortier- und Selektionsverfahren Entscheidungsbäume u Beispiel - Entscheidungsbaum für InsertionSort (/* n = 3 */) 1:2 ≤ ≤ 1:3 2:3 > ≤ 4/2, Folie 5 2:3 <2,1,3> > <1,3,2> > ≤ 1:3 <1,2,3> > ≤ <3,1,2> <2,3,1> > <3,2,1> • jeder innere Knoten (/* i:j */) ist mit einem Vergleich von Elementen der gegeben Folge versehen (/* kurz für: a[i] ≤ a[j] */) • jedes (/* <i,j,k> */) Blatt ist mit einer Permutation der Elemente der gegebenen Folge versehen (/* kurz für: a[i],a[j],a[k] */) © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 4: Sortier- und Selektionsverfahren Entscheidungsbäume u Erzeugung des zugeordneten Entscheidungsbaums • es sei A ein Verfahren zum Sortieren durch Vergleichen und n die Länge der zu sortierenden Folge • die Wurzel ist mit dem ersten Vergleich versehen, den A durchführt • es sei K ein innerer Knoten, der mit dem Vergleich i:j versehen ist • 4/2, Folie 6 • der linke Sohn wird mit dem Vergleich versehen, der von A als nächstes durchgeführt wird, falls a[i] ≤ a[j] gilt • der rechte Sohn wird mit dem Vergleich versehen, der von A als nächstes durchgeführt wird, falls a[i] > a[j] gilt falls kein Vergleich mehr durchgeführt wird, so wird ein Blatt erzeugt (/* die Permutation, mit der das Blatt versehen wird, wird durch die auf dem Pfad von der Wurzel zu diesem Blatt durchgeführten Vergleiche festgelegt */) © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 4: Sortier- und Selektionsverfahren Entscheidungsbäume u Illustration 1:2 ≤ ≤ 1:3 2:3 > ≤ 4/2, Folie 7 2:3 <2,1,3> > <1,3,2> > ≤ 1:3 <1,2,3> > ≤ <3,1,2> <2,3,1> > <3,2,1> • da a[1] ≤ a[2] und a[2] ≤ a[3] gilt, steht hier die Permutation <1,2,3> • da a[1] > a[2], a[1] >a[3] und a[2] ≤ a[3] gilt, steht hier die Permutation <2,3,1> © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 4: Sortier- und Selektionsverfahren Entscheidungsbäume u Beobachtungen • es sei A ein Verfahren zum Sortieren durch Vergleichen und n die Länge der zu sortierenden Folge Dem Paar (A,n) ist auf eindeutige Weise ein Entscheidungsbaum B zugeordnet. Jedem Pfad von der Wurzel zu einem Blatt entspricht einer Berechnung des Verfahrens A bei Eingabe einer Folge der Länge n. (/* Die Permutation, mit der das Blatt versehen ist, beschreibt das Ergebnis der Berechnung, die in diesem Blatt endet. */). Wenn das Verfahren A in der Lage ist, jede Folge der Länge n zu sortieren, so muß B so viele Blätter enthalten, wie es Permutationen von Folgen der Länge n gibt (/* also n! viele Permutationen */). 4/2, Folie 8 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 4: Sortier- und Selektionsverfahren Entscheidungsbäume u Beobachtungen • es sei A ein Verfahren zum Sortieren durch Vergleichen und n die Länge der zu sortierenden Folge • es sei B der dem Paar (A,n) zugeordnete Entscheidungsbaum ... Beziehung zwischen B und der Anzahl der von A - bei Eingabe einer Folge der Länge n - durchgeführten Vergleiche 4/2, Folie 9 „worst case“: maximale Zahl von inneren Knoten auf einem Pfad von der Wurzel zu einem Blatt „average case“: durchschnittliche Zahl von inneren Knoten auf Pfaden von der Wurzel zu einem Blatt © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 4: Sortier- und Selektionsverfahren Sortieren durch Vergleichen – untere Schranke für den “worst case“ u Folgerung • um eine untere Schranke für die Komplexität von Verfahren zum Sortieren durch Vergleichen (/* im „worst case“ */) abzuleiten, genügt es eine untere Schranke für die maximale Pfadlänge aller Entscheidungsbäume mit mindestens n! vielen Blättern anzugeben ... zur Erinnerung • • 4/2, Folie 10 jeder Entscheidungsbaum ist ein Binärbaum die maximale Pfadlänge in einem Binärbaum entspricht der maximalen Anzahl von inneren Knoten auf einem Pfad von der Wurzel zu einem Blatt © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 4: Sortier- und Selektionsverfahren Sortieren durch Vergleichen – untere Schranke für den “worst case“ u Ergebnis und Begründung Jedes Verfahren zum Sortieren durch Vergleichen hat im „worst case“ eine Komplexität von Ω(n*log(n)), wobei n die Länge der zu sortierenden Folge bezeichnet. ... der zugehörige Entscheidungsbaum ist ein Binärbaum mit n! Blättern ... jeder Binärbaum mit einer maximalen Pfadlänge t hat höchstens 2t Blätter (/* Warum ist das so? */) 4/2, Folie 11 • zugehörige Entscheidungsbaum B muß eine maximale Pfadlänge t mit 2t ≥ n! haben (/* sonst hat er zu wenige Blätter */) • also muß t ≥ log(n!) gelten • wegen log(n!) ≈ n*log(n), muß also t ≥ n*log(n) gelten © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 4: Sortier- und Selektionsverfahren Sortieren durch Vergleichen – untere Schranke für den “average case“ u Folgerung • um eine untere Schranke für die Komplexität von Verfahren zum Sortieren durch Vergleichen (/* im „average case“ */) abzuleiten, genügt es eine untere Schranke für die durchschnittliche Pfadlänge aller Entscheidungsbäume mit mindestens n! vielen Blättern anzugeben u zugrunde liegende Beobachtung (/* wird später bewiesen */) • 4/2, Folie 12 ein Entscheidungsbaum mit N Blättern, welcher eine minimale durchschnittliche Pfadlänge hat, hat nur Pfade der Länge ⎡log(N)⎤ bzw. ⎡log(N)⎤ - 1 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 4: Sortier- und Selektionsverfahren Sortieren durch Vergleichen – untere Schranke für den “average case“ u zugrunde liegende Beobachtung (/* wird später bewiesen */) • ein Entscheidungsbaum mit N Blättern, welcher eine minimale durchschnittliche Pfadlänge hat, hat nur Pfade der Länge ⎡log(N)⎤ bzw. ⎡log(N)⎤ - 1 u ... eine unmittelbare Konsequenz wäre • es sei E ein Entscheidungsbaum mit N Blättern Wenn E eine minimale durchschnittliche Pfadlänge hat, so hat E eine durchschnittliche Pfadlänge größer gleich ⎡log(N)⎤ - 1. 4/2, Folie 13 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 4: Sortier- und Selektionsverfahren Sortieren durch Vergleichen – untere Schranke für den “average case“ u Ergebnis und Begründung Jedes Verfahren zum Sortieren durch Vergleichen hat im „average case“ eine Komplexität von Ω(n*log(n)), wobei n die Länge der zu sortierenden Folge bezeichnet. ... der zugehörige Entscheidungsbaum E hat n! viele Blätter ... es sei E* ein Entscheidungsbaum mit n! vielen Blättern und minimaler durchschnittlicher Pfadlänge ... da E* eine durchschnittlich Pfadlänge größer gleich ⎡log(n!)⎤ - 1 hat und E* minimale durchschnittlicher Pfadlänge hat, muß auch E eine durchschnittliche Pfadlänge größer gleich ⎡log(n!)⎤ - 1 haben ... wegen log(n!) ≈ n*log(n), muß E eine durchschnittliche Pfadlänge größer gleich ⎡n*log(n)⎤ - 1 haben 4/2, Folie 14 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 4: Sortier- und Selektionsverfahren Sortieren durch Vergleichen – untere Schranke für den “average case“ u Das fehlende Teil • es sei E ein Entscheidungsbaum mit N Blättern Wenn E eine minimale durchschnittliche Pfadlänge hat, so hat E nur Pfade der Länge ⎡log(N)⎤ bzw. ⎡log(N)⎤ - 1. ... indirekter Beweis ... Annahme E sei ein Entscheidungsbaum mit N Blättern, mit einer minimalen durchschnittlichen Pfadlänge, der einen Pfad einer Länge kleiner gleich ⎡log(N)⎤ - 2 hat ... es genügt zu zeigen, daß es dann einen Entscheidungsbaum E‘ mit N Blättern gibt, der eine kleinere durchschnittliche Pfadlänge als E hat (/* dabei benutzen wir, daß E wenigstens einen Pfad der Länge ⎡log(N)⎤ hat */) 4/2, Folie 15 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 4: Sortier- und Selektionsverfahren Sortieren durch Vergleichen – untere Schranke für den “average case“ u Begründung des fehlenden Teils E E‘ ≤ ⎡log(N)⎤ - 2 B ... ... B‘ B‘‘ B B‘ B‘‘ ≥ ⎡log(N)⎤ ... man kann leicht zeigen, daß der Entscheidungsbaum E‘ eine kleinere durchschnittliche Pfadlänge als E hat (/* Wie geht das ??? */) 4/2, Folie 16 © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 4: Sortier- und Selektionsverfahren Fazit mit Blick auf die betrachteten Sortierverfahren 4/2, Folie 17 Sortierverfahren average case worst case BubbleSort Θ(n2) Θ(n2) InsertionSort Θ(n2) Θ(n2) HeapSort Θ(n*log(n)) Θ(n*log(n)) unbekanntes Sortierverfahren Ω(n*log(n)) Ω(n*log(n)) © 2014 Prof. Steffen Lange - HDa/FbI - Algorithmik