Die Big O-Notation bietet eine obere Schranke für eine Funktion, während Big Theta eine enge Schranke bietet. Ich finde jedoch, dass die Big O-Notation in der Regel (und informell) unterrichtet und verwendet wird, wenn sie wirklich Big Theta bedeutet.
zB "Quicksort ist O (N ^ 2)" kann zu der viel stärkeren Aussage "Quicksort ist Θ (N ^ 2)" werden
Obwohl die Verwendung von Big O technisch korrekt ist, wäre eine häufigere Verwendung von Big Theta nicht aussagekräftiger und würde zu weniger Verwirrung führen? Gibt es einen historischen Grund, warum dieses Big O häufiger verwendet wird?
Wikipedia- Hinweise:
Informell, insbesondere in der Informatik, darf die Big-O-Notation häufig missbraucht werden, um eine asymptotische enge Bindung zu beschreiben, bei der die Verwendung der Big-Theta-Notation in einem bestimmten Kontext sachgerechter sein könnte.
Antworten:
Denn bei der Analyse der Performance interessiert Sie in der Regel nur der Worst-Case. Daher ist es ausreichend, die Obergrenze zu kennen.
Wenn es für eine bestimmte Eingabe schneller als erwartet ausgeführt wird, ist dies kein kritischer Punkt. Es sind meist vernachlässigbare Informationen.
Einige Algorithmen sind, wie @Peter Taylor feststellte, überhaupt nicht eng gebunden. Siehe QuickSort zum Beispiel O (n ^ 2) und Omega (n).
Außerdem sind enge Grenzen oft schwieriger zu berechnen.
Siehe auch:
quelle
Ein Grund ist, dass es viele Fälle gibt, in denen Θ einfach nicht bekannt ist. Zum Beispiel ist die Matrixmultiplikation O (n ^ 2.376), es ist jedoch keine enge Bindung bekannt. Sicher, soweit ich das beurteilen kann, gibt es eine enge Grenze für die Matrixmultiplikation, aber wir kennen ihren Wert nicht.
quelle