Beispiel:
Lineare Suche im Array
i = 0; while (i < n) && (a[i] != x) { i++; }
Laufzeit: | best case | Schritt | ||
worst case | Schritte | |||
average case | Schritte |
Annahme für den average case:
Es liegt Permutation der Zahlen von bis vor.
Dann ist die mittlere Anzahl
Beispiel:
Suche in einem Array, bestehend aus Nullen und Einsen.
Laufzeit: | best case | Schritt | ||
worst case | Schritte | |||
average case |
Obacht:
Alle Laufzeitangaben beziehen sich jeweils auf einen konkreten Algorithmus (für ein Problem ) = obere Schranke für Problem .
Eine Aussage darüber, wie viele Schritte jeder Algorithmus für ein Problem mindestens durchlaufen muss, nennt man untere Schranke für Problem .
Beispiel: naives Pattern-Matching
char[] s = new char[N]; // Zeichenkette char[] p = new char[M]; // Pattern
Frage: Taucht Pattern in Zeichenkette auf?
for (i = 0; i < N - M + 1; i++) { // Index in Zeichenkette for (j = 0; (j < M) && (p[j] == s[i+j]); j++); // Index im Pattern if (j == M) break; // Erfolg }
Laufzeit best case: | ||||
Laufzeit worst case: | Vergleiche für | = | ||
= |
Sei die Summe der Buchstaben in Pattern und String . Sei und für .
Gesucht wird , welches maximiert.
Bilde 1. Ableitung nach und setze auf 0: