# Landau-Symbole

Landau-Symbole (auch O-Notation, englisch big O notation) werden in der Mathematik und in der Informatik verwendet, um das asymptotische Verhalten von Funktionen und Folgen zu beschreiben.
In der Informatik werden sie bei der Analyse von Algorithmen verwendet und geben ein Maß für die Anzahl der Elementarschritte oder der Speichereinheiten in Abhängigkeit von der Größe des gegebenen Problems an.
Die Komplexitätstheorie verwendet sie, um Probleme danach zu klassifizieren, wie „schwierig“ oder aufwändig sie zu lösen sind. Zu „leichten“ Problemen existiert ein Algorithmus, dessen Laufzeit sich durch ein Polynom beschränken lässt; als „schwer“ gelten Probleme, für die man keinen Algorithmus gefunden hat, der weniger schnell als exponentiell wächst. Man nennt sie (nicht) polynomiell lösbar.
| Notation | Anschauliche Bedeutung (immer ohne Berücksichtigung von Konstanten) |
| $f=o(g)$ oder $f\in {\begin{smallmatrix}\!{\mathcal {O}}\!\end{smallmatrix}}(g)$ | $f$ wächst langsamer als $g$ |
| $f=O(g)$ oder $f\in {\mathcal {O}}(g)$ | $f$ wächst höchstens genauso schnell wie $g$ |
| $f\in \Theta (g)$ | $f$ wächst genauso schnell wie $g$ |
| $f=\Omega (g)$ | $f$ wächst nicht immer langsamer als $g$ (Zahlentheorie) |
| $f\in \Omega (g)$ | $f$ wächst mindestens genauso schnell wie $g$ (Komplexitätstheorie) |
| $f\in \omega (g)$ | $f$ wächst schneller als $g$ |

## Geschichte des O-Symbols

Erstmals drückte der deutsche Zahlentheoretiker Paul Bachmann 1894 „durch das Zeichen $O(n)$ eine Größe aus […], deren Ordnung in Bezug auf $n$ die Ordnung von $n$ nicht überschreitet […]“. Der ebenfalls deutsche Zahlentheoretiker Edmund Landau, durch den die $O$- und $o$-Symbolik bekannt wurde und mit dessen Namen sie insbesondere im deutschen Sprachraum heute verbunden ist, übernahm Bachmanns Bezeichnung und führte zudem die $o$-Bezeichnung für „von kleiner Ordnung“ ein.

## Definition

Im Folgenden werden die Definitionen der einzelnen Symbole tabellarisch aufgeführt. Für das Symbol $\Omega$ werden dabei zwei verschiedene Definitionen in der analytischen Zahlentheorie und der Komplexitätstheorie unterschieden, wie in einem eigenen Abschnitt diskutiert (siehe unten).
Dabei bezeichnen $f$ und $g$ entweder
* Folgen reeller Zahlen, dann ist $x\in \mathbb {N}$ und der Grenzwert $a=\infty$, oder
* reellwertige Funktionen der reellen Zahlen, dann ist $x\in \mathbb {R}$ und der Grenzwert aus den erweiterten reellen Zahlen: $a\in \mathbb {R} \cup \lbrace -\infty ,+\infty \rbrace$, oder
* reellwertige Funktionen beliebiger topologischer Räume $(X,{\mathfrak {T}})$, dann ist $x\in X$ und auch der Grenzwert $a\in X$. Wichtigster Spezialfall ist dabei $X=\mathbb {R} ^{n}$.

### Definition mit Limes superior und inferior

Formal lassen sich die Landau-Symbole mittels Limes superior und Limes inferior folgendermaßen definieren:
| Notation | Definition | Mathematische Definition |
| $f\in o(g)$ | asymptotisch gegenüber $g$ vernachlässigbar | $\lim _{x\to a}\left|{\frac {f(x)}{g(x)}}\right|=0$ |
| $f\in {\mathcal {O}}(g)$ | asymptotische obere Schranke | $\limsup _{x\to a}\left|{\frac {f(x)}{g(x)}}\right|<\infty$ |
| $f=\Omega (g)$ | (Zahlentheorie) asymptotische untere Schranke, $f$ ist nicht in $o(g)$ | $\limsup _{x\to a}\left|{\frac {f(x)}{g(x)}}\right|>0$ |
| $f\in \Omega (g)$ | (Komplexitätstheorie) asymptotische untere Schranke, $g\in {\mathcal {O}}(f)$ | $\liminf _{x\to a}\left|{\frac {f(x)}{g(x)}}\right|>0$ |
| $f\in \Theta (g)$ | asymptotisch scharfe Schranke, sowohl $f\in {\mathcal {O}}(g)$ als auch $f\in \Omega (g)$ | $0<\liminf _{x\to a}\left|{\frac {f(x)}{g(x)}}\right|\leq \limsup _{x\to a}\left|{\frac {f(x)}{g(x)}}\right|<\infty$ |
| $f\in \omega (g)$ | asymptotisch dominant, $g\in o(f)$ | $\lim _{x\to a}\left|{\frac {f(x)}{g(x)}}\right|=\infty$ |
In der Praxis existieren meist die Grenzwerte $\lim {\tfrac {f(x)}{g(x)}}$, sodass die Abschätzung des Limes superior oft durch die (einfachere) Berechnung eines Grenzwerts ersetzt werden kann.

### Definition mit Quantoren

Äquivalent zur Definition mit Limessymbolen können für einen metrischen Raum $(X;d)$, insbesondere also für die Fälle $X=\mathbb {R}$ und $X=\mathbb {N}$, folgende Definitionen mit Quantoren verwendet werden:
| Notation | $x\to a<\infty$ |
| $f\in o(g)$ | $\forall \ C>0\ \exists \ \varepsilon >0\ \forall \ x\in \lbrace x:d(x,a)<\varepsilon \rbrace :|f(x)|<C\cdot |g(x)|$ |
| $f\in {\mathcal {O}}(g)$ | $\exists \ C>0\ \exists \ \varepsilon >0\ \forall \ x\in \lbrace x:d(x,a)<\varepsilon \rbrace :|f(x)|\leq C\cdot |g(x)|$ |
| $f=\Omega (g)$ | (Zahlentheorie) $\exists \ c>0\ \forall \ \varepsilon >0\ \exists \ x\in \lbrace x:d(x,a)<\varepsilon \rbrace :c\cdot |g(x)|\leq |f(x)|$ |
| $f\in \Omega (g)$ | (Komplexitätstheorie) $\exists \ c>0\ \exists \ \varepsilon >0\ \forall \ x\in \lbrace x:d(x,a)<\varepsilon \rbrace :c\cdot |g(x)|\leq |f(x)|$ |
| $f\in \Theta (g)$ | $\exists \ c>0\ \exists \ C>0\ \exists \ \varepsilon >0\ \forall \ x\in \lbrace x:d(x,a)<\varepsilon \rbrace :c\cdot |g(x)|\leq |f(x)|\leq C\cdot |g(x)|$ |
| $f\in \omega (g)$ | $\forall \ c>0\ \exists \ \varepsilon >0\ \forall \ x\in \lbrace x:d(x,a)<\varepsilon \rbrace :c\cdot |g(x)|\leq |f(x)|$ |
| Notation | $x\to \infty$ |
| $f\in o(g)$ | $\forall \ C>0\ \exists \ x_{0}>0\ \forall \ x>x_{0}:|f(x)|<C\cdot |g(x)|$ |
| $f\in {\mathcal {O}}(g)$ | $\exists \ C>0\ \exists \ x_{0}>0\ \forall \ x>x_{0}:|f(x)|\leq C\cdot |g(x)|$ |
| $f=\Omega (g)$ | (Zahlentheorie) $\exists \ c>0\ \forall \ x_{0}>0\ \exists \ x>x_{0}:c\cdot g(x)\leq |f(x)|$ (die Test-Funktion g ist immer positiv) |
| $f\in \Omega (g)$ | (Komplexitätstheorie) $\exists \ c>0\ \exists \ x_{0}>0\ \forall \ x>x_{0}:c\cdot |g(x)|\leq |f(x)|$ |
| $f\in \Theta (g)$ | $\exists \ c>0\ \exists \ C>0\ \exists \ x_{0}>0\ \forall \ x>x_{0}:c\cdot |g(x)|\leq |f(x)|\leq C\cdot |g(x)|$ |
| $f\in \omega (g)$ | $\forall \ c>0\ \exists \ x_{0}>0\ \forall \ x>x_{0}:c\cdot |g(x)|<|f(x)|$ |
Analoge Definitionen lassen sich auch für den Fall $x\to -\infty$ sowie für einseitige Grenzwerte geben.

### Korollar

Für jede Funktion $f$ werden durch
    $\Omega (f),{\mathcal {O}}(f),\Theta (f),o(f),\omega (f)$
jeweils Mengen von Funktionen beschrieben. Es gelten folgende Beziehungen zwischen diesen:
    ${\begin{aligned}\Theta (f)&\subseteq {\mathcal {O}}(f)\\\Theta (f)&\subseteq \Omega (f)\\\Theta (f)&={\mathcal {O}}(f)\cap \Omega (f)\\\omega (f)&\subseteq \Omega (f)\\o(f)&\subseteq {\mathcal {O}}(f)\\\emptyset \,&=\,\omega (f)\cap o(f)\end{aligned}}$

## Verschiedene Definitionen für das Omega-Symbol

Es gibt in der Mathematik zwei sehr häufige und inkonsistente Definitionen für
    $f(x)=\Omega (g(x))\ (x\rightarrow a),$
wobei $a$ eine reelle Zahl, $\infty$ oder $-\infty$ ist, wo die reellen Funktionen $f$ und $g$ auf einer Umgebung von $a$ definiert sind und $g$ in dieser Umgebung positiv ist.
Die erste wird in der analytischen Zahlentheorie benutzt und die andere in der Komplexitätstheorie. Diese Situation kann zu Verwechslungen führen.

### Die Hardy-Littlewoodsche Definition

Im Jahr 1914 führten Godfrey Harold Hardy und John Edensor Littlewood das Symbol $\Omega$ mit der Bedeutung
    $f(x)=\Omega (g(x))\ (x\rightarrow \infty )\;\Leftrightarrow \;\limsup _{x\to \infty }\left|{\frac {f(x)}{g(x)}}\right|>0$
ein. Also ist $f(x)=\Omega (g(x))$ die Negation von $f(x)=o(g(x))$.
Im Jahr 1916 führten dieselben Verfasser zwei neue Symbole $\Omega _{R}$ und $\Omega _{L}$ mit den Bedeutungen
    $f(x)=\Omega _{R}(g(x))\ (x\rightarrow \infty )\;\Leftrightarrow \;\limsup _{x\to \infty }{\frac {f(x)}{g(x)}}>0$;
    $f(x)=\Omega _{L}(g(x))\ (x\rightarrow \infty )\;\Leftrightarrow \;\liminf _{x\to \infty }{\frac {f(x)}{g(x)}}<0$
ein. Also ist $f(x)=\Omega _{R}(g(x))$ die Negation von $f(x)<o(g(x))$ und $f(x)=\Omega _{L}(g(x))$ die Negation von $f(x)>o(g(x))$.
Im Gegensatz zu einer späteren Aussage von Donald E. Knuth verwendete Landau diese drei Symbole im Jahre 1924 mit den gleichen Bedeutungen.
Diese Hardy-Littlewood-Symbole sind Prototypen, sie werden nie genau so verwendet. $\Omega _{R}$ ist zu $\Omega _{+}$ und $\Omega _{L}$ zu $\Omega _{-}$ geworden.
Diese drei Symbole $\Omega ,\Omega _{+},\Omega _{-}$ sowie $f(x)=\Omega _{\pm }(g(x))$ (dies bedeutet, dass die beiden Eigenschaften $f(x)=\Omega _{+}(g(x))$ und $f(x)=\Omega _{-}(g(x))$ erfüllt sind) werden heute noch systematisch in der analytischen Zahlentheorie verwendet.

#### Einfache Beispiele

Wir haben
    $\sin x=\Omega (1)\ (x\rightarrow \infty )$
und speziell
    $\sin x=\Omega _{\pm }(1)\ (x\rightarrow \infty ).$
Wir haben
    $\sin x+1=\Omega (1)\ (x\rightarrow \infty )$
und speziell
    $\sin x+1=\Omega _{+}(1)\ (x\rightarrow \infty )$
aber
    $\sin x+1\not =\Omega _{-}(1)\ (x\rightarrow \infty ).$

#### Zahlentheoretische Notation

Die strenge Notation $f\in \Omega (g)$ wird in der Zahlentheorie nie benutzt und man schreibt weniger streng immer $f=\Omega (g)$. Dies bedeutet hier „$f$ ist ein Omega von $g$“.

### Die Knuthsche Definition

Im Jahr 1976 veröffentlichte Donald E. Knuth einen Artikel, dessen Hauptziel es ist, eine andere Verwendung des $\Omega$-Symbols zu rechtfertigen. Er bemüht sich, seine Leser zu überzeugen, dass, abgesehen von einigen älteren Werken (wie dem 1951 erschienenen Buch von Edward C. Titchmarsh), die Hardy-Littlewoodsche Definition fast nie benutzt wird. Er schreibt, dass er bei Landau keine Anwendung finden konnte und dass George Pólya, der bei Landau studierte, die Einschätzung bestätigte, dass Landau das $\Omega$-Symbol wohl nicht verwendet hat (tatsächlich findet sich eine Nutzung in einer Abhandlung von 1924). Knuth schreibt: „For all the applications I have seen so far in computer science, a stronger requirement […] is much more appropriate.“ Er verwendet das Symbol $\Omega$, um diese stärkere Anforderung zu beschreiben: „Unfortunately, Hardy and Littlewood didn’t define $\Omega (f(n))$ as I wanted to.“
Unter der Gefahr von Missverständnissen und Verwirrung definiert er auch
    $f(x)=\Omega (g(x))\Leftrightarrow g(x)=O(f(x))$.

## Beispiele und Notation

Bei der Verwendung der Landau-Symbole wird die darin verwendete Funktion häufig verkürzt angegeben. Statt zum Beispiel ${\mathcal {O}}(g){\text{ mit }}g\colon \mathbb {R} \to \mathbb {R} ,n\mapsto n^{3}$ schreibt man häufig verkürzend ${\mathcal {O}}(n^{3}).$ Dies wird auch in den folgenden Beispielen so gehandhabt.

### Anwendung in der Komplexitätstheorie

In der Komplexitätstheorie werden die Landau-Symbole vor allem verwendet, um den (minimalen, mittleren oder maximalen) Zeit- oder Speicherplatzbedarf eines Algorithmus zu beschreiben. Man spricht dann von Zeitkomplexität bzw. Platzkomplexität. Die Komplexität kann vom verwendeten Maschinenmodell abhängen. In der Regel nimmt man jedoch ein „normales“ Modell an, zum Beispiel ein der Turingmaschine äquivalentes.
Die folgende Tabelle gibt einen Überblick über die Verwendung des ${\mathcal {O}}$-Symbols im Kontext der Zeitkomplexität. Die Beispiele enthalten allesamt monoton wachsende Vergleichsfunktionen $g$, bei denen es auf ihr Verhalten bei $n\to \infty$ ankommt. (Als Name des Arguments wird gerne $n$ genommen – oft ohne eine Erläuterung, weil es sich sehr häufig um eine Anzahl handelt.) Sie sind in dieser Hinsicht aufsteigend geordnet, d. h. die Komplexitätsklasse einer Zeile ist in den Komplexitätsklassen aller darunter befindlichen Zeilen enthalten.
| Notation | Bedeutung | Anschauliche Erklärung | Beispiele für Laufzeiten |
| $f\in {\mathcal {O}}(1)$ | $f$ ist beschränkt. | $f$ überschreitet einen konstanten Wert nicht (ist unabhängig vom Wert des Arguments $n$). | Feststellen, ob eine Binärzahl gerade ist Nachschlagen des $n$-ten Elementes in einem Feld in einer Registermaschine |
| $f\in {\mathcal {O}}(\log \log n)$ | $f$ wächst doppel-logarithmisch. | Bei Basis 2 erhöht sich $f$ um 1, wenn $n$ quadriert wird. | Interpolationssuche im sortierten Feld mit $n$ gleichförmig verteilten Einträgen |
| $f\in {\mathcal {O}}(\log n)$ | $f$ wächst logarithmisch. | $f$ wächst ungefähr um einen konstanten Betrag, wenn sich $n$ verdoppelt. Die Basis des Logarithmus ist dabei egal. | Binäre Suche im sortierten Feld mit $n$ Einträgen |
| $f\in {\mathcal {O}}({\sqrt {n}})$ | $f$ wächst wie die Wurzelfunktion. | $f$ wächst ungefähr auf das Doppelte, wenn sich $n$ vervierfacht. | Anzahl der Divisionen des naiven Primzahltests (Teilen durch jede ganze Zahl $\leq {\sqrt {n}}$) |
| $f\in {\mathcal {O}}(n)$ | $f$ wächst linear. | $f$ wächst ungefähr auf das Doppelte, wenn sich $n$ verdoppelt. | Suche im unsortierten Feld mit $n$ Einträgen (Bsp. Lineare Suche) |
| $f\in {\mathcal {O}}(n\log n)$ | $f$ hat super-lineares Wachstum. | | Vergleichbasierte Algorithmen zum Sortieren von $n$ Zahlen Mergesort, Heapsort |
| $f\in {\mathcal {O}}(n^{2})$ | $f$ wächst quadratisch. | $f$ wächst ungefähr auf das Vierfache, wenn sich $n$ verdoppelt. | Einfache Algorithmen zum Sortieren von $n$ Zahlen Selectionsort |
| $f\in {\mathcal {O}}(n^{m})$ | $f$ wächst polynomiell. | $f$ wächst ungefähr auf das $2^{m}$-Fache, wenn sich $n$ verdoppelt. | „Einfache“ Algorithmen |
| $f\in {\mathcal {O}}(2^{n})$ | $f$ wächst exponentiell. | $f$ wächst ungefähr auf das Doppelte, wenn sich $n$ um 1 erhöht. | Erfüllbarkeitsproblem der Aussagenlogik (SAT) mittels erschöpfender Suche |
| $f\in {\mathcal {O}}(n!)$ | $f$ wächst faktoriell. | $f$ wächst ungefähr auf das $(n+1)$-Fache, wenn sich $n$ um 1 erhöht. | Problem des Handlungsreisenden (mit erschöpfender Suche) |
| $f\in {\mathcal {O}}(A(n))$ | $f$ wächst wie die modifizierte Ackermannfunktion. | | Problem ist berechenbar, aber nicht notwendig primitiv-rekursiv |

### Anwendung bei Grenzwerten

Die Landau-Notation wird verwendet, um das asymptotische Verhalten bei Annäherung an einen endlichen oder unendlichen Grenzwert zu beschreiben. Das große ${\mathcal {O}}$ wird verwendet, um eine maximale Größenordnung anzugeben. So gilt beispielsweise nach der Stirlingformel für das asymptotische Verhalten der Fakultät
    $n!={\sqrt {2\pi n}}~{\left({\frac {n}{e}}\right)}^{n}\left(1+{\mathcal {O}}\left({\frac {1}{n}}\right)\right)$ für $n\to \infty$
und
    $n!={\mathcal {O}}\left({\sqrt {n}}\cdot \left({\frac {n}{e}}\right)^{n}\right)$ für $n\to \infty$.
Der Faktor ${\sqrt {2\pi }}$ ist dabei nur eine Konstante und kann für die Abschätzung der Größenordnung vernachlässigt werden.
Die Landau-Notation kann auch benutzt werden, um den Fehlerterm einer Approximation zu beschreiben. Beispielsweise besagt
    $e^{x}=1+x+x^{2}/2+{\mathcal {O}}(x^{3})\qquad$ für $x\to 0$,
dass der Absolutbetrag des Approximationsfehlers kleiner als eine Konstante mal $x^{3}$ für $x$ hinreichend nahe bei Null ist.
Das kleine $o$ wird verwendet, um zu sagen, dass ein Ausdruck vernachlässigbar klein gegenüber dem angegebenen Ausdruck ist. Für differenzierbare Funktionen gilt beispielsweise
    $f(x+h)=f(x)+hf'(x)+o(h)\qquad$ für $h\to 0$,
der Fehler bei Approximation durch die Tangente geht also schneller als linear gegen $0$.

## Notationsfallen
### Symbolisches Gleichheitszeichen

Oft wird in der Mathematik bei der Landau-Notation das Gleichheitszeichen verwendet. Es handelt sich dabei aber um eine rein symbolische Schreibweise und nicht um eine Gleichheitsaussage, auf die beispielsweise die Gesetze der Transitivität oder der Symmetrie anwendbar sind: Eine Aussage wie $f(x)={\mathcal {O}}(g(x))$ ist keine Gleichung und keine Seite ist durch die andere bestimmt. Aus $f_{1}(x)={\mathcal {O}}(g(x))$ und $f_{2}(x)={\mathcal {O}}(g(x))$ folgt nicht, dass $f_{1}$ und $f_{2}$ gleich sind. Genauso wenig kann man aus $f(x)={\mathcal {O}}(g_{1}(x))$ und $f(x)={\mathcal {O}}(g_{2}(x))$ schließen, dass ${\mathcal {O}}(g_{1}(x))$ und ${\mathcal {O}}(g_{2}(x))$ dieselbe Klasse sind oder die eine in der anderen enthalten ist.
Tatsächlich handelt es sich bei ${\mathcal {O}}(g(x))$ um eine Menge, welche alle diejenigen Funktionen enthält, welche höchstens so schnell wachsen wie $g(x)$. Die Schreibweise $f(x)\in {\mathcal {O}}(g(x))$ ist also formal korrekt.
Die Notation mit dem Gleichheitszeichen wie in $f={\mathcal {O}}(g)$ wird trotzdem in der Praxis ausgiebig genutzt. Beispielsweise soll der Ausdruck $f(n)=h(n)+\Theta (g(n))$ besagen, dass es Konstanten $c_{1}$ und $c_{2}$ gibt, sodass
    $h(n)+c_{1}\cdot g(n)\,\leq \,f(n)\,\leq \,h(n)+c_{2}\cdot g(n)$
für hinreichend große $n$ gilt.

### Vergessener Grenzwert

Eine weitere Falle besteht darin, dass oft nicht angegeben wird, auf welchen Grenzwert sich das Landausymbol bezieht. Der Grenzwert ist aber wesentlich; so ist beispielsweise
    ${\tfrac {1}{x}}\in o\left({\tfrac {1}{\sqrt {x}}}\right)$
für $x\!\uparrow \!\infty$, nicht aber für den einseitigen Grenzwert $x\!\downarrow \!0$ mit
    ${\tfrac {1}{x}}\in {\mathcal {O}}\left({\tfrac {1}{\sqrt {x}}}\right)(x\!\downarrow \!0)~.$
Jedoch wird normalerweise der zu betrachtende Grenzwert aus dem Zusammenhang klar und Mehrdeutigkeiten treten nur selten auf.