Lecture 10 Flashcards
(17 cards)
Warum kann QuickSort quadratische Laufzeit haben?
Wenn das Pivot in jeder Rekursion immer das kleinste / größte Element ist ⇒ extrem unbalancierte Teilprobleme.
Drei in der Vorlesung genannte Strategien, um diesen Worst Case zu vermeiden?
1) Zufälliges Pivot ⇒ O(n log n) w.h.p.; (2) Median als Pivot (Selektions-Algo); (3) Wechsel auf anderes O(n log n)-Sortierverfahren, falls Rekursionstiefe > log n.
Wie viele Vergleiche macht QuickSort mit zufälligem Pivot erwartet?
C̄(n) ≤ 2 n ln n.
Kernidee des Beweises für diese Schranke bei qs?
Jedes Elementpaar wird höchstens ein einziges Mal verglichen, nämlich wenn eines der beiden als Pivot gewählt wird.
Definition der Zufallsvariable Xᵢⱼ im Beweis?
Xᵢⱼ = 1, falls die sortierten Elemente e′ᵢ und e′ⱼ direkt verglichen werden, sonst 0.
Wahrscheinlichkeit Pr[Xᵢⱼ = 1]?
2 / (j − i + 1).
Kurze Beschreibung des MergeSort-Prinzips?
Rekursives Halbieren der Sequenz, sortiere beide Hälften, verschmelze in O(n) zum Ergebnis.
Pseudocode-Kern: Welche drei Zeiger nutzt das Merge?
j (linker Block), k (rechter Block), i (Position im Buffer b[ ])
Allgemeines Schema eines Divide-&-Conquer-Algor. (Parameter d, b)?
Teile in d Probleme Größe n/b, löse rekursiv, füge in O(c n) Kosten zusammen.
Master-Theorem (vereinfachte Version): drei Fälle?
d < b → Θ(n); d = b → Θ(n log n); d > b → Θ(n^{log_b d}).
Intuition hinter Fall d < b?
Kosten sinken je Rekursionslevel ⇒ erste Ebene dominiert ⇒ Θ(n).
Intuition hinter Fall d = b?
Jede Ebene kostet gleich viel ⇒ log_b n Ebenen ⇒ Θ(n log n).
Intuition hinter Fall d > b?
Kosten steigen je Ebene ⇒ letzte Ebene dominiert ⇒ Θ(n^{log_b d}).
Rolle der geometrischen Reihe bei der Herleitung?
Summiert Ebene-für-Ebene-Kosten cn (d/b)^i; Vergleich zu 1/(1 − d/b) zeigt Konvergenz oder Divergenz.
Wie viele Teilprobleme und welche Größe in Ebene i?
d^i Probleme, Größe n/b^i.
Praktische Konsequenz der Lower-Bound-Analyse?
Will man < O(n log n) erreichen, muss man nicht vergleichsbasiert sortieren (z.B. Counting-/Radix-Sort).
Warum erhält QuickSort trotz gleicher O(n log n) in der Praxis oft den Vorrang gegenüber MergeSort?
In-place-Partition (kein O(n) Extra-Speicher) und bessere Cache-/Konstanten.