3. Laufzeitabschätzung mit und
3.1 Numerische Experimente und Grenzwerte
Erinnern Sie sich an die Anzahl von Array-Zugriffen, die die Binärsuche im Worst-Case
macht? Das war
Übungsaufgabe 3.1.1
Schreiben Sie in Python oder Elm eine Funktion
rtbs
(Abkürzung für runtime binary search), die
bl
(für binary logarithm), der rtbs(n) / bl(n)
(bzw. rtbs n / bl n
, wenn Sie Elm schreiben)
für große Werte von
Meine Lösung
10 | 4.000 | 3.322 | 1.204 |
100 | 7.000 | 6.644 | 1.054 |
1000 | 10.000 | 9.966 | 1.003 |
10000 | 14.000 | 13.288 | 1.054 |
100000 | 17.000 | 16.610 | 1.024 |
1000000 | 20.000 | 19.932 | 1.003 |
Übungsaufgabe 3.1.2 Rechnen Sie nun auf dem Papier: es ist wohl einfach zu zeigen, dass
gilt. Können Sie auch etwas in der Gegenrichtung zeigen, dass also
Laufzeiten von Sortieralgorithmen
Vergleichen Sie nun die Laufzeiten der "guten" Sortieralgorithmen Quicksort, Mergesort und Heapsort mit den entsprechenden "einfacheren" Ausdrücken.Übungsaufgabe 3.1.3 Die Anzahl der Vergleichsoperationen, die die guten Sortieralgorithmen aus dem letzten Kapitel im Worst-Case machen, sind
für Quicksort für Heapsort für Mergesort
All diese Ausdrücke sind schwer zu merken. Finden Sie vereinfachte Ausdrücke, die "ungefähr" gleich sind (wie oben bei der binären Suche) und verifizieren Sie experimentell, dass die Ausdrücke tatsächlich ungefähr gleich sind.
Tip: Verwenden Sie die Tatsache, dass
Meine Ergebnisse für Quicksort:
10 | 24.437 | 33.219 | 0.736 |
100 | 647.850 | 664.386 | 0.975 |
1000 | 10985.913 | 9965.784 | 1.102 |
10000 | 155771.696 | 132877.124 | 1.172 |
100000 | 2018053.406 | 1660964.047 | 1.215 |
1000000 | 24785482.231 | 19931568.569 | 1.244 |
10000000 | 293906260.708 | 232534966.642 | 1.264 |
Asymptotik
Wenn Sie meine Werte für Quicksort betrachten, so kann man erkennen, dass der Wert langsam steigt. Ob er sich allerdings stabilisiert, und wenn ja, wo, lässt sich aus den Daten nicht ablesen. Um das zu klären, verwenden wir das Konzept des Grenzwertes.
Der Ausdruck
zu zeigen. Insgesamt gilt also:
Um das noch weiter zu vereinfachen, verwenden wir die Ungleichung
da
Wenn wir nun (
Übungsaufgabe 3.1.4 Führen Sie eine ähnliche Rechnung für Mergesort und Heapsort durch. Zeigen Sie also, dass