Informatik

Landau-Notation: O, Omega und Theta einfach erklärt

Landau-Notation: O, Omega und Theta einfach erklärt
Landau-Notation: O, Omega und Theta einfach erklärt
Für Quiz, Lückentext, Lernkarten und Fortschritt ist JavaScript nötig. Alle Inhalte und Lösungen bleiben direkt lesbar.

Die Landau-Notation beschreibt, wie der Zeit- oder Speicherbedarf eines Algorithmus mit der Eingabegröße wächst. Sie liefert keine Stoppuhrzeit und nicht automatisch den Worst Case: Zuerst legst du fest, welchen Fall du untersuchst, und dann beschreibst du dessen Wachstum mit $O$, $\Omega$ oder $\Theta$.

Deine Lernziele

Hake ab, was du schon kannst — und komm am Ende hierher zurück!

Warum zählt Wachstum mehr als Sekunden?

Stell dir zwei Programme vor, die dieselbe Aufgabe lösen. Eine gemessene Laufzeit wie „12 Millisekunden“ gilt nur für eine bestimmte Eingabe, einen bestimmten Rechner und eine bestimmte Implementierung. Für einen allgemeineren Vergleich zählt man deshalb grundlegende Arbeitsschritte in Abhängigkeit von der Eingabegröße $n$.

Bei einer Liste ist $n$ meist die Zahl ihrer Elemente. Bei einer ganzen Zahl kann dagegen die Zahl ihrer Bits die passende Eingabegröße sein. Du musst also zuerst klären, was $n$ bedeutet.

Definition

Asymptotisches Wachstum

Asymptotisches Wachstum beschreibt das Verhalten einer Kostenfunktion für immer größere Eingaben, in der Informatik gewöhnlich für $n\to\infty$. Dabei interessiert vor allem, welcher Teil der Funktion langfristig am stärksten wächst.

Beispiel

Ein Programm A benötigt ungefähr $100n$ Schritte, ein Programm B ungefähr $n^2$ Schritte. Für $n=10$ sind das 1 000 Schritte bei A und 100 bei B: B ist zunächst günstiger. Für $n=1 000$ sind es 100 000 Schritte bei A und 1 000 000 bei B. Die kleinere Wachstumsordnung gewinnt also oft erst ab einer gewissen Eingabegröße.

Merke

Landau-Notation vergleicht Wachstum für große Eingaben. Konstanten, Hardware und kleine Eingaben können für die konkrete Laufzeit trotzdem wichtig sein.

Teste dich
Frage 1 von 1LeichtWas beschreibt eine Angabe wie $\Theta(n^2)$ unmittelbar?
Lösung: Die Wachstumsordnung einer zuvor festgelegten Kostenfunktion — Die Notation beschreibt asymptotisches Wachstum. Ob die Funktion einen Best-, Average- oder Worst-Case darstellt, ist eine getrennte Entscheidung.
O, Omega und Theta sicher unterscheiden

Für die folgenden Definitionen seien $f(n)$ und $g(n)$ ab einer gewissen Stelle nicht negativ. Die Konstanten dürfen nicht von $n$ abhängen.

Definition

Obere Schranke: O

$f(n)\in O(g(n))$ bedeutet: Es gibt Konstanten $c\gt0$ und $n_0$, sodass für alle $n\ge n_0$ gilt

$$f(n)\le c\cdot g(n).$$

Ab der Schwelle $n_0$ wächst $f$ also höchstens so schnell wie ein konstantes Vielfaches von $g$.

Definition

Untere Schranke: Omega

$f(n)\in\Omega(g(n))$ bedeutet in der Informatik: Es gibt Konstanten $c\gt0$ und $n_0$, sodass für alle $n\ge n_0$ gilt

$$f(n)\ge c\cdot g(n).$$

Ab der Schwelle wächst $f$ also mindestens so schnell wie ein konstantes Vielfaches von $g$.

Definition

Enge Schranke: Theta

$f(n)\in\Theta(g(n))$ bedeutet: Es gibt Konstanten $c_1,c_2\gt0$ und $n_0$, sodass für alle $n\ge n_0$ gilt

$$c_1g(n)\le f(n)\le c_2g(n).$$

Damit ist $g$ zugleich untere und obere Schranke bis auf konstante Faktoren.

SymbolAussageBild im Kopf
$O(g)$obere Schrankenicht schneller als ein Vielfaches von $g$
$\Omega(g)$untere Schrankenicht langsamer als ein Vielfaches von $g$
$\Theta(g)$enge Schrankezwischen zwei Vielfachen von $g$
Beispiel

Betrachte $f(n)=3n^2+4n+2$. Für $n\ge1$ gilt einerseits $f(n)\ge3n^2$. Andererseits sind dann $4n\le4n^2$ und $2\le2n^2$. Deshalb gilt

$$3n^2\le f(n)\le9n^2.$$

Mit $c_1=3$, $c_2=9$ und $n_0=1$ ist gezeigt: $f(n)\in\Theta(n^2)$. Damit liegt $f$ zugleich in $O(n^2)$ und in $\Omega(n^2)$.

Eine O-Schranke muss nicht eng sein. Auch $n^2\in O(n^3)$ ist richtig, aber weniger aussagekräftig als $n^2\in\Theta(n^2)$. Formal stehen hinter $O(g)$, $\Omega(g)$ und $\Theta(g)$ Mengen von Funktionen. Die verbreitete Schreibweise $f(n)=O(g(n))$ solltest du deshalb nicht wie eine gewöhnliche Gleichung behandeln.

Teste dich
Frage 1 von 2LeichtWelche Aussage beschreibt eine enge asymptotische Schranke?
Lösung: $f(n)\in\Theta(g(n))$ — Erst $\Theta$ verbindet eine obere und eine untere Schranke derselben Größenordnung.
Frage 2 von 2MittelFür $f(n)=3n^2+4n+2$ wurde $3n^2\le f(n)\le9n^2$ ab $n=1$ gezeigt. Was folgt?
Lösung: $f(n)\in\Theta(n^2)$ — Der Korridor zwischen zwei positiven Vielfachen von $n^2$ beweist die enge quadratische Schranke.
Den dominierenden Term finden

Bei einer Summe bestimmt für große $n$ der am schnellsten wachsende Summand die enge Größenordnung. Feste positive Faktoren verändern die Klasse nicht.

Beispiel

Gegeben ist

$$T(n)=5n^3+20n^2+7n+40.$$

Der Term $n^3$ wächst schneller als $n^2$, $n$ und eine Konstante. Der Faktor 5 ist fest. Daher gilt

$$T(n)\in\Theta(n^3).$$

Die präzise Aussage ist $\Theta(n^3)$, weil der positive kubische Leitterm sowohl eine passende obere als auch eine passende untere Schranke liefert.

So gehst du bei einem Polynom mit positivem Leitterm vor:

  1. Ordne die Summanden nach ihren Potenzen von $n$.
  2. Wähle die höchste vorkommende Potenz.
  3. Lass feste Faktoren und niedrigere Potenzen für die asymptotische Klasse weg.
  4. Schreibe $\Theta$ statt nur $O$, wenn du obere und untere Schranke begründen kannst.
Gut zu wissen

„Weglassen“ ist nur eine Abkürzung für die Einordnung des Wachstums. Wenn du konkrete Schrittzahlen oder Laufzeiten berechnest, darfst du weder Faktoren noch Summanden löschen.

Lückentext

Wähle in jeder Lücke die passende Form und prüfe anschließend deine Antworten.

Bei der Funktion „sieben n Quadrat plus drei n plus neun“ ist der höchste Exponent . Ihre enge Ordnung ist deshalb . Eine kubische obere Schranke wäre zwar , aber weniger .

Lösungen: Lücke 1: 2; Lücke 2: quadratisch; Lücke 3: richtig; Lücke 4: präzise. Der quadratische Term dominiert. Eine kubische obere Schranke ist möglich, beschreibt das tatsächliche Wachstum aber unnötig locker.
Fall und Schranke sind zwei verschiedene Fragen

Ein Algorithmus kann für gleich große Eingaben unterschiedlich viel Arbeit benötigen. Deshalb legst du zuerst die betrachteten Eingaben fest:

  • Best Case: günstigste Eingabe der Größe $n$;
  • Worst Case: ungünstigste Eingabe der Größe $n$;
  • Average Case: erwarteter Aufwand unter einer ausdrücklich angegebenen Wahrscheinlichkeitsverteilung.

Erst danach verwendest du $O$, $\Omega$ oder $\Theta$ für die entstandene Kostenfunktion.

Beispiel

Bei der linearen Suche wird eine Liste von links nach rechts geprüft.

Betrachteter FallZahl der VergleicheEnge Ordnung
Gesuchtes Element steht am Anfang$1$$\Theta(1)$
Gesuchtes Element fehlt$n$$\Theta(n)$

Der erste Fall ist der Best Case, der zweite ein Worst Case. Beide Funktionen könnten zusätzlich mit einer O-Schranke beschrieben werden: $1\in O(1)$ und $n\in O(n)$. Daran siehst du: Das Symbol $O$ bedeutet nicht „Worst Case“.

Für einen Average Case genügt die Aussage „typische Eingaben“ nicht. Du brauchst ein Modell dafür, wie wahrscheinlich die möglichen Eingaben sind. Ohne dieses Modell ist keine eindeutige durchschnittliche Laufzeit festgelegt.

Teste dich
Frage 1 von 2LeichtWelche Reihenfolge ist fachlich richtig?
Lösung: Zuerst den Fall festlegen, dann die Kostenfunktion mit einer Schranke beschreiben — Best-, Average- und Worst-Case bestimmen die Eingabemenge oder Verteilung. Landau-Symbole beschreiben danach das Wachstum der jeweiligen Funktion.
Frage 2 von 2MittelDie Worst-Case-Kosten eines Algorithmus sind $4n+7$. Welche enge Ordnung passt?
Lösung: $\Theta(n)$ — Der Worst Case ist bereits ausgewählt. Weil $4n+7$ oberhalb und unterhalb positiver Vielfacher von $n$ liegt, ist seine enge Ordnung $\Theta(n)$.
Schleifen Schritt für Schritt analysieren

Für einfache Programme kannst du zunächst zählen, wie oft eine Anweisung ausgeführt wird. Danach fasst du die entstehende Funktion asymptotisch zusammen.

Beispiel

Der folgende Abschnitt verarbeitet alle geordneten Paare einer Liste:

text for i = 0 bis n - 1 for j = 0 bis n - 1 verarbeite(i, j)

Die äußere Schleife läuft $n$-mal. Bei jedem Durchlauf läuft die innere Schleife ebenfalls $n$-mal. Wird verarbeite in konstanter Zeit ausgeführt, entstehen genau $n\cdot n=n^2$ Aufrufe. Die Schleifenarbeit liegt damit in $\Theta(n^2)$.

Bei voneinander unabhängigen, nacheinander ausgeführten Abschnitten addierst du ihre Kosten. Bei vollständig ineinander geschachtelten Schleifen multiplizierst du die Durchlaufzahlen nur dann direkt, wenn sie wirklich unabhängig voneinander sind.

Beispiel

Nun endet die innere Schleife schon vor $i$:

text for i = 0 bis n - 1 for j = 0 bis i - 1 verarbeite(i, j)

Die Zahl der Aufrufe ist

$$0+1+2+\dots+(n-1)=\frac{n(n-1)}2=\frac{n^2-n}2.$$

Der dominante Term ist $\frac12n^2$. Deshalb liegt auch diese Schleifenarbeit in $\Theta(n^2)$, obwohl sie nur ungefähr halb so viele Aufrufe wie das erste Beispiel erzeugt.

Merke

Zähle erst, vereinfache danach. „Zwei Schleifen bedeuten quadratisch“ ist ohne Prüfung ihrer Grenzen keine sichere Regel.

Teste dich
Frage 1 von 2MittelZwei Schleifen mit je $n$ Durchläufen stehen nacheinander, nicht ineinander. Ihre Körper benötigen konstante Zeit. Welche Ordnung hat die gesamte Schleifenarbeit?
Lösung: $\Theta(n)$ — Beide Schleifen zusammen führen $2n$ konstante Arbeiten aus. Der feste Faktor 2 ändert die lineare Ordnung nicht.
Frage 2 von 2SchwerEine innere Schleife läuft für jedes $i$ genau $i$-mal. Warum reicht die Antwort „$n\cdot n$“ als Begründung nicht?
Lösung: Weil die innere Durchlaufzahl von $i$ abhängt und als Summe gezählt werden muss — Hier lautet die genaue Summe $0+1+\dots+(n-1)$. Sie ergibt dennoch eine enge quadratische Ordnung.
Wachstumsordnungen sinnvoll vergleichen

Typische Klassen lassen sich für große $n$ so anordnen:

$$1\;\lt\;\log n\;\lt\;n\;\lt\;n\log n\;\lt\;n^2\;\lt\;2^n\;\lt\;n!$$

OrdnungNameWirkung einer Verdopplung von $n$
$\Theta(1)$konstantasymptotisch keine Änderung
$\Theta(\log n)$logarithmischZuwachs um einen konstanten Betrag
$\Theta(n)$linearungefähr Faktor 2
$\Theta(n\log n)$quasilinearetwas mehr als Faktor 2
$\Theta(n^2)$quadratischungefähr Faktor 4
$\Theta(2^n)$exponentiellErhöhung von $n$ um 1 verdoppelt den Wert

Die Basis eines Logarithmus ändert die Klasse nicht, denn Logarithmen verschiedener Basen unterscheiden sich nur durch einen konstanten Faktor.

Eine kleinere Wachstumsordnung entscheidet trotzdem nicht jede praktische Wahl. Prüfe zusätzlich:

  • Erfüllt die Eingabe alle Vorbedingungen des Algorithmus?
  • Welche Eingabegröße und welcher Fall werden verglichen?
  • Geht es um Zeit, zusätzlichen Speicher oder beides?
  • Sind die konkreten Eingaben so klein, dass Konstanten noch überwiegen?
Beispiel

Binäre Suche hat bei einer sortierten Liste eine logarithmische Worst-Case-Laufzeit. Ist die Liste nicht sortiert, kannst du diese Aussage nicht einfach anwenden. Das Sortieren selbst verursacht Aufwand; bei nur einer Suche kann eine lineare Suche deshalb trotz ihrer höheren Wachstumsordnung sinnvoll sein.

Teste dich
Frage 1 von 2MittelWarum wird die Basis in $\log_2 n$ und $\log_{10} n$ bei der asymptotischen Klasse meist nicht unterschieden?
Lösung: Ein Basiswechsel multipliziert den Logarithmus nur mit einer Konstanten — Feste Faktoren ändern die asymptotische Klasse nicht. Deshalb liegen beide Funktionen in $\Theta(\log n)$.
Frage 2 von 2SchwerDu willst einmal in einer unsortierten Liste suchen. Welche Aussage ist die beste Entscheidungshilfe?
Lösung: Vergleiche die Gesamtkosten einschließlich einer eventuell nötigen Sortierung — Eine gute Auswahl berücksichtigt Vorbedingungen und alle nötigen Arbeitsschritte, nicht nur die Klasse der späteren Suche.
Karteikasten
Karteikasten

Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.

Alles auf einen Blick
Mindmap
  • Landau-Notation
    • Bedeutung
      • Wachstum für große Eingaben
      • Zeit oder Speicher
    • Schranken
      • O: obere Schranke
      • Omega: untere Schranke
      • Theta: enge Schranke
    • Analyse
      • Fall und Eingabegröße festlegen
      • Arbeitsschritte zählen
      • dominierenden Term bestimmen
    • Grenzen
      • keine exakte Laufzeit
      • O ist nicht automatisch Worst Case
      • Vorbedingungen und Konstanten mitprüfen
Abschluss-Check
Teste dich
Frage 1 von 3LeichtWelche Zuordnung ist korrekt?
Lösung: $O$: obere Schranke, $\Omega$: untere Schranke, $\Theta$: enge Schranke — Die drei Symbole bezeichnen asymptotische Schranken. Sie legen nicht fest, welcher Eingabefall analysiert wurde.
Frage 2 von 3MittelEine Kostenfunktion lautet $T(n)=8n^2+2n+5$. Welche präzise asymptotische Aussage passt?
Lösung: $T(n)\in\Theta(n^2)$ — Der quadratische Summand dominiert, und sein positiver fester Faktor ändert die Klasse nicht.
Frage 3 von 3SchwerAlgorithmus A benötigt im Worst Case $\Theta(n)$ Zeit. Algorithmus B benötigt im Worst Case $\Theta(\log n)$, setzt aber sortierte Daten voraus. Was kannst du sicher folgern?
Lösung: Für eine Entscheidung musst du neben dem Wachstum auch Sortierzustand und mögliche Vorbereitungskosten prüfen — Die Worst-Case-Angabe bestimmt weder andere Fälle noch alle praktischen Kosten. Eine Auswahl braucht die Vorbedingungen und den vollständigen Arbeitsablauf.

Wenn du bei einer Analyse unsicher bist, stelle dir drei getrennte Fragen: Was ist $n$? Welchen Fall untersuche ich? Welche obere und untere Schranke kann ich tatsächlich begründen?

Passend dazu