Abgeleitet vom Namen des arabischen Mathematikers Muhammed Ibn Musa al-Kwarizmi (ca. 813-864).
Anleitung zur Lösung eines berechenbaren Problems.
Turing-Maschine, Turing 1936.
Lambda-Kalkül, Church 1936.
Für Zeichenreihen, Markow 1951.
Jede im intuitivem Sinne berechenbare Funktion ist auch Turing-berechenbar.
Diese These wird heute von der Mehrheit der Informatiker akzeptiert.
Allgemeinheit. Löst Klasse von Problemen; Spezifikation via Parameter.
Determiniertheit. Bei gleichen Eingabe- und Startwerten gleiche Endwerte (im Ggs. zu stochastischen A., die mit Zufallszahlen arbeiten).
Determinismus. Zu jedem Zeitpunkt der Bearbeitung gibt es nur eine Möglichkeit der Fortsetzung.
Terminierung. Halt nach endlicher Zeit (Betriebssystem- und Prozeßsteuerungen ausgenommen).
Wenn der Aufrufer die Vorbedingungen eines A. einhält, verspricht dieser dafür im Gegenzug, die Nachbedingungen zu garantieren. Anderenfalls ist das Ergebnis undefiniert. Die notwendigen Vorbedingungen sollten vom Programmierer des A. gut dokumentiert sein, damit der Aufrufer sich danach richten kann!
/* Vorbedingung: x >= 0 */
double sqrt(double x)
{
..
}
/* Nachbedingung: Ergebnis ist Wurzel von x */
Die Komplexität Θ beschreibt als Asymptote a(x) der Laufzeitfunktion t = f(n) die wesentliche, grobfunktionale Abhängigkeit der Laufzeit eines Algorithmus von der Zahl n der zu verarbeitenden Elemente. Komplexitäten lassen sich somit leichter vergleichen als exakte Laufzeitfunktionen, was eine Einordnung der Algorithmen unter Laufzeitaspekten erleichtert.
Θ(n) | Komplexitätsgrad |
---|---|
c | konstant |
log n | logarithmisch (organisch) |
n | linear |
n log n | Ordnung n log n |
n2 | quadratisch |
n3 | kubisch |
nc | polynomial |
cn | exponentiell |
nn | superexponentiell |
Algorithmus | Θ(n) |
---|---|
Fakultätsfunktion n! | nn+0.5 |
Fibbonaccifolge | 1.618034n |
Multiplikation quadr. Matrizen (3 Schleifen!) | n3 |
Bubble-Sort (2 Schleifen) | n2 |
Binärdarstellung | b; b = Anzahl Bits |
Normale Suche | n |
Quick-Sort | n log n |
Schnelles Potenzieren n. Lègendre | log n |
Binäre Suche | log n |
Interpolationssuche | log log n |
Stringsuche n. Knuth-Morris-Pratt | n+k; k = Länge Suchstring |
Stringsuche n. Boyer-Moore | Ähnlich wie KMP-Suche |
Hash-Suche | Schwer analysierbar, am schnellsten |
Sieb des Erathosthenes | n log log n |