Lassen Sie mich mit einer Empfehlung beginnen: Behandeln Sie die Landau-Notation so, wie Sie die Rundung behandeln sollten: Runde selten, Runde spät. Wenn Sie etwas genaueres als Wissen , verwenden Sie es, bis Sie mit allen Berechnungen fertig sind, und Landauify am Ende.O(.)
Lassen Sie uns diesen Missbrauch der Notation durchgehen¹. Wie würden wir so etwas wie interpretieren ? Wir sollten durch seine Definition von innen nach außen ersetzen . Also bekommen wirO.h∈O(f+O(g))O
∃g′∈O(g).h∈O(f+g′)
und dann
∃g′∈O(g).∃d>0.∀n.h(n)≤d(f(n)+g′(n))
das ist äquivalent zu
∃c>0.∃d>0.∀n.h(n)≤d(f(n)+cg(n)) .
Als sicher² wir, dass dies äquivalent zu ; Der Genauigkeitsverlust wird von ohnehin ignoriert .d(f(n)+cg(n))≤cd(f(n)+g(n))h∈O(f+g)O
Was ist mit anderen Kombinationen, sagen wir ? Wenn wir hier dasselbe versuchen, bekommen wirh∈O(f+Ω(g))
∃g′∈Ω(g).h∈O(f+g′) .
Aber das ist eine Tautologie: ist sicherlich oben durch etwas willkürlich Großes begrenzt. Daher ist es nicht sinnvoll, Ober- und Untergrenzen auf diese Weise zu kombinieren.h
- O(.) Und die anderen Landau-Symbole ordnen Funktionen Funktionsklassen zu. Das Füttern einer Funktionsklasse ist nicht sofort sinnvoll.
- Zumindest wenn wir nur positive Funktionen berücksichtigen, die wir sicher annehmen können, wenn wir über Laufzeiten sprechen. Ich bin mir nicht sicher, ob das im Allgemeinen funktioniert.