Ich bevorzuge so wenig formale Definitionen wie möglich und einfache Mathematik.
Antwort
Zu viele Anzeigen?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
- See previous answers
- Weitere Antworten anzeigen
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
18 Stimmen
Es gibt eine Vorlesung über die Komplexität der Algorithmen in der Vorlesung 8 des MIT-Kurses "Introduction to Computer Science and Programming". youtube.com/watch?v=ewd7Lf2dr5Q Es ist nicht ganz einfaches Englisch, aber es gibt schöne Erklärungen mit Beispielen, die leicht verständlich sind.
19 Stimmen
Big O ist eine Schätzung der schlechtesten Leistung einer Funktion unter der Annahme, dass der Algorithmus die maximale Anzahl von Iterationen durchführt.
1 Stimmen
Ich denke, Sie werden das finden: youtube.com/watch?v=6Ol2JbwoJp0 Video hilfreich.
3 Stimmen
So können wir die Effizienz unserer Lösung mit anderen Lösungen vergleichen. Einfache Zeittests sind aufgrund externer Variablen (z. B. Hardware und Problemgröße (z. B. Anzahl der zu sortierenden Objekte)) nicht möglich. Big-O ermöglicht es uns, die Vergleiche zu standardisieren.
38 Stimmen
Big-O notation explained by a self-taught programmer
1 Stimmen
Siehe dies Vorführung .
2 Stimmen
Die Big-O-Notation hat eigentlich nichts mit Algorithmen und Komplexität zu tun.
1 Stimmen
Wenn Sie wirklich etwas über die Landau-Notation lernen wollen, empfehle ich Ihnen die Seite Informatik , beginnend mit unsere Referenzfragen . Wir geben zwar nicht vor, ein mathematisches Konzept genau erklären zu können und in "einfachem Englisch", wir werden Ihnen auch keine Unwahrheiten beibringen. (Hoffentlich.)
0 Stimmen
Erklärung in einem Satz: "Eine Funktion wächst nicht schneller als eine andere".
0 Stimmen
In diesem Beitrag wird die Komplexität anhand eines konkreten Beispiels erläutert: mohalgorithmsorbit.blogspot.com/2021/01/
0 Stimmen
@HaraldSchilly "hängt von der "Länge" oder "Größe" der Eingabe ab, nicht auf den Wert selbst "? Könnten Sie mir das bitte genauer erklären?