23.04.2014 Aufrufe

Average-case Laufzeit von Quicksort

Average-case Laufzeit von Quicksort

Average-case Laufzeit von Quicksort

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Average</strong>-<strong>case</strong> <strong>Laufzeit</strong> <strong>von</strong> <strong>Quicksort</strong><br />

Definition<br />

(1) H(n) = ∑ n<br />

i=1 1 i<br />

heißt Harmonische Reihe.<br />

(2) lim n→∞ (H(n) − ln n) = 0, 5772156645... heißt Euler-Konstante<br />

(Leonhard Euler, 1707-1783).<br />

(3) V (n) = mittlere Zahl der Vergleiche bei <strong>Quicksort</strong> für Eingabefolgen<br />

der Länge n.<br />

(4) Der Rang eines Elements A[i] in der Eingabefolge A[1], . . . , A[n] gibt<br />

an, an welcher Stelle das Element in der sortierten Folge steht, d.h.<br />

Rang(i) = 1 + |{k; A[k] < A[i]}|.<br />

Satz<br />

V (n) = 2(n + 1)H(n) − 4n ≈ 1.386 · n log(n) − 2.846 · n.<br />

Burkhard Monien (University of Paderborn) <strong>Average</strong>-<strong>case</strong> <strong>Laufzeit</strong> <strong>von</strong> <strong>Quicksort</strong> DuA SS 2006 1 / 6


Beweis I<br />

Wenn Rang(n) = q ist, dann ist die Zahl der durchgeführten Vergleiche<br />

(n − 1) + V (q − 1) + V (n − q).<br />

Wenn über alle Permutationen gemittelt wird, nimmt Rang(n) jeden Wert<br />

aus {1, . . . , n} mit gleicher Häufigkeit an. Somit ergibt sich für die<br />

durchschnittliche Zahl <strong>von</strong> Vergleichen:<br />

V (1) = 0 und für n > 1 :<br />

∑<br />

σ∈Perm(n)<br />

V (n) =<br />

V (σ)<br />

n!<br />

= 1 (<br />

(n − 1)n! + n!<br />

n!<br />

n<br />

= n − 1 + 1 n<br />

n∑ ( ) )<br />

V (q − 1) + V (n − q)<br />

q=1<br />

n∑ ( )<br />

V (q − 1) + V (n − q)<br />

q=1<br />

Burkhard Monien (University of Paderborn) <strong>Average</strong>-<strong>case</strong> <strong>Laufzeit</strong> <strong>von</strong> <strong>Quicksort</strong> DuA SS 2006 2 / 6


Beweis II<br />

Jedes V (q) tritt in der Summe zweimal auf.<br />

V (n) = n − 1 + 1 n<br />

= n − 1 + 2 n<br />

Multiplikation mit n liefert:<br />

n∑ ( )<br />

V (q − 1) + V (n − q)<br />

q=1<br />

n∑<br />

V (q − 1)<br />

q=1<br />

n · V (n) = n(n − 1) + 2<br />

n∑<br />

V (q − 1) (1)<br />

q=1<br />

Wenn wir n − 1 für n substituieren, erhalten wir:<br />

∑n−1<br />

(n − 1)V (n − 1) = (n − 1)(n − 2) + 2 V (q − 1) (2)<br />

q=1<br />

Burkhard Monien (University of Paderborn) <strong>Average</strong>-<strong>case</strong> <strong>Laufzeit</strong> <strong>von</strong> <strong>Quicksort</strong> DuA SS 2006 3 / 6


Beweis III<br />

(1) - (2) ergibt:<br />

n∑<br />

nV (n) − (n − 1)V (n − 1) = n(n − 1) + 2 V (q − 1)<br />

q=1<br />

⎛<br />

⎞<br />

∑n−1<br />

− ⎝(n − 1)(n − 2) + 2 V (q − 1) ⎠<br />

q=1<br />

= n(n − 1) − (n − 1)(n − 2) + 2V (n − 1)<br />

Also:<br />

nV (n) − (n + 1)V (n − 1) = 2(n − 1)<br />

Division durch (n + 1) · n:<br />

V (n) V (n − 1) 2(n − 1)<br />

= +<br />

n + 1 n n(n + 1)<br />

Burkhard Monien (University of Paderborn) <strong>Average</strong>-<strong>case</strong> <strong>Laufzeit</strong> <strong>von</strong> <strong>Quicksort</strong> DuA SS 2006 4 / 6


Beweis IV<br />

Wir schreiben Z(n) für V (n)<br />

n+1<br />

und erhalten:<br />

V (n) V (n − 1) 2(n − 1)<br />

= +<br />

n + 1 n n(n + 1)<br />

2(n − 1)<br />

⇒ Z(n) = Z(n − 1) +<br />

n(n + 1)<br />

Es ist Z(1) = 0 und Beweis durch Induktion ergibt:<br />

Z(n) = 2<br />

n∑<br />

q=2<br />

q − 1<br />

q(q + 1)<br />

Burkhard Monien (University of Paderborn) <strong>Average</strong>-<strong>case</strong> <strong>Laufzeit</strong> <strong>von</strong> <strong>Quicksort</strong> DuA SS 2006 5 / 6


Beweis V<br />

1<br />

Wegen<br />

q(q+1) = 1+q−q<br />

q(q+1) = 1 q − 1<br />

q+1 folgt:<br />

n∑ q − 1<br />

n∑<br />

( q − 1<br />

Z(n) = 2<br />

q(q + 1) = 2 − q − 1 )<br />

q q + 1<br />

q=2<br />

q=2<br />

[( 1<br />

= 2<br />

2 − 1 ( 2<br />

+<br />

3)<br />

3 − 2 ( 3<br />

+<br />

4)<br />

4 − 3 + .. +<br />

5)<br />

[( 1<br />

= 2<br />

2 + 1 3 + 1 4 + 1 5 + · · · + 1 )<br />

− n − 1 ]<br />

n n + 1<br />

( n − 1<br />

Es folgt:<br />

Z(n) = 2H(n) − 2 − 2 n − 1<br />

n + 1 = 2H(n) − 4n<br />

n + 1<br />

Somit gilt für unsere durchschnittliche Zahl <strong>von</strong> Vergleichen:<br />

V (n) = (n + 1)Z(n) = 2(n + 1)H(n) − 4n<br />

≈ 2(n + 1) ln n − 2.846 · n.<br />

n<br />

− n − 1 )]<br />

n + 1<br />

Burkhard Monien (University of Paderborn) <strong>Average</strong>-<strong>case</strong> <strong>Laufzeit</strong> <strong>von</strong> <strong>Quicksort</strong> DuA SS 2006 6 / 6<br />

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!