Big O notation

Groß O Notation ist eine mathematische Notation, die das beschreibt Verhalten einschränken von a Funktion wenn der Streit tendiert zu einem bestimmten Wert oder Unendlichkeit. Big O ist Mitglied von a Familie der Notationen erfunden von Paul Bachmann,[1] Edmund Landau,[2] und andere, gemeinsam genannt Bachmann -Landau Notation oder Asymptotische Notation. Der Brief O wurde von Bachmann ausgewählt, um für zu stehen Ordnung, bedeutet die Reihenfolge der Annäherung.
Im Informatik, Big o Notation ist gewohnt Klassifizieren Sie Algorithmen Wie ihre Laufzeit oder der Platzanforderungen mit zunehmender Eingangsgröße wachsen.[3] Im analytische Zahlentheorie, Big o Notation wird oft verwendet, um eine Grenze für den Unterschied zwischen einem auszudrücken arithmetische Funktion und eine besser verstandene Annäherung; Ein berühmtes Beispiel für einen solchen Unterschied ist der Restbegriff in der Primzahl Theorem. In vielen anderen Bereichen wird auch eine große O -Notation verwendet, um ähnliche Schätzungen zu liefern.
Big O Notation charakterisiert Funktionen nach ihren Wachstumsraten: Unter Verwendung der gleichen O -Notation können unterschiedliche Funktionen mit derselben Wachstumsrate dargestellt werden. Der Buchstaben O wird verwendet, weil die Wachstumsrate einer Funktion auch als die bezeichnet wird Reihenfolge der Funktion. Eine Beschreibung einer Funktion in Bezug auf die große O -Notation liefert normalerweise nur eine obere Grenze über die Wachstumsrate der Funktion.
Mit großer O -Notation verbunden sind mehrere verwandte Notationen, die die Symbole unter Verwendung der Symbole verwenden o, Ω, ω, und Θ, um andere Arten von Grenzen der asymptotischen Wachstumsraten zu beschreiben.
Formale Definition
Lassen f, die zu geschätzte Funktion, sei a real oder Komplex geschätzte Funktion und lassen gDie Vergleichsfunktion ist eine real geschätzte Funktion. Lassen Sie beide Funktionen auf einigen definiert werden ungebunden Teilmenge des positiven reale Nummern, und Seien Sie streng positiv für alle groß genug Werte von x.[4] Man schreibt
In vielen Kontexten ist die Annahme, dass wir an der Wachstumsrate als Variable interessiert sind x Geht in Unendlichkeit bleibt nicht
In der Informatik ist eine etwas restriktivere Definition üblich: und sind beide Funktionen aus der positive ganze Zahlen zu den nichtnegativen reellen Zahlen; Wenn es positive Ganzzahl -Zahlen gibt M und n0 so dass für alle .[5] Bei Bedarf werden endliche Bereiche (stillschweigend) von ausgeschlossen und Domäne durch Auswahl n0 ausreichend groß. (Zum Beispiel, ist undefiniert bei .))
Beispiel
In typischer Verwendung die O Notation ist asymptotisch, das heißt, sie bezieht sich auf sehr große x. In dieser Umgebung wird der Beitrag der Begriffe, die "am schnellsten" wachsen, schließlich die anderen irrelevant machen. Infolgedessen können die folgenden Vereinfachungsregeln angewendet werden:
- Wenn f(x) ist eine Summe mehrerer Begriffe, wenn es eine mit größter Wachstumsrate gibt, kann sie gehalten und alle anderen weggelassen werden.
- Wenn f(x) ist ein Produkt mehrerer Faktoren, alle Konstanten (Begriffe im Produkt, von denen nicht abhängt x) kann ausgelassen werden.
Zum Beispiel lassen f(x) = 6x4 - 2x3 + 5und nehme an, wir möchten diese Funktion mithilfe verwenden O Notation, um seine Wachstumsrate als zu beschreiben x nähert sich unendlich. Diese Funktion ist die Summe von drei Begriffen: 6x4, –2x3, und 5. Von diesen drei Begriffen ist die mit der höchsten Wachstumsrate die mit dem größten Exponenten als Funktion von x, nämlich 6x4. Jetzt kann man die zweite Regel anwenden: 6x4 ist ein Produkt von 6 und x4 in dem der erste Faktor nicht abhängt x. Der Weglassen dieses Faktors führt zur vereinfachten Form x4. So sagen wir das f(x) ist ein "großes O" von x4. Mathematisch können wir schreiben f(x) = O(x4). Man kann diese Berechnung anhand der formalen Definition bestätigen: let f(x) = 6x4 - 2x3 + 5 und g(x) = x4. Anwenden des formale Definition von oben die Aussage, dass f(x) = O(x4) entspricht seiner Expansion,
Verwendungszweck
Big O Notation hat zwei Hauptanwendungsbereiche:
- Im MathematikEs wird häufig verwendet, um zu beschreiben Wie genau eine endliche Serie einer bestimmten Funktion nähertbesonders bei einem verkürzten Fall Taylor -Serie oder Asymptotische Expansion
- Im Informatik, es ist nützlich in der Analyse von Algorithmen
In beiden Anwendungen die Funktion g(x) Erscheinen innerhalb der O(·) wird in der Regel so einfach wie möglich gewählt, ständige Faktoren weglassen und Begriffe niedrigerer Ordnung.
Es gibt zwei formal enge, aber merklich unterschiedliche Verwendungen dieser Notation:
- unendlich Asymptotik
- infinitesimal Asymptotik.
Diese Unterscheidung ist jedoch nur im Anwendung und nicht im Prinzip - die formale Definition für das "Big O" ist für beide Fälle gleich, nur mit unterschiedlichen Grenzen für das Funktionsargument.[Originalforschung?]
Unendliche Asymptotik

Big o Notation ist nützlich, wenn Analyse von Algorithmen für Effizienz. Zum Beispiel die Zeit (oder die Anzahl der Schritte), die erforderlich sind, um ein Problem der Größe zu vervollständigen n könnte festgestellt werden T(n) = 4n2 - 2n + 2. Wie n wächst groß, die n2 Begriff wird dominieren, damit alle anderen Begriffe vernachlässigt werden können - zum Beispiel wann n = 500, der Begriff 4n2 ist 1000 -mal so groß wie das 2n Begriff. Das Ignorieren des letzteren hätte für die meisten Zwecke einen vernachlässigbaren Einfluss auf den Wert des Ausdrucks. Ferner das Koeffizienten werden irrelevant, wenn wir uns mit einem anderen vergleichen bestellen des Ausdrucks, wie ein Ausdruck, der einen Term enthält n3 oder n4. Selbst wenn T(n) = 1.000.000n2, wenn U(n) = n3Letzteres wird immer einmal den ersteren überschreiten n wächst größer als 1.000.000 (T(1.000.000) = 1.000.0003 = U(1.000.000)). Darüber hinaus hängt die Anzahl der Schritte von den Details des Maschinenmodells ab, auf dem der Algorithmus ausgeführt wird, aber verschiedene Arten von Maschinen variieren typischerweise nur einen konstanten Faktor in der Anzahl der für die Ausführung eines Algorithmus erforderlichen Schritte. Die große O -Notation erfasst also, was übrig bleibt: Wir schreiben auch
oder
Und sagen Sie, dass der Algorithmus hat Reihenfolge von n2 Zeitkomplexität. Das Schild "="soll nicht ausdrücken" ist gleich "in seinem normalen mathematischen Sinne, sondern ein umgangssprachlicherer" ist ", daher wird der zweite Ausdruck manchmal als genauer angesehen (siehe das"Gleiches Zeichen"Diskussion unten), während der erste von einigen als als betrachtet wird Missbrauch der Notation.[6]
Infinitesimale Asymptotik
Big O kann auch verwendet werden, um die zu beschreiben Fehlerbegriff in einer Annäherung an eine mathematische Funktion. Die bedeutendsten Begriffe werden explizit geschrieben, und dann werden die am wenigsten signifikanten Begriffe in einem einzigen Big O-Begriff zusammengefasst. Betrachten Sie zum Beispiel die Exponentialserie und zwei Ausdrücke davon, die gültig sind, wenn x ist klein:
Der zweite Ausdruck (der mit O(x3)) bedeutet den absoluten Wert des Fehlers ex - (1 + x + x2/2) ist höchstens konstante Zeiten |x3| Wenn x ist nah genug bis 0.
Eigenschaften
Wenn die Funktion f kann als endliche Summe anderer Funktionen geschrieben werden, dann bestimmt die am schnellsten wachsende Reihenfolge der Reihenfolge von f(n). Zum Beispiel,
Insbesondere, wenn eine Funktion durch ein Polynom in der in den n, Dann als n neigt dazu Unendlichkeit, man kann ignorieren niedrigerer Ordnung Begriffe des Polynoms. Die Sätze O(nc) und O(cn) sind sehr verschieden. Wenn c ist größer als eins, dann wächst letzteres viel schneller. Eine Funktion, die schneller wächst als nc für jeden c wird genannt Superpolynom. Eine, die langsamer wächst als jede exponentielle Funktion der Form cn wird genannt unterexponentiell. Ein Algorithmus kann eine Zeit erfordern, die sowohl superpolynomisch als auch subtexponentiell ist. Beispiele hierfür sind die am schnellsten bekannten Algorithmen für Ganzzahlfaktorisierung und die Funktion nProtokoll n.
Wir können alle Kräfte von ignorieren n Innerhalb der Logarithmen. Der Satz O(Protokoll n) ist genau das gleiche wie O(Protokoll(nc)). Die Logarithmen unterscheiden sich nur um einen konstanten Faktor (seitdem Protokoll(nc) = c Protokoll n) und so ignoriert die große O -Notation das. In ähnlicher Weise sind Protokolle mit unterschiedlichen konstanten Basen gleichwertig. Andererseits sind Exponentiale mit unterschiedlichen Basen nicht in der gleichen Reihenfolge. Zum Beispiel, 2n und 3n sind nicht der gleichen Reihenfolge.
Das Ändern von Einheiten kann die Reihenfolge des resultierenden Algorithmus beeinflussen oder nicht. Das Ändern von Einheiten entspricht der Multiplizierung der entsprechenden Variablen mit einer Konstante, wo immer sie erscheint. Zum Beispiel, wenn ein Algorithmus in der Reihenfolge von läuft n2, ersetzen n durch CN bedeutet, dass der Algorithmus in der Reihenfolge von läuft c2n2und die große O -Notation ignoriert die Konstante c2. Dies kann geschrieben werden als c2n2 = O (n2). Wenn jedoch ein Algorithmus in der Reihenfolge von läuft 2n, ersetzen n mit CN gibt 2CN = (2c)n. Dies entspricht nicht zu 2n Im Algemeinen. Ändern von Variablen kann auch die Reihenfolge des resultierenden Algorithmus beeinflussen. Zum Beispiel, wenn die Laufzeit eines Algorithmus ist O(n) Wenn die Anzahl gemessen wird n von Ziffern einer Eingangszahl xdann ist seine Laufzeit O(Protokoll x) Bei der Messung der Eingangszahl gemessen x selbst, weil n = O(Protokoll x).
Produkt
Summe
Wenn und dann . Daraus folgt, wenn wenn und dann . Mit anderen Worten, diese zweite Aussage sagt das ist ein konvexer Kegel.
Multiplikation durch eine Konstante
Lassen k Sei eine Konstante ungleich Null. Dann . Mit anderen Worten, wenn , dann
Mehrere Variablen
Groß O (und Little O, ω usw.) können auch mit mehreren Variablen verwendet werden. Big definieren O formally for multiple variables, suppose und are two functions defined on some subset of . Wir sagen
if and only if there exist constants und so dass für alle mit für einige [7] Equivalently, the condition that für einige kann geschrieben werden , wo bezeichnet die Chebyshev norm. For example, the statement
asserts that there exist constants C und M so dass
whenever either oder hält. This definition allows all of the coordinates of to increase to infinity. In particular, the statement
(d. h., ) is quite different from
(d. h., ).
Under this definition, the subset on which a function is defined is significant when generalizing statements from the univariate setting to the multivariate setting. Zum Beispiel wenn und , dann if we restrict und zu , but not if they are defined on .
This is not the only generalization of big O to multivariate functions, and in practice, there is some inconsistency in the choice of definition.[8]
Notationfragen
Gleiches Zeichen
Die Aussage "f(x) ist O(g(x))" as defined above is usually written as f(x) = O(g(x)). Some consider this to be an Missbrauch der Notation, since the use of the equals sign could be misleading as it suggests a symmetry that this statement does not have. Wie de bruijn sagt, O(x) = O(x2) ist wahr aber O(x2) = O(x) ist nicht.[9] Knuth describes such statements as "one-way equalities", since if the sides could be reversed, "we could deduce ridiculous things like n = n2 from the identities n = O(n2) und n2 = O(n2). "[10] In another letter, Knuth also pointed out that "the equality sign is not symmetric with respect to such notations", as, in this notation, "mathematicians customarily use the = sign as they use the word "is" in English: Aristotle is a man, but a man isn't necessarily Aristotle".[11]
For these reasons, it would be more precise to use Notation setzen und schreibe f(x) ∈ O(g(x)) (read as: "f(x) ist ein Element von O(g(x))", oder "f(x) is in the set O(g(x))"), in Gedanken an O(g(x)) as the class of all functions h(x) such that |h(x) | ≤C|g(x) | for some constant C.[10] However, the use of the equals sign is customary.[9][10]
Andere arithmetische Operatoren
Big O notation can also be used in conjunction with other arithmetic operators in more complicated equations. Zum Beispiel, h(x) + O(f(x)) denotes the collection of functions having the growth of h(x) plus a part whose growth is limited to that of f(x). Daher,
expresses the same as
Beispiel
Suppose an Algorithmus is being developed to operate on a set of n Elemente. Its developers are interested in finding a function T(n) that will express how long the algorithm will take to run (in some arbitrary measurement of time) in terms of the number of elements in the input set. The algorithm works by first calling a subroutine to sort the elements in the set and then perform its own operations. The sort has a known time complexity of O(n2), and after the subroutine runs the algorithm must take an additional 55n3 + 2n + 10 steps before it terminates. Thus the overall time complexity of the algorithm can be expressed as T(n) = 55n3 + O(n2). Here the terms 2n + 10 are subsumed within the faster-growing O(n2). Again, this usage disregards some of the formal meaning of the "=" symbol, but it does allow one to use the big O notation as a kind of convenient placeholder.
Mehrere Verwendungen
In more complicated usage, O(·) can appear in different places in an equation, even several times on each side. For example, the following are true for :
Artensett
Big O is typeset as an italicized uppercase "O", as in the following example: .[12][13] Im Tex, it is produced by simply typing O inside math mode. Unlike Greek-named Bachmann–Landau notations, it needs no special symbol. Yet, some authors use the calligraphic variant stattdessen.[14][15]
Bestellungen gemeinsamer Funktionen
Hier finden Sie eine Liste von Funktionen, die bei der Analyse der Laufzeit eines Algorithmus häufig auftreten. In jedem Fall, c is a positive constant and n zunimmt ohne gebunden. Die langsamer wachsenden Funktionen sind im Allgemeinen zuerst aufgeführt.
Notation | Name | Beispiel |
---|---|---|
Konstante | Feststellen, ob eine Binärzahl gerade oder ungerade ist; Berechnung ; Verwenden einer konstanten Größe Nachschlagwerk | |
Doppelte logarithmisch | Durchschnittliche Anzahl von Vergleiche, die ein Element verwendet haben, das verwendet wurde Interpolationssuche in einer sortierten Reihe von gleichmäßig verteilten Werten | |
logarithmisch | Finden eines Elements in einem sortierten Array mit a binäre Suche oder eine ausgewogene Suche Baum sowie alle Operationen in a binomial heap | |
| Polylogarithmic | Die Matrixkettenordnung kann in polylogarithmischer Zeit auf a gelöst werden Parallele Zufallszugriffsmaschine. |
| Bruchkraft | Suche in a K-D-Baum |
linear | Finden eines Elements in einer unsortierten Liste oder in einem unsortierten Array; zwei hinzufügen n-bit Ganzzahlen von Ripple Carry | |
n Protokollstar n | Leistung Triangulation eines einfachen Polygons verwenden Seidels Algorithmus, oder der Union -Find -Algorithmus. Beachten Sie, dass | |
linearithmisch, loglinear, quasilear oder "n Protokoll n" | Ausführen a Schnelle Fourier-Transformation; am schnellsten möglich Vergleichsart; Haufen und Zusammenführen, sortieren | |
quadratisch | Zwei multiplizieren n-Digit -Zahlen von Schulbuchmultiplikation; einfache Sortieralgorithmen wie z. Blasenart, Auswahlsorten und Sortieren durch Einfügen; (schlimmste Fall) gebunden an einigen normalerweise schnelleren Sortieralgorithmen wie z. schnelle Sorte, Shellsort, und Baumart | |
Polynom oder algebraisch | Baum-Adjoining-Grammatik Parsing; maximal Matching zum Bipartitale Grafiken; Finden der bestimmend mit LU -Zersetzung | |
| L-Notation oder Subexponential | Faktoring einer Nummer mit der quadratisches Sieb oder Zahlenfeld Sieb |
| exponentiell | Finden der (exakten) Lösung für die Problem mit reisenden Verkäufern Verwendung Dynamische Programmierung; Bestimmen Sie, ob zwei logische Anweisungen gleichwertig sind Brute-Force-Suche |
Fakultät | Lösen des Problem mit reisenden Verkäufern Über Brute-Force-Suche; Erzeugen aller uneingeschränkten Permutationen von a Poset; Finden der bestimmend mit Laplace -Expansion; Aufzählung Alle Partitionen eines Satzes |
Die Aussage wird manchmal geschwächt zu einfachere Formeln für die asymptotische Komplexität abzuleiten. Für jeden und , ist eine Teilmenge von für jeden , Es kann also als Polynom mit einer größeren Ordnung angesehen werden.
Verwandte asymptotische Notationen
Groß O wird in der Informatik weit verbreitet. Zusammen mit einigen anderen verwandten Notationen bildet es die Familie von Bachmann -Landau -Notationen.
Little-o Notation
Intuitiv die Behauptung "f(x) ist o(g(x))" (lesen "f(x) ist wenig g(x)") bedeutet, dass g(x) wächst viel schneller als f(x). Lass wie zuvor f eine echte oder komplexe Funktion sein und g Eine real geschätzte Funktion, beide auf einer unbegrenzten Untergruppe des Positiven definiert reale Nummern, so dass g(x) ist streng positiv für alle groß genug Werte von x. Man schreibt
Wenn für jede positive Konstante ε Es gibt eine Konstante so dass
Zum Beispiel hat man
- und beide als
Der Unterschied zwischen der Definition der Big-o Notation und die Definition von Little-O ist, dass der erstere zwar für wahr sein muss für mindestens ein Konstante M, Letzteres muss halten für jeder Positive Konstante ε, wie klein.[17] Auf diese Weise macht Little-o Notation a stärkere Aussage als die entsprechende Big-O-Notation: jede Funktion, die wenig ist von O von g ist auch groß-o von g, aber nicht jede Funktion, die groß ist von O von g ist auch wenig von O von g. Zum Beispiel, aber .
Wie g(x) ist ungleich Null oder wird zumindest außerhalb eines bestimmten Punktes ungleich Null, die Beziehung ist äquivalent zu
- (Und das ist in der Tat wie Landau[16] ursprünglich die Little-O-Notation definiert).
Little-o respektiert eine Reihe von arithmetischen Operationen. Zum Beispiel,
- wenn c ist eine Konstante ungleich Null und dann , und
- wenn und dann
Es erfüllt auch a Transitivität Beziehung:
- wenn und dann
Big Omega Notation
Eine andere asymptotische Notation ist , Lesen Sie "Big Omega".[18] Es gibt zwei weit verbreitete und inkompatible Definitionen der Aussage
- wie ,
wo a ist eine reelle Zahl, ∞ oder −∞, wo f und g sind reale Funktionen in einer Nachbarschaft von definiert a, und wo g ist in dieser Nachbarschaft positiv.
Die Hardy -Littlewood -Definition wird hauptsächlich in verwendet analytische Zahlentheorieund die Knuth -Definition hauptsächlich in Computerkomplexitätstheorie; Die Definitionen sind nicht gleichwertig.
Die Hardy -Littlewood -Definition
1914 Godfrey Harold Hardy und John Edensor Littlewood stellte das neue Symbol vor ,[19] was wie folgt definiert wird:
- wie wenn
Daher ist die Negation von .
1916 stellten die gleichen Autoren die beiden neuen Symbole ein und , definiert als:[20]
- wie wenn ;
- wie wenn
Diese Symbole wurden von verwendet von Edmund Landaumit den gleichen Bedeutungen im Jahr 1924.[21] Nach Landau wurden die Notationen nie genau so verwendet; wurde und wurde .
Diese drei Symbole , ebenso gut wie (bedeutet, dass und sind beide zufrieden), werden jetzt derzeit in verwendet analytische Zahlentheorie.[22][23]
Einfache Beispiele
Wir haben
- wie
und genauer gesagt
- wie
Wir haben
- wie
und genauer gesagt
- wie
jedoch
- wie
Die Knuth -Definition
1976 Donald Knuth veröffentlichte ein Papier, um seine Verwendung der zu rechtfertigen -Symbol, um eine stärkere Eigenschaft zu beschreiben.[24] Knuth schrieb: "Für alle Anwendungen, die ich bisher in der Informatik gesehen habe, ist eine stärkere Anforderung ... viel geeigneter." Er definierte
mit dem Kommentar: "Obwohl ich die Definition von Hardy und Littlewood von verändert habe Ich fühle mich berechtigt, dies zu tun, weil ihre Definition keineswegs in großem Umfang verwendet wird und weil es andere Möglichkeiten gibt, zu sagen, was sie in den vergleichsweise seltenen Fällen sagen möchten, wenn ihre Definition gilt. "[24]
Familie von Bachmann -Landau Notationen
Notation | Name[24] | Beschreibung | Formale Definition | Begrenzung der Definition[25][26][27][24][19] |
---|---|---|---|---|
Klein O; Kleine Oh | f wird dominiert von g asymptotisch | |||
Big O; Big OH; Big Omicron | wird oben von oben begrenzt g (bis zu konstantem Faktor) asymptotisch | |||
Big Theta | f wird sowohl oben als auch unten durch begrenzt g asymptotisch | und (Knuth -Version) | ||
Im Auftrag von | f ist gleich g asymptotisch | |||
Big Omega in der Komplexitätstheorie (Knuth) | f ist unten nach unten begrenzt g asymptotisch | |||
Kleine Omega | f dominiert g asymptotisch | |||
Big Omega in der Zahlentheorie (Hardy -Littlewood) | wird nicht dominiert von g asymptotisch |
Die Grenzdefinitionen gehen davon aus für ausreichend groß . Die Tabelle ist (teilweise) in dem Sinne vom kleinsten zum größten sortiert, in dem Sinne, dass (Knuths Version von) auf Funktionen entsprechen auf der realen Linie[27] (die Hardy-Littlewood-Version von entspricht jedoch nicht einer solchen Beschreibung).
Informatik nutzt die großen , Big Theta , wenig , kleiner Omega Und Knuths großer Omega Notationen.[28] Die analytische Zahlentheorie verwendet oft die großen , klein , Hardy -Littlewoods Big Omega (mit oder ohne die +, - oder ± Abschluss) und Notationen.[22] Der kleine Omega Notation wird nicht so oft in der Analyse verwendet.[29]
Verwendung in Informatik
Informell, insbesondere in der Informatik, die große O Notation kann oft etwas anders verwendet werden, um einen Asymptotikum zu beschreiben fest gebunden, wo die Verwendung von großer Theta θ in einem bestimmten Kontext sachlicher angemessener sein könnte. Zum Beispiel bei der Betrachtung einer Funktion T(n) = 73n3 + 22n2 + 58, alle folgenden folgenden sind allgemein akzeptabel, aber engere Grenzen (z. B. die Zahlen 2 und 3 unten) werden normalerweise gegenüber lockereren Grenzen (z. B. Nummer 1 unten) stark bevorzugt.
- T(n) = O(n100)
- T(n) = O(n3)
- T(n) = Θ (n3)
Die äquivalenten englischen Aussagen sind jeweils:
- T(n) wächst asymptotisch nicht schneller als n100
- T(n) wächst asymptotisch nicht schneller als n3
- T(n) wächst asymptotisch so schnell wie n3.
Während alle drei Aussagen wahr sind, sind progressiv mehr Informationen in jeweils enthalten. In einigen Bereichen würde jedoch die große O -Notation (Nummer 2 in den oben genannten Listen) häufiger verwendet als die große Theta -Notation (Elemente, die 3 in den oben genannten Listen nummerieren). Zum Beispiel wenn T(n) repräsentiert die Laufzeit eines neu entwickelten Algorithmus für die Eingangsgröße nDie Erfinder und Benutzer des Algorithmus sind möglicherweise eher geneigt, eine obere asymptotische Verbindung zu setzen, wie lange es dauern wird, um zu laufen, ohne eine explizite Aussage über die untere asymptotische Grenze zu machen.
Andere Notation
In ihrem Buch Einführung in Algorithmen, Cormen, Leiserson, Rivest und Stein Betrachten Sie die Funktionen der Funktionen f was befriedigt
In einer korrekten Notation kann dieser Satz zum Beispiel aufgerufen werden O(g), wo
Die Autoren geben an, dass die Verwendung des Gleichstellungsbetreibers (=) zur Bezeichnung der festgelegten Mitgliedschaft anstelle des festgelegten Mitgliedsbetreibers (∈) ein Notationsmissbrauch ist, dies hat jedoch Vorteile.[6] In einer Gleichung oder Ungleichheit steht die Verwendung von asymptotischer Notation für eine anonyme Funktion im Satz O(g), was Begriffe niedrigerer Ordnung beseitigt und hilft, beispielsweise in Essentialstörungen in Gleichungen zu reduzieren:[31]
Erweiterungen zu den Bachmann -Landau -Notationen
Eine andere Notation, die manchmal in der Informatik verwendet wird, ist õ (lesen Soft-o): f(n) =Õ(g(n)) ist eine Abkürzung für f(n) = O(g(n) Protokollk n) für einige k.[32] Einige Autoren schreiben o* Für den gleichen Zweck.[33] Im Wesentlichen ist es eine große Notation, die logarithmische Faktoren ignoriert, da die Wachstumseffekte einer anderen Super-Logarithmischen Funktion auf eine Explosion der Wachstumspreis für große Eingangsparameter hinweisen, die für die Vorhersage einer schlechten Laufzeitleistung wichtiger sind als die feineren -Point-Effekte, die durch den logarithmischen Wachstumsfaktor (en) beigetragen werden. Diese Notation wird häufig verwendet, um das "Nitpicking" innerhalb von Wachstumsraten zu vermeiden, die als zu eng für die vorliegenden Angelegenheiten (seit Logk n ist immer o(nε) für jede Konstante k und alle ε > 0).
Auch die L Notation, definiert als
ist praktisch für Funktionen, die zwischeneinander liegen Polynom und exponentiell bezüglich .
Die Verallgemeinerung auf Funktionen, die Werte in jedem nehmen Normed Vektorraum ist unkompliziert (ersetzen absolute Werte durch Normen), wo f und g Müssen Sie ihre Werte nicht im selben Raum nehmen. Eine Verallgemeinerung auf Funktionen g Werte in jedem nehmen Topologische Gruppe ist auch möglich. Der "Begrenzungsprozess" x→xo kann auch durch Einführung eines willkürlichen Einführung verallgemeinert werden Filterbasis, d.h. Netze f undg. Das o Notation kann verwendet werden, um zu definieren Derivate und Differenzierbarkeit in ganz allgemeinen Räumen und auch (asymptotische) Äquivalenz von Funktionen,
Welches ist ein Äquivalenzbeziehung und eine restriktivere Vorstellung als die Beziehung "f ist θ (g) "von oben. (Es reduziert sich auf Lim f / g = 1 if f und g sind positive real geschätzte Funktionen.) Zum Beispiel 2x ist θ (x), aber 2x − x ist nicht o(x).
Geschichte (Bachmann -Landau-, Hardy- und Vinogradov -Notationen)
Das Symbol O wurde zuerst vom Zahlen -Theoretiker eingeführt Paul Bachmann 1894 im zweiten Band seines Buches Analytische Zahlentheorie (""analytische Zahlentheorie").[1] Der Zahlen -Theoretiker Edmund Landau adoptierte es und wurde daher inspiriert, 1909 die Notation O vorzustellen;[2] Daher werden beide jetzt Landau -Symbole genannt. Diese Notationen wurden in den 1950er Jahren für die asymptotische Analyse in der angewandten Mathematik verwendet.[34]Das Symbol (im Sinne "ist keine o von ") wurde 1914 von Hardy und Littlewood eingeführt.[19] Hardy und Littlewood stellten auch 1916 die Symbole vor ("richtig und ("links"),[20] Vorläufer der modernen Symbole ("ist nicht kleiner als ein kleines o von") und ("ist nicht größer als ein kleines o von"). Somit werden die Omega -Symbole (mit ihren ursprünglichen Bedeutungen) manchmal auch als "Landau -Symbole" bezeichnet. Diese Notation wurde mindestens seit den 1950er Jahren häufig in der Zahlentheorie verwendet.[35] In den 1970er Jahren wurde das Big O in Informatik in der Informatik populär gemacht Donald Knuth, der die verwandte Theta -Notation einführte und eine andere Definition für die Omega -Notation vorschlug.[24]
Landau benutzte nie die großen Theta- und kleinen Omega -Symbole.
Hardys Symbole waren (in Bezug auf die Moderne O Notation)
- und
(Hardy jedoch nie definiert oder verwendet die Notation , noch , wie es manchmal berichtet wurde). Hardy stellte die Symbole vor und (sowie einige andere Symbole) in seinem 1910er -Gebiet "Infinity Orders" und nutzte sie nur in drei Papieren (1910–1913). In seinen fast 400 verbleibenden Papieren und Büchern benutzte er die Landau -Symbole o und o konsequent.
Hardys Notation wird nicht mehr verwendet. Andererseits in den 1930er Jahren,[36] der russische Zahlen -Theoretiker Ivan Matveyevich Vinogradov stellte seine Notation vor, was zunehmend in der Zahlentheorie anstelle der verwendet wurde Notation. Wir haben
und häufig werden beide Notationen im selben Papier verwendet.
Das Big-O steht ursprünglich für "Order of" ("Ordnung", Bachmann 1894) und ist somit ein lateinischer Brief. Weder Bachmann noch Landau nennen es jemals "Omicron". Das Symbol war viel später (1976), der von Knuth als Kapital angesehen wurde Omicron,[24] Wahrscheinlich in Bezug auf seine Definition des Symbols Omega. Die Ziffer Null sollte nicht benutzt werden.
Siehe auch
- Asymptotische Expansion: Näherung der Funktionen, die die Formel von Taylor verallgemeinert
- Asymptotisch optimaler Algorithmus: Eine Ausdruck
- Big O in Wahrscheinlichkeitsnotation: Op, op
- Begrenzen Sie überlegen und begrenzen minderwertig: Eine Erläuterung einiger der in diesem Artikel verwendeten Grenznotation
- Master -Theorem (Analyse von Algorithmen): Zur Analyse von rekursiven Algorithmen mit großer O-Notation
- Nachbin's Theorem: Eine genaue Methode der Begrenzung Komplexe Analyse Funktionen so, dass die Konvergenzdomäne von Integrale Transformationen kann angegeben werden
- Annäherungsaufträge
- Computerkomplexität der mathematischen Operationen
Referenzen und Notizen
- ^ a b Bachmann, Paul (1894). Analytische Zahlentheorie [Analytische Zahlentheorie] (auf Deutsch). Vol. 2. Leipzig: Teubner.
- ^ a b Landau, Edmund (1909). Handbuch der Lehrre der Verteilung der Primzahlen [Handbuch zur Theorie der Verteilung der Primzahlen] (auf Deutsch). Leipzig: B. G. Teubner. p. 883.
- ^ Mohr, Austin. "Quantum Computing in der Komplexitätstheorie und -theorie der Berechnung" (PDF). p. 2. Abgerufen 7. Juni 2014.
- ^ Landau, Edmund (1909). Handbuch der Lehrre der Verteilung der Primzahlen [Handbuch zur Theorie der Verteilung der Primzahlen] (auf Deutsch). Leipzig: B.G. Teubner. p. 31.
- ^ Michael Sipser (1997). Introduction to the Theory of Computation. Boston/MA: PWS Publishing Co. Hier: def.7.2, S.227
- ^ a b Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L. (2009). Einführung in Algorithmen (3. Aufl.). Cambridge/Ma: MIT Press. p.45. ISBN 978-0-262-53305-8.
Da θ(g(n)) Ist ein Satz, wir könnten schreiben "f(n) ∈ θ(g(n)) "um das anzuzeigen f(n) ist Mitglied von θ(g(n)). Stattdessen werden wir normalerweise schreiben f(n) = θ(g(n)) den gleichen Begriff ausdrücken. Sie könnten verwirrt sein, weil wir Gleichheit auf diese Weise missbrauchen, aber wir werden später in diesem Abschnitt sehen, dass dies seine Vorteile hat.
- ^ Cormen, Thomas; Leiserson, Charles; Rivest, Ronald; Stein, Clifford (2009). Einführung in Algorithmen (Dritter Aufl.). MIT. p.53.
- ^ Howell, Rodney. "Auf asymptotischer Notation mit mehreren Variablen" (PDF). Abgerufen 2015-04-23.
- ^ a b N. G. de Bruijn (1958). Asymptotische Methoden in der Analyse. Amsterdam: Nordholland. S. 5–7. ISBN 978-0-486-64221-5.
- ^ a b c Graham, Ronald; Knuth, Donald; Patashnik, Oren (1994). Betonmathematik (2 ed.). Lesen, Massachusetts: Addison -Wesley. p. 446. ISBN 978-0-201-55802-9.
- ^ Donald Knuth (Juni - Juli 1998). "Lehren Sie Kalkül mit Big O" (PDF). Mitteilungen der American Mathematical Society. 45 (6): 687. (Unbewertete Version)
- ^ Donald E. Knuth, Die Kunst der Computerprogrammierung. Vol. 1. Fundamentalalgorithmen, dritte Ausgabe, Addison Wesley Longman, 1997. Abschnitt 1.2.11.1.
- ^ Ronald L. Graham, Donald E. Knuth und Oren Patashnik, Betonmathematik: Eine Grundlage für Informatik (2. Aufl.), Addison-Wesley, 1994. Abschnitt 9.2, p. 443.
- ^ Sivaram Ambikasaran und Eric Darve, an Schneller direkter Löser für teilweise hierarchisch halbtrennbare Matrizen, J. Scientific Computing 57 (2013), Nr. 3, 477–501.
- ^ Saket Saurabh und Meirav Zehavi, -Max-kut: an -Time -Algorithmus und ein Polynomkern, Algorithmus 80 (2018), Nr. 12, 3844–3860.
- ^ a b Landau, Edmund (1909). Handbuch der Lehrre der Verteilung der Primzahlen [Handbuch zur Theorie der Verteilung der Primzahlen] (auf Deutsch). Leipzig: B. G. Teubner. p. 61.
- ^ Thomas H. Cormen et al., 2001, Einführung in Algorithmen, zweite Ausgabe, ch. 3.1
- ^ Cormen TH, Leiserson CE, Rivest RL, Stein C (2009). Einführung in Algorithmen (3. Aufl.). Cambridge, Mass.: MIT Press. p. 48. ISBN 978-0-262-27083-0. OCLC 676697295.
- ^ a b c Hardy, G. H.; Littlewood, J. E. (1914). "Einige Probleme der diophantinischen Approximation: Teil II. Die mit den elliptischen θ-Funktionen assoziierten trigonometrischen Reihe". Acta Mathematica. 37: 225. doi:10.1007/bf02401834.
- ^ a b G. H. Hardy und J. E. Littlewood, «Beitrag zur Theorie der Riemann-Zeta-Funktion und der Theorie der Verteilung der Primzahlen», Acta Mathematica, vol. 41, 1916.
- ^ E. Landau, "über Die Anzahl der Gitterpunkte in Gewissen Berchenen. IV." NAChr. Gesell. Wiss. Gött. Mathematik. KL. 1924, 137–150.
- ^ a b Aleksandar Ivić. The Riemann Zeta-Funktion, Kapitel 9. John Wiley & Sons 1985.
- ^ Gérald Tenenbaum, Einführung in die analytische und probabilistische Zahlentheorie, Kapitel I.5. American Mathematical Society, Providence RI, 2015.
- ^ a b c d e f Knuth, Donald (April - Juni 1976). "Big Omicron und Big Omega und Big Theta" (PDF). Sigact News. 8 (2): 18–24. doi:10.1145/1008328.1008329. S2CID 5230246.
- ^ Balcázar, José L.; Gabarró, Joaquim. "Nichteinheitliche Komplexitätsklassen, die durch untere und obere Grenzen angegeben sind" (PDF). Rairo - Theoretische Informatik und Anwendungen - Informatique Théorique ET -Anwendungen. 23 (2): 180. ISSN 0988-3754. Abgerufen 14. März 2017.
- ^ Kucker, Felipe; Belgisser, Peter (2013). "A.1 Big Oh, Little Oh und andere Vergleiche". Zustand: Die Geometrie numerischer Algorithmen. Berlin, Heidelberg: Springer. S. 467–468. doi:10.1007/978-3-642-38896-5. ISBN 978-3-642-38896-5.
- ^ a b Vitányi, Paul; Meertens, Lambert (April 1985). "Big Omega gegen die wilden Funktionen" (PDF). ACM Sigact News. 16 (4): 56–59. Citeseerx 10.1.1.694.3072. doi:10.1145/382242.382835. S2CID 11700420.
- ^ Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2001) [1990]. Einführung in Algorithmen (2. Aufl.). MIT Press und McGraw-Hill. S. 41–50. ISBN 0-262-03293-7.
- ^ Zum Beispiel wird es weggelassen in: Hildebrand, A.J. "Asymptotische Notationen" (PDF). Abteilung für Mathematik. Asymptotische Methoden in der Analyse. Math 595, Herbst 2009. Urbana, IL: Universität von Illinois. Abgerufen 14. März 2017.
- ^ Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L. (2009). Einführung in Algorithmen (3. Aufl.). Cambridge/Ma: MIT Press. p. 47. ISBN 978-0-262-53305-8.
Wenn wir nur eine asymptotische Obergrenze haben, verwenden wir O-NOTATION. Für eine bestimmte Funktion g(n), wir bezeichnen durch O(g(n)) (ausgesprochen "big-oh von g von n"oder manchmal nur" oh von g von n") Die Funktionssatz O(g(n)) = { f(n): Es gibt positive Konstanten c und n0 so dass 0 ≤ f(n) ≤ CG(n) für alle n ≥ n0}
- ^ Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L. (2009). Einführung in Algorithmen (3. Aufl.). Cambridge/Ma: MIT Press. p.49. ISBN 978-0-262-53305-8.
Wenn die asymptotische Notation allein (dh nicht innerhalb einer größeren Formel) auf der rechten Seite einer Gleichung (oder Ungleichheit) steht, wie in n = o (n)2), wir haben das gleiche Zeichen bereits definiert, um die Mitgliedschaft festzulegen: n ∈ O (n2). Im Allgemeinen interpretieren wir im Allgemeinen jedoch als Stehen für eine anonyme Funktion, die wir nicht nennen können. Zum Beispiel die Formel 2n2 + 3n + 1 = 2n2 + θ(n) bedeutet, dass 2n2 + 3n + 1 = 2n2 + f(n), wo f(n) ist eine Funktion im Satz θ(n). In diesem Fall lassen wir uns f(n) = 3n + 1, was tatsächlich in ist θ(n). Die Verwendung von asymptotischer Notation auf diese Weise kann dazu beitragen, in Essymption und Unordnung in einer Gleichung zu beseitigen.
- ^ Einführung in Algorithmen. Cormen, Thomas H. (dritter Aufl.). Cambridge, Mass.: MIT Press. 2009. p.63. ISBN 978-0-262-27083-0. OCLC 676697295.
{{}}
: CS1 Wartung: Andere (Link) - ^ Andreas Björklund und Thore Husfeldt und Mikko Koivisto (2009). "Setzen Sie die Partitionierung durch Inklusion-Exklusion" (PDF). Siam Journal über Computing. 39 (2): 546–563. Siehe Abschnitt.2.3, S. 551.
- ^ Erdelyi, A. (1956). Asymptotische Expansionen. ISBN 978-0-486-60318-6.
- ^ E. C. Titchmarsh, Die Theorie der Riemann Zeta-Funktion (Oxford; Clarendon Press, 1951)
- ^ Siehe zum Beispiel "eine neue Schätzung für G(n) In Waring's Problem "(Russian). Doklady Akademii Nauk SSSR 5, Nr. 5-6 (1934), 249–253. Übersetzt in Englisch in: ausgewählter Werke / Ivan Matveevič Vinogradov; vorbereitet vom mathematischen Institut der Akademie des Wissenschaftlers von Steklov, der vom Wissenschaftler der Akademie der Wissenschaftswissenschaften vorbereitet ist von der UdSSR anlässlich seines 90. Geburtstages. Springer-Verlag, 1985.
Weitere Lektüre
- Hardy, G. H. (1910). Unendlichkeitsbefehle: 'Infinitärcalcül' von Paul du Bois-Reymond. Cambridge University Press.
- Knuth, Donald (1997). "1.2.11: Asymptotische Darstellungen". Grundalgorithmen. Die Kunst der Computerprogrammierung. Vol. 1 (3. Aufl.). Addison-Wesley. ISBN 978-0-201-89683-1.
- Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2001). "3.1: Asymptotische Notation". Einführung in Algorithmen (2. Aufl.). MIT Press und McGraw-Hill. ISBN 978-0-262-03293-3.
- Sipser, Michael (1997). Introduction to the Theory of Computation. PWS Publishing. pp.226–228. ISBN 978-0-534-94728-6.
- Avigad, Jeremy; Donnelly, Kevin (2004). Formalisierung der Notation in Isabelle/Hol (PDF). Internationale gemeinsame Konferenz über automatisiertes Denken. doi:10.1007/978-3-540-25984-8_27.
- Black, Paul E. (11. März 2005). Black, Paul E. (Hrsg.). "Big-o Notation". Wörterbuch von Algorithmen und Datenstrukturen.US Nationales Institut für Standards und Technologie. Abgerufen 16. Dezember, 2006.
- Black, Paul E. (17. Dezember 2004).Black, Paul E. (Hrsg.). "Little-o Notation". Wörterbuch von Algorithmen und Datenstrukturen.US Nationales Institut für Standards und Technologie. Abgerufen 16. Dezember, 2006.
- Black, Paul E. (17. Dezember 2004).Black, Paul E. (Hrsg.). "Ω". Wörterbuch von Algorithmen und Datenstrukturen.US Nationales Institut für Standards und Technologie. Abgerufen 16. Dezember, 2006.
- Black, Paul E. (17. Dezember 2004).Black, Paul E. (Hrsg.). "ω". Wörterbuch von Algorithmen und Datenstrukturen.US Nationales Institut für Standards und Technologie. Abgerufen 16. Dezember, 2006.
- Black, Paul E. (17. Dezember 2004).Black, Paul E. (Hrsg.). "Θ". Wörterbuch von Algorithmen und Datenstrukturen.US Nationales Institut für Standards und Technologie. Abgerufen 16. Dezember, 2006.
Externe Links
- Wachstum der Sequenzen - OEIS (Online -Enzyklopädie von Ganzzahlsequenzen) Wiki
- Einführung in asymptotische Notationen[Permanent Dead Link]
- Landau -Symbole
- Big-o Notation-wofür ist es gut
- Big O Notation im einfachen Englisch erklärt
- Ein Beispiel für eine große O -Genauigkeit des zentral geteilten Differenzschemas für das erste Derivat Archiviert 2018-10-07 bei der Wayback -Maschine
- Eine sanfte Einführung in die Algorithmuskomplexitätsanalyse