Landau-Symbole




Landau-Symbole 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 der Eingangsvariablen an. Die Komplexitätstheorie verwendet sie, um verschiedene Probleme danach zu vergleichen, wie „schwierig“ oder aufwendig sie zu lösen sind. Man sagt, „schwere Probleme“ wachsen exponentiell mit der Instanz oder schneller und für „leichte Probleme“ existiert ein Algorithmus, dessen Laufzeitzuwächse sich durch das Wachstum eines Polynoms beschränken lassen. Man nennt sie (nicht) polynomiell lösbar.































Notation
Anschauliche Bedeutung

f∈o(g){displaystyle fin {hbox{o}}(g)}f in hbox{o}(g)

oder


f=o(g){displaystyle f={hbox{o}}(g)}f={hbox{o}}(g)



f{displaystyle f}f wächst langsamer als g{displaystyle g}g

f∈O(g){displaystyle fin {mathcal {O}}(g)}f in mathcal{O}(g)

oder


f=O(g){displaystyle f=O(g)}f=O(g)



f{displaystyle f}f wächst nicht wesentlich schneller als g{displaystyle g}g

f∈Θ(g){displaystyle fin Theta (g)}f in Theta(g)

f{displaystyle f}f wächst genauso schnell wie g{displaystyle g}g

f=Ω(g){displaystyle f=Omega (g)}f = Omega(g)

f{displaystyle f}f wächst nicht immer langsamer als g{displaystyle g}g (Zahlentheorie)

f∈Ω(g){displaystyle fin Omega (g)}f in Omega(g)

f{displaystyle f}f wächst nicht wesentlich langsamer als g{displaystyle g}g (Komplexitätstheorie)

f∈ω(g){displaystyle fin omega (g)}f in omega(g)

f{displaystyle f}f wächst schneller als g{displaystyle g}g



Inhaltsverzeichnis






  • 1 Geschichte des O-Symbols


  • 2 Sonderfall: Omega-Symbol


    • 2.1 Zwei unvereinbare Definitionen


    • 2.2 Die Hardy-Littlewoodsche Definition


      • 2.2.1 Einfache Beispiele


      • 2.2.2 Zahlentheoretische Notation




    • 2.3 Die Knuthsche Definition




  • 3 Definition


  • 4 Folgerung


  • 5 Beispiele und Notation


  • 6 Notationsfallen


    • 6.1 Symbolisches Gleichheitszeichen


    • 6.2 Vergessener Grenzwert




  • 7 Anwendung in der Komplexitätstheorie


  • 8 Siehe auch


  • 9 Quellen


  • 10 Weblinks





Geschichte des O-Symbols |


O(n){displaystyle O(n)}O(n) als Symbol für „eine Grösse […], deren Ordnung in Bezug auf n{displaystyle n}n die Ordnung von n{displaystyle n}n nicht überschreitet“, wurde erstmals vom deutschen Zahlentheoretiker Paul Bachmann im 1894 erschienenen zweiten Teil Die analytische Zahlentheorie seines Werkes Zahlentheorie verwendet. Bekannt gemacht wurde diese Notation durch den ebenfalls deutschen Zahlentheoretiker Edmund Landau, mit dessen Namen sie insbesondere im deutschen Sprachraum heute in Verbindung gebracht wird.[1]



Sonderfall: Omega-Symbol |



Zwei unvereinbare Definitionen |


Es gibt in der Mathematik zwei sehr häufige und inkonsistente Definitionen für


f(x)=Ω(g(x)) (x→a),{displaystyle f(x)=Omega (g(x)) (xrightarrow a),}f(x)=Omega(g(x)) (xrightarrow a),

wobei a{displaystyle a}a eine reelle Zahl, {displaystyle infty }infty oder {displaystyle -infty }-infty ist, wo die reellen Funktionen f{displaystyle f}f und g{displaystyle g}g auf einer Umgebung von a{displaystyle a}a definiert sind und g{displaystyle g}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 G. H. Hardy und J. E. Littlewood das Symbol Ω{displaystyle Omega }Omega mit der Bedeutung


f(x)=Ω(g(x)) (x→)⇔lim supx→|f(x)g(x)|>0{displaystyle f(x)=Omega (g(x)) (xrightarrow infty );Leftrightarrow ;limsup _{xto infty }left|{frac {f(x)}{g(x)}}right|>0}f(x)=Omega(g(x)) (xrightarrowinfty);Leftrightarrow;limsup_{x to infty} left|frac{f(x)}{g(x)}right|> 0

ein.[2] Also ist f(x)=Ω(g(x)){displaystyle f(x)=Omega (g(x))}f(x)=Omega(g(x)) die Negation von f(x)=o(g(x)){displaystyle f(x)={hbox{o}}(g(x))}{displaystyle f(x)={hbox{o}}(g(x))}.


Im Jahr 1918 führten dieselben Verfasser zwei neue Symbole ΩR{displaystyle Omega _{R}}Omega_R und ΩL{displaystyle Omega _{L}}Omega_L mit den Bedeutungen



f(x)=ΩR(g(x)) (x→)⇔lim supx→f(x)g(x)>0{displaystyle f(x)=Omega _{R}(g(x)) (xrightarrow infty );Leftrightarrow ;limsup _{xto infty }{frac {f(x)}{g(x)}}>0}f(x)=Omega_R(g(x)) (xrightarrowinfty);Leftrightarrow;limsup_{x to infty} frac{f(x)}{g(x)}> 0;

f(x)=ΩL(g(x)) (x→)⇔lim infx→f(x)g(x)<0{displaystyle f(x)=Omega _{L}(g(x)) (xrightarrow infty );Leftrightarrow ;liminf _{xto infty }{frac {f(x)}{g(x)}}<0}f(x)=Omega_L(g(x)) (xrightarrowinfty);Leftrightarrow;liminf_{x to infty} frac{f(x)}{g(x)}< 0

ein.[3] Also ist f(x)=ΩR(g(x)){displaystyle f(x)=Omega _{R}(g(x))}f(x)=Omega_R(g(x)) die Negation von f(x)<o(g(x)){displaystyle f(x)<{hbox{o}}(g(x))}{displaystyle f(x)<{hbox{o}}(g(x))} und f(x)=ΩL(g(x)){displaystyle f(x)=Omega _{L}(g(x))}f(x)=Omega_L(g(x)) die Negation von f(x)>o(g(x)){displaystyle f(x)>{hbox{o}}(g(x))}{displaystyle f(x)>{hbox{o}}(g(x))}.


Im Gegensatz zu einer späteren Aussage von D. E. Knuth[4] verwendete Edmund Landau diese drei Symbole im Jahre 1924 mit den gleichen Bedeutungen.[5]


Diese Hardy-Littlewood-Symbole sind Prototypen, sie werden nie genau so verwendet. ΩR{displaystyle Omega _{R}}Omega_R ist zu Ω+{displaystyle Omega _{+}}Omega_+ und ΩL{displaystyle Omega _{L}}Omega_L zu Ω{displaystyle Omega _{-}}Omega_- geworden.


Diese drei Symbole Ω+,Ω{displaystyle Omega ,Omega _{+},Omega _{-}}Omega, Omega_+, Omega_- sowie f(x)=Ω±(g(x)){displaystyle f(x)=Omega _{pm }(g(x))}f(x)=Omega_pm(g(x)) (dies bedeutet, dass die beiden Eigenschaften f(x)=Ω+(g(x)){displaystyle f(x)=Omega _{+}(g(x))}f(x)=Omega_+(g(x)) und f(x)=Ω(g(x)){displaystyle f(x)=Omega _{-}(g(x))}f(x)=Omega_-(g(x)) erfüllt sind) werden heute noch systematisch in der analytischen Zahlentheorie verwendet.



Einfache Beispiele |


Wir haben


sin⁡x=Ω(1) (x→){displaystyle sin x=Omega (1) (xrightarrow infty )}sin x=Omega(1) (xrightarrowinfty)

und speziell


sin⁡x=Ω±(1) (x→).{displaystyle sin x=Omega _{pm }(1) (xrightarrow infty ).}sin x=Omega_pm(1) (xrightarrowinfty).

Wir haben


sin⁡x+1=Ω(1) (x→){displaystyle sin x+1=Omega (1) (xrightarrow infty )}sin x+1=Omega(1) (xrightarrowinfty)

und speziell


sin⁡x+1=Ω+(1) (x→){displaystyle sin x+1=Omega _{+}(1) (xrightarrow infty )}sin x+1=Omega_+(1) (xrightarrowinfty)

aber


sin⁡x+1≠Ω(1) (x→).{displaystyle sin x+1not =Omega _{-}(1) (xrightarrow infty ).}sin x+1not=Omega_-(1) (xrightarrowinfty).


Zahlentheoretische Notation |


Die strenge Notation f∈Ω(g){displaystyle fin Omega (g)}f in Omega(g) wird in der Zahlentheorie nie benutzt und man schreibt weniger streng immer f=Ω(g){displaystyle f=Omega (g)}f =Omega(g). Dies bedeutet hier „f{displaystyle f}f ist ein Omega von g{displaystyle g}g“.



Die Knuthsche Definition |


Im Jahr 1976 veröffentlichte D. E. Knuth einen Artikel,[4] dessen Hauptziel es ist, eine andere Verwendung des Ω{displaystyle Omega }Omega -Symbols zu rechtfertigen. Er bemüht sich, seine Leser zu überzeugen, dass die Hardy-Littlewoodsche Definition fast nie benutzt wird (auch im Jahr 1976 war es für mindestens 25 Jahre falsch[6]). Er schreibt, dass er bei Landau keine Anwendung finden konnte und dass George Pólya, der bei Landau studierte, seine, Knuths, Einschätzung bestätigte, dass Landau das Ω{displaystyle Omega }Omega -Symbol wohl nicht verwendet hat. Knuth schreibt: „For all the applications I have seen so far in computer science, a stronger requirement […] is much more appropriate.“ Es besteht kein Zweifel, dass er recht hat, wenn er das Symbol Ω{displaystyle Omega }Omega verwendet, um diese stärkere Anforderung zu beschreiben: „Unfortunately, Hardy and Littlewood didn’t define Ω(f(n)){displaystyle Omega (f(n))}Omega(f(n)) as I wanted to.“


Unter der Gefahr von Missverständnissen und Verwirrung definiert er auch



f(x)=Ω(g(x))⇔g(x)=O(f(x)){displaystyle f(x)=Omega (g(x))Leftrightarrow g(x)=O(f(x))}f(x)=Omega(g(x))Leftrightarrow g(x)=O(f(x)).[7]


Definition |


In der folgenden Tabelle bezeichnen f{displaystyle f}f und g{displaystyle g}g entweder




  • Folgen reeller Zahlen, dann ist x∈N{displaystyle xin mathbb {N} }xinN und der Grenzwert a=∞{displaystyle a=infty }a=infty, oder

  • reellwertige Funktionen der reellen Zahlen, dann ist x∈R{displaystyle xin mathbb {R} }xin mathbb {R} und der Grenzwert aus den erweiterten reellen Zahlen: a∈R∪{−,+∞}{displaystyle ain mathbb {R} cup lbrace -infty ,+infty rbrace }ainRcuplbrace-infty,+inftyrbrace, oder

  • reellwertige Funktionen beliebiger topologischer Räume (X,T){displaystyle (X,{mathfrak {T}})}(X,mathfrak{T}), dann ist x∈X{displaystyle xin X}xin X und auch der Grenzwert a∈X{displaystyle ain X}ain X. Wichtigster Spezialfall ist dabei X=Rn{displaystyle X=mathbb {R} ^{n}}X=R^n.


Formal lassen sich die Landau-Symbole dann mittels Limes superior und Limes inferior folgendermaßen definieren:






































Notation
Definition
Mathematische Definition

f∈o(g){displaystyle fin {hbox{o}}(g)}f in hbox{o}(g)
asymptotisch gegenüber g{displaystyle g}g vernachlässigbar

limx→a|f(x)g(x)|=0{displaystyle lim _{xto a}left|{frac {f(x)}{g(x)}}right|=0}lim_{x to a} left|frac{f(x)}{g(x)}right| = 0

f∈O(g){displaystyle fin {mathcal {O}}(g)}f in mathcal{O}(g)
asymptotische obere Schranke

lim supx→a|f(x)g(x)|<∞{displaystyle limsup _{xto a}left|{frac {f(x)}{g(x)}}right|<infty }limsup_{x to a} left|frac{f(x)}{g(x)}right| < infty

f∈Θ(g){displaystyle fin Theta (g)}f in Theta(g)
asymptotisch scharfe Schranke, sowohl f∈O(g){displaystyle fin {mathcal {O}}(g)}finmathcal{O}(g) als auch g∈O(f){displaystyle gin {mathcal {O}}(f)}ginmathcal{O}(f)

0<lim infx→a|f(x)g(x)|≤lim supx→a|f(x)g(x)|<∞{displaystyle 0<liminf _{xto a}left|{frac {f(x)}{g(x)}}right|leq limsup _{xto a}left|{frac {f(x)}{g(x)}}right|<infty }0 < liminf_{x to a} left|frac{f(x)}{g(x)}right| le limsup_{x to a} left|frac{f(x)}{g(x)}right|< infty

f=Ω(g){displaystyle f=Omega (g)}f = Omega(g)
(Zahlentheorie) asymptotische untere Schranke, f{displaystyle f}f ist nicht in o(g){displaystyle {hbox{o}}(g)}hbox{o}(g)

lim supx→a|f(x)g(x)|>0{displaystyle limsup _{xto a}left|{frac {f(x)}{g(x)}}right|>0}limsup_{x to a} left|frac{f(x)}{g(x)}right| >0

f∈Ω(g){displaystyle fin Omega (g)}f in Omega(g)
(Komplexitätstheorie) asymptotische untere Schranke, g∈O(f){displaystyle gin {mathcal {O}}(f)}ginmathcal{O}(f)

lim infx→a|f(x)g(x)|>0{displaystyle liminf _{xto a}left|{frac {f(x)}{g(x)}}right|>0}liminf_{x to a} left|frac{f(x)}{g(x)}right| >0

f∈ω(g){displaystyle fin omega (g)}f in omega(g)
asymptotisch dominant, g∈o(f){displaystyle gin {hbox{o}}(f)}ginhbox{o}(f)

limx→a|f(x)g(x)|=∞{displaystyle lim _{xto a}left|{frac {f(x)}{g(x)}}right|=infty }lim_{x to a} left|frac{f(x)}{g(x)}right| = infty

In der Praxis existieren meist die Grenzwerte limf(x)g(x){displaystyle lim {tfrac {f(x)}{g(x)}}}lim tfrac{f(x)}{g(x)}, sodass die Abschätzung des limes superior oft durch die (einfachere) Berechnung eines Grenzwerts ersetzt werden kann.


Äquivalent zur Definition mit Limessymbolen können für einen metrischen Raum (X;d){displaystyle (X;d)}(X;d), insbesondere also für die Fälle X=R{displaystyle X=mathbb {R} }X=R und X=N{displaystyle X=mathbb {N} }X=N, folgende Definitionen mit Quantoren verwendet werden:































Notation

x→a<∞{displaystyle xto a<infty }xto a<infty

f∈o(g){displaystyle fin {hbox{o}}(g)}f in hbox{o}(g)

 C>0 ∃ ε>0 ∀ x∈{x:d(x,a)<ε}:|f(x)|<C⋅|g(x)|{displaystyle forall C>0 exists varepsilon >0 forall xin lbrace x:d(x,a)<varepsilon rbrace :|f(x)|<Ccdot |g(x)|}{displaystyle forall  C>0 exists  varepsilon >0 forall  xin lbrace x:d(x,a)<varepsilon rbrace :|f(x)|<Ccdot |g(x)|}

f∈O(g){displaystyle fin {mathcal {O}}(g)}f in mathcal{O}(g)

 C>0 ∃ ε>0 ∀ x∈{x:d(x,a)<ε}:|f(x)|≤C⋅|g(x)|{displaystyle exists C>0 exists varepsilon >0 forall xin lbrace x:d(x,a)<varepsilon rbrace :|f(x)|leq Ccdot |g(x)|}exists C > 0 exists varepsilon > 0  forall x in lbrace x: d(x, a)<varepsilonrbrace: |f(x)| le Ccdot|g(x)|

f∈Θ(g){displaystyle fin Theta (g)}f in Theta(g)

 c>0 ∃ C>0 ∃ ε>0 ∀ x∈{x:d(x,a)<ε}:c⋅|g(x)|≤|f(x)|≤C⋅|g(x)|{displaystyle exists c>0 exists C>0 exists varepsilon >0 forall xin lbrace x:d(x,a)<varepsilon rbrace :ccdot |g(x)|leq |f(x)|leq Ccdot |g(x)|}exists c > 0 exists C > 0 exists varepsilon > 0  forall x in lbrace x: d(x, a)<varepsilonrbrace: ccdot|g(x)| le |f(x)| le Ccdot|g(x)|

f=Ω(g){displaystyle f=Omega (g)}f = Omega(g)
(Zahlentheorie)  c>0 ∀ ε>0 ∃ x∈{x:d(x,a)<ε}:c⋅|g(x)|≤|f(x)|{displaystyle exists c>0 forall varepsilon >0 exists xin lbrace x:d(x,a)<varepsilon rbrace :ccdot |g(x)|leq |f(x)|}exists c > 0 forall varepsilon > 0  exists x in lbrace x: d(x, a)<varepsilonrbrace: ccdot|g(x)| le |f(x)|

f∈Ω(g){displaystyle fin Omega (g)}f in Omega(g)
(Komplexitätstheorie)  c>0 ∃ ε>0 ∀ x∈{x:d(x,a)<ε}:c⋅|g(x)|≤|f(x)|{displaystyle exists c>0 exists varepsilon >0 forall xin lbrace x:d(x,a)<varepsilon rbrace :ccdot |g(x)|leq |f(x)|}exists c > 0 exists varepsilon > 0  forall x in lbrace x: d(x, a)<varepsilonrbrace: ccdot|g(x)| le |f(x)|

f∈ω(g){displaystyle fin omega (g)}f in omega(g)

 c>0 ∃ ε>0 ∀ x∈{x:d(x,a)<ε}:c⋅|g(x)|≤|f(x)|{displaystyle forall c>0 exists varepsilon >0 forall xin lbrace x:d(x,a)<varepsilon rbrace :ccdot |g(x)|leq |f(x)|}forall c > 0 exists varepsilon > 0  forall x in lbrace x: d(x, a)<varepsilonrbrace: ccdot|g(x)| le |f(x)|






























Notation

x→{displaystyle xto infty }xtoinfty

f∈o(g){displaystyle fin {hbox{o}}(g)}f in hbox{o}(g)

 C>0 ∃ x0>0 ∀ x>x0:|f(x)|<C⋅|g(x)|{displaystyle forall C>0 exists x_{0}>0 forall x>x_{0}:|f(x)|<Ccdot |g(x)|}{displaystyle forall  C>0 exists  x_{0}>0 forall  x>x_{0}:|f(x)|<Ccdot |g(x)|}

f∈O(g){displaystyle fin {mathcal {O}}(g)}f in mathcal{O}(g)

 C>0 ∃ x0>0 ∀ x>x0:|f(x)|≤C⋅|g(x)|{displaystyle exists C>0 exists x_{0}>0 forall x>x_{0}:|f(x)|leq Ccdot |g(x)|}exists C > 0 exists x_0 > 0 forall x > x_0: |f(x)| le Ccdot|g(x)|

f∈Θ(g){displaystyle fin Theta (g)}f in Theta(g)

 c>0 ∃ C>0 ∃ x0>0 ∀ x>x0:c⋅|g(x)|≤|f(x)|≤C⋅|g(x)|{displaystyle exists c>0 exists C>0 exists x_{0}>0 forall x>x_{0}:ccdot |g(x)|leq |f(x)|leq Ccdot |g(x)|}exists c > 0 exists C > 0 exists x_0 > 0 forall x > x_0: ccdot|g(x)|le|f(x)| le Ccdot|g(x)|

f=Ω(g){displaystyle f=Omega (g)}f = Omega(g)
(Zahlentheorie)  c>0 ∀ x0>0 ∃ x>x0:c⋅g(x)≤|f(x)|{displaystyle exists c>0 forall x_{0}>0 exists x>x_{0}:ccdot g(x)leq |f(x)|}exists c > 0 forall x_0 > 0 exists x > x_0: ccdot g(x)le|f(x)| (die Test-Funktion g ist immer positiv)

f∈Ω(g){displaystyle fin Omega (g)}f in Omega(g)
(Komplexitätstheorie)  c>0 ∃ x0>0 ∀ x>x0:c⋅|g(x)|≤|f(x)|{displaystyle exists c>0 exists x_{0}>0 forall x>x_{0}:ccdot |g(x)|leq |f(x)|}exists c > 0 exists x_0 > 0 forall x > x_0: ccdot|g(x)|le|f(x)|

f∈ω(g){displaystyle fin omega (g)}f in omega(g)

 c>0 ∃ x0>0 ∀ x>x0:c⋅|g(x)|≤|f(x)|{displaystyle forall c>0 exists x_{0}>0 forall x>x_{0}:ccdot |g(x)|leq |f(x)|}forall c > 0 exists x_0 > 0 forall x > x_0: ccdot|g(x)|le|f(x)|

Analoge Definitionen lassen sich auch für den Fall x→{displaystyle xto -infty }xto -infty sowie für einseitige Grenzwerte geben.



Folgerung |


Für jede Funktion f{displaystyle f}f werden durch


Ω(f),O(f),Θ(f),o(f),ω(f){displaystyle Omega (f),{mathcal {O}}(f),Theta (f),{hbox{o}}(f),omega (f)}Omega(f), mathcal{O}(f), Theta(f), hbox{o}(f), omega(f)

jeweils Mengen von Funktionen beschrieben. Es gelten folgende Beziehungen zwischen diesen:


Θ(f)⊆O(f)Θ(f)⊆Ω(f)Θ(f)=O(f)∩Ω(f)ω(f)⊆Ω(f)o(f)⊆O(f)∅(f)∩o(f){displaystyle {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)\{hbox{o}}(f)&subseteq {mathcal {O}}(f)\emptyset ,&=,omega (f)cap {hbox{o}}(f)end{aligned}}}{displaystyle {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)\{hbox{o}}(f)&subseteq {mathcal {O}}(f)\emptyset ,&=,omega (f)cap {hbox{o}}(f)end{aligned}}}


Beispiele und Notation |


Bei der Verwendung der Landau-Symbole wird die darin verwendete Funktion häufig verkürzt angegeben. Statt zum Beispiel O(g) mit g:R→R,x↦x3{displaystyle {mathcal {O}}(g){text{ mit }}gcolon mathbb {R} to mathbb {R} ,xmapsto x^{3}}{displaystyle {mathcal {O}}(g){text{ mit }}gcolon mathbb {R} to mathbb {R} ,xmapsto x^{3}} schreibt man häufig verkürzend O(x3).{displaystyle {mathcal {O}}(x^{3}).}{displaystyle {mathcal {O}}(x^{3}).} Dies wird auch in den folgenden Beispielen so gehandhabt.































































Notation
Bedeutung
Anschauliche Erklärung
Beispiele für Laufzeiten

f∈O(1){displaystyle fin {mathcal {O}}(1)}f in mathcal{O}(1)

f{displaystyle f}f ist beschränkt.

f{displaystyle f}f überschreitet einen konstanten Wert nicht (unabhängig vom Wert des Arguments).
Nachschlagen des x{displaystyle x}x-ten Elementes in einem Feld

f∈O(log⁡x){displaystyle fin {mathcal {O}}(log x)}f in mathcal{O}(log x)

f{displaystyle f}f wächst logarithmisch.

f{displaystyle f}f wächst ungefähr um einen konstanten Betrag, wenn sich das Argument verdoppelt.

Die Basis des Logarithmus ist dabei egal.



Binäre Suche im sortierten Feld mit x{displaystyle x}x Einträgen

f∈O(x){displaystyle fin {mathcal {O}}({sqrt {x}})}f in mathcal{O}(sqrt{x})

f{displaystyle f}f wächst wie die Wurzelfunktion.

f{displaystyle f}f wächst ungefähr auf das Doppelte, wenn sich das Argument vervierfacht.
Naiver Primzahltest mittels Teilen durch jede ganze Zahl x{displaystyle leq {sqrt {x}}}leq sqrt{x}

f∈O(x){displaystyle fin {mathcal {O}}(x)}f in mathcal{O}(x)

f{displaystyle f}f wächst linear.

f{displaystyle f}f wächst ungefähr auf das Doppelte, wenn sich das Argument verdoppelt.
Suche im unsortierten Feld mit x{displaystyle x}x Einträgen (Bsp. Lineare Suche)

f∈O(xlog⁡x){displaystyle fin {mathcal {O}}(xlog x)}f in mathcal{O}(x log x)

f{displaystyle f}f hat super-lineares Wachstum

Fortgeschrittenere Algorithmen zum Sortieren von x{displaystyle x}x Zahlen

Mergesort, Heapsort



f∈O(x2){displaystyle fin {mathcal {O}}(x^{2})}f in mathcal{O}(x^2)

f{displaystyle f}f wächst quadratisch.

f{displaystyle f}f wächst ungefähr auf das Vierfache, wenn sich das Argument verdoppelt.
Einfache Algorithmen zum Sortieren von x{displaystyle x}x Zahlen

Selectionsort



f∈O(xn){displaystyle fin {mathcal {O}}(x^{n})}{displaystyle fin {mathcal {O}}(x^{n})}

f{displaystyle f}f wächst polynomiell.

f{displaystyle f}f wächst ungefähr auf das 2n{displaystyle 2^{n}}2^{n}-Fache, wenn sich das Argument verdoppelt.
„Einfache“ Algorithmen

f∈O(2x){displaystyle fin {mathcal {O}}(2^{x})}f in mathcal{O}(2^x)

f{displaystyle f}f wächst exponentiell.

f{displaystyle f}f wächst ungefähr auf das Doppelte, wenn sich das Argument um 1 erhöht.

Erfüllbarkeitsproblem der Aussagenlogik (SAT) mittels exhaustiver Suche

f∈O(x!){displaystyle fin {mathcal {O}}(x!)}f in mathcal{O}(x!)

f{displaystyle f}f wächst faktoriell.

f{displaystyle f}f wächst ungefähr auf das (x+1){displaystyle (x+1)}(x+1)-Fache, wenn sich das Argument um 1 erhöht.

Problem des Handlungsreisenden (mit exhaustiver Suche)

Die Landau-Notation wird verwendet, um das asymptotische Verhalten bei Annäherung an einen endlichen oder unendlichen Grenzwert zu beschreiben.
Das große O{displaystyle {mathcal {O}}}{mathcal {O}} wird verwendet, um eine maximale Größenordnung anzugeben. So gilt beispielsweise nach der Stirling-Formel für das asymptotische Verhalten der Fakultät



n!=2πn (ne)n(1+O(1n)){displaystyle n!={sqrt {2pi n}}~{left({frac {n}{e}}right)}^{n}left(1+{mathcal {O}}left({frac {1}{n}}right)right)}{displaystyle n!={sqrt {2pi n}}~{left({frac {n}{e}}right)}^{n}left(1+{mathcal {O}}left({frac {1}{n}}right)right)} für n→{displaystyle nto infty }nto infty

und



n!=O(n⋅(ne)n){displaystyle n!={mathcal {O}}left({sqrt {n}}cdot left({frac {n}{e}}right)^{n}right)}n! = mathcal{O} left(sqrt{n} sdot left(frac{n}{e} right)^n right) für n→{displaystyle nto infty }nto infty.

Der Faktor {displaystyle {sqrt {2pi }}}sqrt{2pi} 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



ex=1+x+x2/2+O(x3){displaystyle e^{x}=1+x+x^{2}/2+{mathcal {O}}(x^{3})qquad }e^x=1+x+x^2/2+mathcal{O}(x^3)qquad für x→0{displaystyle xto 0}xto 0,

dass der Absolutbetrag des Approximationsfehlers kleiner als eine Konstante mal x3{displaystyle x^{3}}x^3 für x{displaystyle x}x hinreichend nahe bei Null ist.


Das kleine o{displaystyle {hbox{o}}}hbox{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){displaystyle f(x+h)=f(x)+hf'(x)+{hbox{o}}(h)qquad }f(x+h)=f(x)+hf'(x)+hbox{o}(h)qquad für h→0{displaystyle hto 0}hto 0,

der Fehler bei Approximation durch die Tangente geht also schneller als linear gegen 0{displaystyle 0}{displaystyle 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)=O(g(x)){displaystyle f(x)={mathcal {O}}(g(x))}f(x)=mathcal{O}(g(x)) ist keine Gleichung und keine Seite ist durch die andere bestimmt. Aus f1(x)=O(g(x)){displaystyle f_{1}(x)={mathcal {O}}(g(x))}f_1(x)=mathcal{O}(g(x)) und f2(x)=O(g(x)){displaystyle f_{2}(x)={mathcal {O}}(g(x))}f_2(x)=mathcal{O}(g(x)) folgt nicht, dass f1{displaystyle f_{1}}f_{1} und f2{displaystyle f_{2}}f_{2} gleich sind. Genauso wenig kann man aus f(x)=O(g1(x)){displaystyle f(x)={mathcal {O}}(g_{1}(x))}f(x)=mathcal{O}(g_1(x)) und f(x)=O(g2(x)){displaystyle f(x)={mathcal {O}}(g_{2}(x))}f(x)=mathcal{O}(g_2(x)) schließen, dass O(g1(x)){displaystyle {mathcal {O}}(g_{1}(x))}mathcal{O}(g_1(x)) und O(g2(x)){displaystyle {mathcal {O}}(g_{2}(x))}mathcal{O}(g_2(x)) dieselbe Klasse sind oder die eine in der anderen enthalten ist.


Tatsächlich handelt es sich bei O(g(x)){displaystyle {mathcal {O}}(g(x))}mathcal{O}(g(x)) um eine Menge, welche alle diejenigen Funktionen enthält, welche höchstens so schnell wachsen wie g(x){displaystyle g(x)}g(x). Die Schreibweise f(x)∈O(g(x)){displaystyle f(x)in {mathcal {O}}(g(x))}f(x) in mathcal{O}(g(x)) ist also formal korrekt.


Die Notation mit dem Gleichheitszeichen wie in f=O(g){displaystyle f={mathcal {O}}(g)}f=mathcal{O}(g) wird trotzdem in der Praxis ausgiebig genutzt. Beispielsweise soll der Ausdruck f(n)=h(n)+Θ(g(n)){displaystyle f(n)=h(n)+Theta (g(n))}f(n)=h(n)+Theta(g(n)) besagen, dass es Konstanten c1{displaystyle c_{1}}c_{1} und c2{displaystyle c_{2}}c_{2} gibt, sodass


h(n)+c1⋅g(n)≤f(n)≤h(n)+c2⋅g(n){displaystyle h(n)+c_{1}cdot g(n),leq ,f(n),leq ,h(n)+c_{2}cdot g(n)}h(n)+c_1cdot g(n),leq, f(n),leq, h(n)+c_2cdot g(n)

für hinreichend große n{displaystyle n}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 1x∈o(1x){displaystyle textstyle {tfrac {1}{x}}in {hbox{o}}left({tfrac {1}{sqrt {x}}}right)}textstyle tfrac{1}{x}inhbox{o}left(tfrac{1}{sqrt{x}}right) für x→{displaystyle xto infty }xtoinfty, nicht aber für den einseitigen Grenzwert x↓0{displaystyle xdownarrow 0}xdownarrow 0. Normalerweise wird der betrachtete Grenzwert aber aus dem Zusammenhang klar, sodass hier Mehrdeutigkeiten nur selten auftreten.



Anwendung in der Komplexitätstheorie |







Die Artikel Landau-Symbole#Anwendung in der Komplexitätstheorie, Komplexität (Informatik) und Komplexitätstheorie überschneiden sich thematisch. Hilf mit, die Artikel besser voneinander abzugrenzen oder zusammenzuführen (→ Anleitung). Beteilige dich dazu an der betreffenden Redundanzdiskussion. Bitte entferne diesen Baustein erst nach vollständiger Abarbeitung der Redundanz und vergiss nicht, den betreffenden Eintrag auf der Redundanzdiskussionsseite mit {{Erledigt|1=~~~~}} zu markieren. Accountalive 03:47, 1. Jan. 2010 (CET)

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.


Oft ist es sehr aufwendig oder ganz unmöglich, für ein Problem L{displaystyle L}L eine Funktion fL:w→fL(w){displaystyle f_{L}colon wrightarrow f_{L}(w)}f_Lcolon w rightarrow f_L(w) anzugeben, die allgemein jeder beliebigen Eingabe für ein Problem die zugehörige Anzahl der Rechenschritte (bzw. der Speicherzellen) zuordnet. Daher begnügt man sich in der Regel damit, statt jede Eingabe einzeln zu erfassen, sich lediglich auf die Eingabelänge n=|w|{displaystyle n=|w|}n = |w| zu beschränken. Es ist aber meist ebenfalls zu aufwendig, eine Funktion fL:n→fL(n),n=|w|{displaystyle f_{L}colon nrightarrow f_{L}(n),n=|w|}f_Lcolon n rightarrow f_L(n), n = |w| anzugeben.


Daher hat man die Landau-Notation entwickelt, die sich auf das asymptotische Verhalten der Funktion fL{displaystyle f_{L}}f_L beschränkt. Man betrachtet also, in welchen Schranken sich der Rechenaufwand (der Bedarf an Speicher und Rechenzeit) hält, wenn man die Eingabe vergrößert. Das wichtigste Landau-Symbol ist O{displaystyle {mathcal {O}}}{mathcal {O}} (großer lateinischer Buchstabe „O“), mit dem man obere Schranken angeben kann; untere Schranken sind im Allgemeinen viel schwieriger zu finden. Dabei bedeutet f∈O(g){displaystyle fin {mathcal {O}}(g)}f in mathcal{O}(g) (oft auch f(n)=O(g(n)){displaystyle f(n)={mathcal {O}}(g(n))}f(n)=mathcal{O}(g(n))), dass eine Konstante c>0{displaystyle c>0}c > 0 und ein n0∈N{displaystyle n_{0}in {mathbb {N}}}n_0 in Bbb N existieren, so dass für alle n>n0{displaystyle n>n_{0}}n > n_0 gilt: f(n)≤c⋅g(n){displaystyle f(n)leq ccdot g(n)}f(n) le ccdot g(n). In anderen Worten: Für alle Eingabelängen ist der Rechenaufwand f(n){displaystyle f(n)}f(n) nicht wesentlich größer – d. h. höchstens um einen konstanten Faktor c{displaystyle c}c – als g(n){displaystyle g(n)}g(n).


Dabei ist die Funktion f{displaystyle f}f nicht immer bekannt; als Funktion g{displaystyle g}g wird hingegen meist eine Funktion gewählt, deren Wachstum gut bekannt ist (wie g(x)=x2{displaystyle g(x)=x^{2}}g(x)=x^2 oder g(x)=2x{displaystyle g(x)=2^{x}}g(x)=2^x). Die Landau-Notation ist gerade dazu da, den Rechenaufwand (Platzbedarf) abzuschätzen, wenn es zu aufwendig ist, die genaue Funktion anzugeben, bzw. wenn diese zu kompliziert ist.


Die Landau-Symbole erlauben es dadurch, Probleme und Algorithmen nach ihrer Komplexität in Komplexitätsklassen zusammenzufassen.


In der Komplexitätstheorie lassen sich die verschiedenen Probleme und Algorithmen dann folgendermaßen vergleichen: Man kann für Problemstellungen mit Ω{displaystyle Omega }Omega eine untere Schranke für beispielsweise die asymptotische Laufzeit angeben, mit O{displaystyle {mathcal {O}}}{mathcal {O}} entsprechend eine obere Schranke. Bei O(f){displaystyle {mathcal {O}}(f)}mathcal{O}(f) wird die Form von f{displaystyle f}f (z. B. f(n)=n2{displaystyle f(n)=n^{2}}f(n)=n^2) auch als die Komplexitätsklasse oder Aufwandsmaß bezeichnet (also z. B. quadratisch).


Bei dieser Notation werden, wie die Definitionen der Landau-Symbole zeigen, konstante Faktoren vernachlässigt. Dies ist gerechtfertigt, da die Konstanten zu großen Teilen vom verwendeten Maschinenmodell bzw. bei implementierten Algorithmen von der Qualität des Compilers und diversen Eigenschaften der Hardware des ausführenden Computer abhängig sind. Damit ist ihre Aussagekraft über die Komplexität des Algorithmus sehr beschränkt.



Siehe auch |




  • Grenzwert (Limes)

  • Konvergenzgeschwindigkeit



Quellen |




  1. Earliest Uses of Symbols of Number Theory, 22. September 2006: (Memento vom 19. Oktober 2007 im Internet Archive) According to Wladyslaw Narkiewicz in The Development of Prime Number Theory: “The symbols O(·) and o(·) are usually called the Landau symbols. This name is only partially correct, since it seems that the first of them appeared first in the second volume of P. Bachmann’s treatise on number theory (Bachmann, 1894). In any case Landau (1909a, p. 883) states that he had seen it for the first time in Bachmann’s book. The symbol o(·) appears first in Landau (1909a).”


  2. Godfrey H. Hardy, John E. Littlewood: Some problems of Diophantine approximation. Part II. The trigonometrical series associated with the elliptic ϑ-functions. In: Acta Mathematica. Bd. 37, 1914, S. 193–239, hier S. 225, doi:10.1007/BF02401834.


  3. Godfrey H. Hardy, John E. Littlewood: Contribution to the theory of the Riemann zeta-function and the theory of the distribution of primes. In: Acta Mathematica. Bd. 41, 1916, S. 119–196, doi:10.1007/BF02422942.


  4. ab Donald Knuth: Big Omicron and big Omega and big Theta. SIGACT News, Apr.–June 1976, 18–24 (PDF; 348 kB).


  5. Edmund Landau: Über die Anzahl der Gitterpunkte in gewissen Bereichen. (Vierte Abhandlung). In: Nachrichten von der Gesellschaft der Wissenschaften zu Göttingen. Mathematisch-Physikalische Klasse. 1924, S. 137–150 (Digitalisat (PDF; 437,39 kB)).


  6. Edward C. Titchmarsh: The Theory of the Riemann Zeta-Function. Clarendon Press, Oxford 1951.


  7. Mit dem Kommentar: “Although I have changed Hardy and Littlewood’s definition of Ω{displaystyle Omega }Omega , I feel justified in doing so because their definition is by no mean in wide use, and because there are other ways to say what they want to say in the comparatively rare cases when their definition applies”.



Weblinks |


  • O-Notation auf linux-related.de



Popular posts from this blog

Volksrepublik China

How to test boost logger output in unit testing?

Write to the output between two pipeline