Was ist Big and O in der Big O-Notation? Ich habe die Definitionen gelesen und weiß nicht, was O als "oh" ausgesprochen wird. Zum Beispiel - Ich verstehe, dass O (n) die Komplexität eines linearen Algorithmus ist, wobei n die Anzahl der Operationen sein könnte. aber was ist ein O ?
complexity
big-o
Karen15
quelle
quelle
Antworten:
Nun, meine Vermutung wäre Ordnung, was mit Wikipedia übereinstimmt .
Edit: (meine eigene (Verbesserungen erwünscht)) Übersetzung aus dem deutschen Wikipedia-Artikel
quelle
"Groß" bedeutet "Kapital" und "O" bedeutet Ordnung, wie in "Ordnung der Komplexität". So benannt wegen der Konvention, "Reihenfolge der Komplexität" als O (f (x)) zu schreiben, z. B. mit einem Großbuchstaben "O" oder einem "Big O". Niemand spricht viel darüber, weil "jeder" versteht, was es bedeutet, und wenn man es versteht, kann man die Komplexitätsanalyse nicht wirklich verstehen.
Für das Verständnis der Komplexitätsanalyse halte ich den von topgun_ivard geposteten Link für einen guten Ausgangspunkt. Ein gutes Einführungslehrbuch über Datenstrukturen oder Algorithmen könnte ebenfalls hilfreich sein.
quelle
O steht für Ordnung.
Es wurde ursprünglich vom deutschen Mathematiker Paul Bachmann im zweiten Band seiner 1894 erschienenen Bücher über Zahlentheorie (S. 401) vorgestellt . Nach einer Formel, in der er zuerst die Notation verwendet, stellt er fest:
Meine Übersetzung:
Im Gegensatz zu dem, was andere gesagt haben, deutet nichts in seinem Text darauf hin, dass dies tatsächlich ein Omikron der griechischen Hauptstadt ist. Er verwendet viele griechische und lateinische Schriftzeichen, so dass es eigentlich keine Möglichkeit gibt, dies zu sagen. In Anbetracht seiner fortgesetzten Verwendung von "Ordnung n log n " usw. im Text ist es klar, dass es auf jeden Fall für "Ordnung" steht, aber das könnte die Verwendung von "Ordnung" noch offen lassen ein schicker Grieche O.
Der Ursprung des Omikrons ist jedoch eher ein Retronym von Donald Knuth, der die Symbole Omega (Ω) und Theta (Θ) für verwandte Konzepte in seiner Arbeit Big Omicron und Big Omega und Big Theta oder möglicherweise Hardy und Littlewood who eingeführt hat ein Omega-Symbol früher eingeführt.
quelle
Ich mag diesen Artikel und hoffe, dass Sie ihn auch nützlich finden!
Zitiert einen Abschnitt aus dem Artikel:
Große griechische Buchstaben
Big O wird oft missbraucht. Big O oder Big Oh ist eigentlich die Abkürzung für Big Omicron. Es repräsentiert die Obergrenze der asymptotischen Komplexität. Wenn also ein Algorithmus O (n log n) ist, existiert eine Konstante c, so dass die obere Grenze cn log n ist.
Θ (n log n) (Big Theta) ist enger gebunden. Ein solcher Algorithmus bedeutet, dass es zwei Konstanten c1 und c2 gibt, so dass c1n log n <f (n) <c2n log n ist.
Ω (n log n) (Big Omega) besagt, dass der Algorithmus eine Untergrenze von cn log n hat.
Es gibt andere, aber diese sind die häufigsten und Big O ist die häufigste von allen. Eine solche Unterscheidung ist normalerweise unwichtig, aber es ist erwähnenswert. Die richtige Notation ist schließlich die richtige Notation.
Was ist Big O?
Die Big-O-Notation versucht, die relative Komplexität eines Algorithmus zu beschreiben, indem die Wachstumsrate auf die Schlüsselfaktoren reduziert wird, wenn der Schlüsselfaktor gegen unendlich tendiert. Aus diesem Grund werden Sie häufig den Ausdruck asymptotische Komplexität hören. Alle anderen Faktoren werden dabei ignoriert. Es ist eine relative Darstellung der Komplexität.
Was ist nicht groß O?
Big O ist kein Leistungstest eines Algorithmus. Es ist auch insofern fiktiv oder abstrakt, als es dazu neigt, andere Faktoren zu ignorieren. Die Komplexität des Sortieralgorithmus wird normalerweise auf die Anzahl der zu sortierenden Elemente als Schlüsselfaktor reduziert. Dies ist in Ordnung, berücksichtigt jedoch nicht Themen wie:
Speichernutzung: Ein Algorithmus benötigt möglicherweise viel mehr Speicher als ein anderer. Abhängig von der Situation kann dies alles von völlig irrelevant bis kritisch sein; Vergleichskosten: Es kann sein, dass das Vergleichen von Elementen sehr kostspielig ist, was potenziell jeden realen Vergleich zwischen Algorithmen verändert. Kosten für das Verschieben von Elementen: Das Kopieren von Elementen ist in der Regel kostengünstig, dies muss jedoch nicht der Fall sein. etc.
quelle
f (x) ist groß-oh von g (x)
Es ist eine mathematische Methode, um das Wachstum von Funktionen vorherzusagen.
Sei f und g Funktionen von der Menge der ganzen Zahlen oder der Menge oder reellen Zahlen bis zur Menge der reellen Zahlen. Wir sagen, dass f (x) O (g (x)) ist, wenn es Konstanten C und k gibt, so dass | f (x) | <= C | g (x) | wo x> k.
Sie würden dies lesen als "f (x) ist groß-oh von g (x)"
Das große O wird manchmal nach dem deutschen Mathematiker Edmund Landau als Landau-Symbol bezeichnet. Ich denke nicht, dass es für etwas anderes steht. Sie haben auch die ähnlichen Big-Omega- und Big-Theta-Notationen. Die Symbole sind so willkürlich wie immer, wenn Sie Theta verwenden, um die Winkel in Ihren Dreiecken zu kennzeichnen, die in Ihrer Klasse für planare Geometrie der Highschool verwendet wurden.
Correction @ back2dos hat eine zufriedenstellende Erklärung für das O in Bezug auf die Bestellung geliefert. Gut gemacht. Siehe seine Antwort.
Donald Knuth wandte es an, um die Komplexität von Computerprogrammen zu untersuchen.
Wenn Sie den Grund für die Verwendung der Notation herausfinden möchten, sollten Sie lesen
"Analytische Zahlentheorie" von Paul Bachmann aus dem Jahr 1892
quelle
EDIT: Stellt sich heraus, dass ich falsch liege. Trotzdem hilft dies vielleicht jemandem, seine Symbole gerade zu halten, sodass ich sie nicht löschen werde.
Eigentlich ist es nicht der lateinische Buchstabe Oh , es ist der griechische Buchstabe Omicron . Leider haben diese beiden die exakt gleiche Glyphe, so dass mit der Zeit die Originalversion beschädigt wurde, und jetzt ist es nur noch Oh .
Die Wahl des Symbols hat eigentlich keine besondere Bedeutung, sondern wurde als Gedächtnisstütze gewählt :
Das ist es. Es hat keine wirkliche Bedeutung, es ist nur ein Wortspiel, wenn Sie so wollen, damit Sie sich besser an die Semantik erinnern können.
quelle
UPDATE: Ich versuche, meine Antwort zu bereinigen und genauer zu sein
Die Big-O-Notation ist eine Möglichkeit, Funktionen anhand ihrer Wachstumsraten zu charakterisieren. Das O steht für Ordnung (erste Ordnung ist n zweite Ordnung ist n-Quadrat usw.). Und wenn ich mich nicht irre, wäre dies das Worst-Case-Szenario für eine Methodenlaufzeit (oder -speicherung) mit N Elementen. Je größer die Reihenfolge, desto schlechter die Leistung der Methode.
Zum Beispiel ist das Nachschlagen eines Datensatzes in einem Array O (1) (ich glaube an eine Implementierung von Hash-Tabellen, die auch der Fall ist). Das Hinzufügen eines Werts am Ende einer Linkliste wäre O (N), da Sie erst ans Ende der Liste gelangen müssen, bevor Sie das Element usw. hinzufügen können.
Diese Antwort sollte etwas korrekter sein als mein erster Versuch :)
quelle