Mitschriften aus dem Unterricht

Komplexitaet von suchen

  • gegeben ist ein feld mit n elementen
  • Benchmarking ist nicht aussagekräftig
    • Nicht die Algorithmen, sondern die Umgebung (Computer, architektur, betriebssystem, etc.) wird dabei betrachtet
  • Besser ist die Betrachtung in Einzelschritten des Algorithmus
    • Bestimmung in abstrakter Zeiteinheit
    • Unabhängig von environment

Beispiel anhand der Schritte der linearen suche

pos = 0
while pos < n and a[pos] != s
  pos = pos+1
return pos
  • zuweisung
  • n schleifendurchläufe á 4 einzelschritte
    • 2 tests
    • feldzugriff
    • addition
  • letzter test
  • rückgabe

2+n*4+3 = 5+4n schritte

Bester fall: n=0: 5 schritte

Aussagen über die Algorithmenlaufzeit

  • Man sucht relative Vergleichbarkeit über skaliebarkeit
  • Vernachlässigung von kleinen Funktionsteilen
    • 3n² + 2n -> 3n²
    • 2n * 5 -> 2n
  • Vernachlässigung von Konstanten
    • 4n -> n
    • 2n² -> n²
  • Reduktion auf den wesentlichen Term
  • Wesentlichste Namen:
    • n² quadratisch
    • n³ qubisch
    • n^4 quartisch
    • 2^n exponentiel
    • log n logarithmisch
    • f! fakultativ

O-Notation

  • f element aus O(g)
  • f wächst genauso schnell wie g
    • Es seien f: ℕ → ℝ+ und g: ℕ → ℝ+ Funktionen.
    • Dann gilt:
    • f = Θ(g) genau dann, wenn n0 ∈ ℕ und c1, c2, ∈ ℝ existieren,
    • sodass für n ≤ n0:
    • c1 * g(n) ≤ f(n) ≤ c2*g(n)
  • O-Notation ist ein linearer rechenkörper