5374 Stimmen

Wie lautet eine einfache englische Erklärung der "Big O"-Notation?

Ich bevorzuge so wenig formale Definitionen wie möglich und einfache Mathematik.

69 Stimmen

Zusammenfassung: Die obere Grenze der Komplexität eines Algorithmus. Siehe auch die ähnliche Frage Big O, wie berechnest/schätzt du das? für eine gute Erläuterung.

7 Stimmen

Die anderen Antworten sind recht gut, nur ein Detail zum Verständnis: O(log n) oder ähnlich bedeutet, dass es von der "Länge" oder "Größe" der Eingabe abhängt, nicht von dem Wert selbst. Das kann schwer zu verstehen sein, ist aber sehr wichtig. Dies ist zum Beispiel der Fall, wenn Ihr Algorithmus bei jeder Iteration Dinge in zwei Teile zerlegt.

1 Stimmen

Wenn dies ein Duplikat von etwas ist, dann ist es das: stackoverflow.com/questions/107165/big-o-for-eight-year-olds

0voto

Franz Kurt Punkte 611

Nur um die Komplexität eines Algorithmus auf schnelle und einfache Weise auszudrücken. Die Big-O-Notation dient dazu, die beste, die schlechteste und die durchschnittliche Zeitkomplexität für einen beliebigen Algorithmus anzugeben. Es handelt sich lediglich um numerische Funktionen über die Größe möglicher Probleminstanzen.

Andererseits ist es sehr schwierig, mit diesen Funktionen präzise zu arbeiten, da sie dazu neigen:

  • Zu viele Unebenheiten haben - Ein Algorithmus wie die binäre Suche läuft normalerweise etwas schneller für Arrays der Größe genau n = 2k 1 (wobei k eine ganze Zahl ist), weil die Array-Partitionen gut funktionieren. Dieses Detail ist nicht besonders wichtig, aber es warnt uns davor, dass die genaue Zeitkomplexitätsfunktion für jeden Algorithmus sehr kompliziert sein kann, mit kleinen Ausschlägen nach oben und unten, wie in Abbildung 2.2 gezeigt.
  • Erfordert zu viele Details, um sie genau zu spezifizieren - Zählung der genauen Anzahl der im schlimmsten Fall ausgeführten RAM-Befehle zu zählen, muss der Algorithmus Algorithmus bis ins Detail eines vollständigen Computerprogramms spezifiziert werden. Außerdem hängt die genaue Antwort von uninteressanten Codierungsdetails ab (hat er z. B. eine Case Anweisung oder verschachtelte ifs?). Die Durchführung einer genauen Worst-Case-Analyse wie T(n) = 12754n2 + 4353n + 834lg2 n + 13546 wäre zweifellos eine sehr schwierige Aufgabe, die uns aber kaum mehr Informationen liefert als die Feststellung, dass "die Zeit quadratisch mit n wächst".

Es erweist sich als viel einfacher, in Form von einfachen Ober- und Untergrenzen zu sprechen von Zeitkomplexitätsfunktionen zu sprechen, wenn man die Big-Oh-Notation verwendet. Das Big Oh vereinfacht unsere Analyse, indem wir Detailstufen ignorieren, die keinen Einfluss auf den Vergleich der Algorithmen auswirken. Die Big-Oh-Notation ignoriert den Unterschied zwischen multiplikativen Konstanten. Die Funktionen f(n)=2n und g(n) = n sind in der Big-Oh-Analyse identisch

https://mimoza.marmara.edu.tr/~msakalli/cse706_12/SkienaDerAlgorithmusDesignMan ual.pdf

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X