Wenn Sie strenge Beweise wollen, ist das folgende Lemma oft nützlich bzw. hilfreich. handlicher als die Definitionen.
c=limn→∞f(n)g(n)
- c=0 ⟺f∈o(g) ,
- c∈(0,∞)⟺f∈Θ(g) und
- c=∞ ⟺f∈ω(g) .
Damit sollten Sie in der Lage sein, die meisten Funktionen der Algorithmusanalyse zu ordnen¹. Als Übung beweisen Sie es!
Natürlich muss man die Limits entsprechend berechnen können. Einige nützliche Tricks, um komplizierte Funktionen in grundlegende zu zerlegen, sind:
- Drücken Sie beide Funktionen als und vergleichen Sie die Exponenten. Wenn ihr Verhältnis zu oder tendiert , tut dies auch der ursprüngliche Quotient.e…0∞
Allgemeiner: Wenn Sie eine konvexe, stetig differenzierbare und streng zunehmende Funktion so dass Sie Ihren Quotienten als umschreiben könnenh
f(n)g(n)=h(f∗(n))h(g∗(n)) ,
mit undg∗∈Ω(1)
limn→∞f∗(n)g∗(n)=∞ ,
dann
limn→∞f(n)g(n)=∞ .
Sehen Sie hier für einen strengen Beweis dieser Regel (in deutscher Sprache).
Betrachten Sie die Fortsetzung Ihrer Funktionen über den Real. Sie können jetzt die L'Hôpital-Regel anwenden. Achten Sie auf die Bedingungen²!
- Schauen Sie sich das diskrete Äquivalent Stolz – Cesàro an .
Wenn Fakultäten auftauchen, verwenden Sie die Stirling-Formel :
n!∼2πn−−−√(ne)n
Es ist auch nützlich, einen Pool grundlegender Beziehungen zu führen, die Sie einmal nachweisen und häufig verwenden, wie z.
Logarithmen wachsen langsamer als Polynome, dh
(logn)α∈o(nβ) für alle .α,β>0
Reihenfolge der Polynome:
nα∈o(nβ) für alle .α<β
Polynome wachsen langsamer als Exponentiale:
nα∈o(cn) für alle und .αc>1
Es kann vorkommen, dass das obige Lemma nicht anwendbar ist, da das Limit nicht existiert (z. B. wenn Funktionen oszillieren). Betrachten Sie in diesem Fall die folgende Charakterisierung der Landau-Klassen mit Limes superior / inferior :
Mit wircs:=lim supn→∞f(n)g(n)
- 0≤cs<∞⟺f∈O(g) und
- cs=0⟺f∈o(g) .
Mit wirci:=lim infn→∞f(n)g(n)
- 0<ci≤∞⟺f∈Ω(g) und
- ci=∞⟺f∈ω(g) .
Außerdem,
- 0<ci,cs<∞⟺f∈Θ(g)⟺g∈Θ(f) und
- ci=cs=1⟺f∼g .
Überprüfen Sie hier und hier, ob Sie durch meine Notation verwirrt sind.
¹ Hinweis: Mein Kollege hat eine Mathematica-Funktion geschrieben, die dies für viele Funktionen erfolgreich ausführt, sodass das Lemma die Aufgabe wirklich auf mechanische Berechnung reduziert.
² Siehe auch hier .