O (·) ist keine Funktion, wie kann also eine Funktion gleich dieser sein?


47

Ich verstehe vollkommen, was große Notation bedeutet. Mein Problem ist, wenn wir sagen , wobei die Laufzeit eines Algorithmus bei Eingabe der Größe .OT(n)=O(f(n))T(n)n

Ich verstehe die Semantik davon. Aber und sind zwei verschiedene Dinge.T(n)O(f(n))

T(n)O ( f ( n ) ) T ( n ) O ( f ( n ) ) O ( f ( n ) ) ist eine exakte Zahl, aber ist keine Funktion, die eine Zahl ausspuckt. Technisch können wir also nicht sagen, dass gleich , wenn man fragt Sie, was ist der Wert von , was wäre Ihre Antwort? Es gibt keine Antwort.O(f(n))T(n) O(f(n))O(f(n))


7
Einfach ausgedrückt bedeutet das = Symbol in nicht "gleich". Die Frage beruht auf dieser Annahme. Haben Sie eine Quelle gefunden, die dies besagt? T(n)=O(f(n))
ShreevatsaR

20
Dies ist nur eine der vielen Möglichkeiten, wie die mathematische Notation missbraucht wird :(
technical_difficulty

13
Wenn 64 eine Zahl ist, wie kann ich dann 64 sein?
TaW

7
Wikipedia ist immer ein guter Ort, um nach einer Antwort zu suchen - es gibt einen Abschnitt , in dem genau dieser Punkt besprochen wird.
Dukeling

3
@mathreadler Es gibt keinen Algorithmus. Zu denken, dass Big-O über einen Algorithmus spricht, ist wie zu denken, dass Dezimalzahlen über die Größe eines Menschen sprechen. big-O ist eine Notation, um über die Wachstumsrate mathematischer Funktionen zu sprechen. Dezimal ist eine Notation für Zahlen. Die mathematische Funktion könnte, muss aber nicht die Laufzeit eines Algorithmus sein; Die Zahl könnte, muss aber nicht die Größe eines Menschen sein.
David Richerby

Antworten:


107

Genau genommen ist eine Menge von Funktionen. Der Wert von ist also einfach die Menge aller Funktionen, die asymptotisch nicht schneller wachsen als . Die Notation ist nur ein herkömmlicher Weg, um zu schreiben .O(f(n))O ( f ( n ) ) f ( n ) T ( n ) = O ( f ( n ) ) T ( n ) O ( f ( n ) )O(f(n))f(n)T(n)=O(f(n))T(n)O(f(n))

Beachten Sie, dass dies auch einige Einschränkungen der Notation verdeutlicht . Zum Beispiel schreiben wir, dass , aber wir schreiben niemals, dass . Um Donald Knuth (Die Kunst der Computerprogrammierung, 1.2.11.1) zu zitieren:O(1/2)n2+n=O(n2)O(n2)=(1/2)n2+n

Die wichtigste Überlegung ist die Idee der Einweggleichheit . [...] Wenn es sich bei und um Formeln handelt, die die Notation enthalten, bedeutet die Notation , dass die Menge von Funktionen mit ist in der Menge enthalten, die mit .α(n)β(n)Oα(n)=β(n)α(n)β ( n )β(n)


3
Ich verstehe den zweiten Absatz nicht. Ich stimme zu, wenn wir schreiben , meinen wir . Aber sollte nicht als Mengengleichheit interpretiert werden, da macht keinen Sinn (es ist ein Tippfehler!). Wenn ja, warum sagen Sie aber Im zweiten Absatz? f · O ( f ( n ) ) O ( f ( n ) ) = O ( g ( n ) ) O ( f ( n ) ) · O ( g ( n ) ) O ( n 2 ) O ( n 3 ) O (f=O(f(n))fO(f(n))O(f(n))=O(g(n))O(f(n))O(g(n))O(n2)O(n3)O(n3)O(n2)
Alex Vong

7
denn wenn beide gesetzt sind, interpretieren wir es alsO(n2)O(n3)
RiaD

1
Ich würde Wörter an Stellen verwenden, an denen sie tatsächlich benötigt werden. Für Berechnungen wird normalerweise nur einseitiges Dingsbums benötigt
RiaD

11
Ich habe O (n ^ 2) = O (n ^ 3) noch nie in einem Text oder einer anderen ernsthaften Quelle gesehen. Kannst du eins zitieren?
Yakk

1
Wenn wir strenger sein wollen, sind und n 3 keine Funktionen, f und n n 3 sind. Aber "aus irgendeinem Grund" habe ich niemanden gesehen, der n n 2O ( n n 3 ) in einen Text geschrieben hat, der für Menschen gedacht ist. f(n)n3fnn3nn2O(nn3)
JiK

43

O ist eine Funktion

O:(NR)P(NR)fO(f)
dh es akzeptiert eine Funktionund liefert eine Menge von Funktionen, die die asymptotische Grenze von (höchstens)teilen. Genau genommen lautet die korrekte Schreibweise also oder kurzes aber es ist in Mathematik, Naturwissenschaften und CS üblich, nur zu verwenden Eine Variable irgendwo im Ausdruck, die angibt, dass SieFunktionen des Argumentsauf beiden Seitenberücksichtigen. Also istganz gut. ff
(nT(n))O(nf(n))
TO(f)
nT(n)O(f(n))T(n)=O(f(n))ist aber ziemlich falsch, wie Sie vermutet haben. Es wird jedoch sehr häufig verwendet, denken Sie also unbedingt daran, was die Leute meinen, wenn sie dies schreiben.

Ich würde davon abraten, jemals schreiben , aber die Meinungen sind unterschiedlich .T(n)=O(f(n))


11
OT(n)=O(f(n) ist eine völlig übliche Verwendung der Notation, daher ist die Behauptung, dass sie falsch ist, nicht hilfreich. (Wie IMO behauptet, ist eine Funktion; dies ist technisch wahr, aber nicht wirklich hilfreich.) um darüber nachzudenken.)O
David Richerby

38
@DavidRicherby einige Dinge sind völlig Standard, sollten es aber nicht sein. ist ein Beispiel. Sicher, es ist immer noch gut zu wissen, was die Leute damit meinen (wie es das OP bereits tut), aber wie ist es nicht hilfreich, zu bestätigen, dass diese Notation technisch falsch ist? Warum würdest du es benutzen? Auch wenn die -Version nicht mehrdeutig ist, ist die -Version nicht mehr eindeutig, und je mehr Leute zu dieser Notation wechseln, desto besser. Es ist immer besser, sich an das zu halten, was mathematisch Sinn macht, es sei denn, es ist viel umständlicher zu schreiben. ist perfekt lesbar und leicht zu schreiben. = T(n)=O(f(n))=
links um 10.12.18

1
@leftaroundabout Sie haben einen Finger darauf gelegt, wenn Sie sagen: "Es sei denn, es ist viel umständlicher zu schreiben". Das Arbeiten mit ist in der Tat viel umständlicher, außer in dem speziellen Fall, in dem keine Begriffe auf dem LHS und genau eine auf der RHS. (Siehe z. B. Arbeiten mit Asymptotikern wie dieser meiner Antworten und vergleichen Sie diese mit der Antwort, die alle Vorteile der O () - Notation aufgibt und auf einer ungerechtfertigten Annahme beruhen muss.) Der Zweck der Notation besteht darin, das Denken zu unterstützen viel mehr zu gewinnen hier durch Ändern der Bedeutung von "="O ( )O()
ShreevatsaR

2
@ ShreevatsaR nicht sicher, wohin Sie hier gehen. Ich habe den verlinkten Beitrag nicht sehr gründlich gelesen, aber TBH Ihr Beitrag dort scheint am verworrensten zu sein und benötigt eine Reihe von Regeln (etwas obskur, "ich kann diese derzeit nicht in einem Buch finden") , während die anderen Antworten geben leicht die Lösung aus ersten Grundsätzen. Was hindert Sie daran, nur die Zeichen "missbraucht" durch und ersetzen ? Egr ; =
links um 12.12.18 Uhr

1
@ShreevatsaR Ich stimme zu, dass der Aufbau eines Satzes von Regeln / Theoremen der Sinn der Theorie ist. Am wichtigsten ist es jedoch, für jede Regel klar zu formalisieren, wann genau sie gilt . Die IMO-Typentheorie ist dafür der beste Rahmen, aber naive Mengen sind in der Praxis nahe genug. Naive „Gleichungen“ algebraischer Ausdrücke mit / / Symbolen sind es jedoch nicht. - "Sie lassen dich an den Formalismus der Mengenlehre denken" - Mission erfüllt! - "was nicht zum menschlichen Denken passt ..." - nicht wahr? In der Praxis ist es genau das, was Sie mit der Typentheorie tun, wenn Sie über eine Beziehung sprechen. o ΘOoΘ
links um 13.12.18 Uhr

13

Formal ist eine Menge von Funktionen so dass für eine Konstante und alle groß genug  . Die pedantisch genaueste Schreibweise wäre also . Die Verwendung von anstelle von  ist jedoch völlig normal, und bedeutet nur . Dies ist im Grunde genommen nie mehrdeutig, da wir die Menge so gut wie nie manipulieren .O(f(n))gg(n)kf(n)knT(n)O(f(n))=T(n)=O(f(n))T(n)O(f(n))O(f(n))

In gewissem Sinne bedeutet die Verwendung von Gleichheit, dass "eine Funktion so dass für alle ausreichend großen  ", und dies bedeutet, dass Sie Dinge wie schreiben können . Man beachte, dass dies viel genauer ist als zB oder .O(f(n))gg(n)fg(n)nf(n)=3n+O(logn)f(n)=Θ(n)f(n)=O(n+logn)


Sie können auch schreiben . Ich gebe jedoch zu, dass es praktisch sein kann, eine mehrstufige Berechnung mit abzuschließen . f ( n ) = = 3 n + O ( log n )f(n)3nO(logn)f(n)==3n+O(logn)
links um 10.12.18 Uhr

Die Neuanordnung funktioniert nur in eigenständigen Anweisungen. Es ist viel häufiger in der Mitte von Berechnungen, wo solche Dinge nicht funktionieren und wo mehrere Funktionen zusammen in der Landau-Notation absorbiert werden. (Sachen wie ). f(x)=ex(e2x+O(x))=ex+o(1)
David Richerby

4
Ich finde solche Berechnungen irritierend. Diese Gleichheitszeichen sind nicht mehr bidirektional. Ich bin mir nicht sicher, ob es ein größeres Problem beim Schreiben von . Ich nehme an, das ist auch ein Missbrauch der Notation. im Grunde sind Überlastung Sie die = Operator während ich Lift bevorzugen + und für den Betrieb auch auf Sätze. f(x)ex(e2x+O(x))ex+o(1)=+
links um 10.12.18 Uhr

Eine Möglichkeit wäre, für die Menge der asymptotischen Funktionen und für ein unbestimmtes Element dieser Menge leicht unterschiedliche Notationen zu verwenden , z. B. O ( h ) . Wenn also f - g O ( h ) ist , kann man f = g + O ( h ) anstelle des mehrdeutigen f = g + O ( h ) schreiben . Sie können dann problemlos schreiben O ( h )O(h)O(h)fgO(h)f=g+O(h)f=g+O(h) . Andere mögliche Bezeichnungen für ein unbestimmtes Element von O ( h ) könnte seine ˙ O ( h ) ,...O(h)=fgO(h)O˙(h)O^(h)
Michel fioc

11

Prolog: Die Big- Notation ist ein klassisches Beispiel für die Kraft und Mehrdeutigkeit einiger Notationen als Teil der Sprache, die der menschliche Verstand liebt. Egal wie viel Verwirrung es verursacht hat, es bleibt die Wahl der Notation, um die Ideen zu vermitteln, die wir leicht identifizieren und effizient vereinbaren können.O

Ich verstehe vollkommen, was große Notation bedeutet. Mein Problem ist, wenn wir sagen , wobei die Laufzeit eines Algorithmus bei Eingabe der Größe .OT(n)=O(f(n))T(n)n

Entschuldigung, aber Sie haben kein Problem, wenn Sie die Bedeutung der Big- Notation verstehen .O

Ich verstehe die Semantik davon. Aber und sind zwei verschiedene Dinge. ist eine exakte Zahl, aber ist keine Funktion, die eine Zahl ausspuckt. Technisch können wir also nicht sagen, dass gleich , wenn man fragt Sie, was ist der Wert von , was wäre Ihre Antwort? Es gibt keine Antwort.T(n)O(f(n))T(n)O(f(n))T(n) O ( f ( n ) ) O ( f ( n ) ) O(f(n))O(f(n))

Wichtig ist die Semantik . Was wichtig ist, ist, wie sich die Menschen leicht auf eine der genauen Interpretationen einigen können, die uns interessierendes asymptotisches Verhalten oder Zeit- oder Raumkomplexität beschreiben. Die vorgegebene genaue Interpretation / Definition von ist, wie aus Wikipedia übersetzt ,T(n)=O(f(n))

T ist eine reelle oder komplexe Wertfunktion und ist eine reelle Wertfunktion, die beide auf einer unbegrenzten Teilmenge der reellen positiven Zahlen definiert sind, so dass für alle ausreichend großen Werte von streng positiv ist . Für alle ausreichend großen Werte von ist der Absolutwert von höchstens ein positives konstantes Vielfaches von . Das heißt, es gibt eine positive reelle Zahl und eine reelle Zahl so dassff(n)nnT(n)f(n)Mn0

 for all nn0,|T(n)|Mf(n) for all nn0.

Bitte beachten Sie, dass diese Interpretation als Definition gilt . Alle anderen Interpretationen und Verstehen, die Ihnen auf verschiedene Weise sehr helfen können, sind zweitrangig und folgerichtig. Jeder (zumindest jeder hier) stimmt dieser Interpretation / Definition / Semantik zu. Solange Sie diese Interpretation anwenden können, sind Sie wahrscheinlich die meiste Zeit gut. Entspannen Sie sich und fühlen Sie sich wohl. Sie möchten nicht zu viel darüber nachdenken, genauso wenig wie Sie über einige der Unregelmäßigkeiten in Englisch, Französisch oder den meisten natürlichen Sprachen nachdenken. Verwenden Sie einfach die Notation nach dieser Definition.

T(n)O ( f ( n ) ) T ( n ) O ( f ( n ) ) O ( f ( n ) ) ist eine exakte Zahl, aber ist keine Funktion, die eine Zahl ausspuckt. Technisch können wir also nicht sagen, dass gleich , wenn man fragt Sie, was ist der Wert von , was wäre Ihre Antwort? Es gibt keine Antwort.O(f(n))T(n) O(f(n))O(f(n))

In der Tat konnte es keine Antwort geben, da die Frage schlecht gestellt ist. bedeutet keine exakte Zahl. Es soll für eine Funktion stehen, deren Name und deren formaler Parameter (was in gewisser Weise an das in gebunden ist ). Genauso richtig und umso mehr, wenn wir schreiben . Wenn die Funktion ist, die auf abbildet , und die Funktion ist, die auf abbildet , ist es auch üblich, oder zu schreibenT(n)Tnnf(n)T=O(f)Tnn2fnn3f(n)=O(n3)n2=O(n3)O. Bitte beachten Sie auch, dass die Definition nicht besagt, dass eine Funktion ist oder nicht. Es heißt nicht, dass die linke Seite der rechten Seite überhaupt gleich sein soll! Sie haben zu Recht den Verdacht, dass Gleichheitszeichen keine Gleichheit im eigentlichen Sinne bedeuten , bei der Sie beide Seiten der Gleichheit vertauschen können und die durch ein gleichwertiges Verhältnis gesichert sein sollte. (Ein weiteres, noch berühmteres Beispiel für den Missbrauch des Gleichheitszeichens ist die Verwendung des Gleichheitszeichens, um die Zuweisung in den meisten Programmiersprachen zu bedeuten, anstatt in einigen Sprachen umständlicher zu sein.)O:=

Wenn wir uns nur um diese eine Gleichheit kümmern (ich fange an, auch die Sprache zu missbrauchen. Es ist keine Gleichheit , es ist jedoch eine Gleichheit, da die Notation ein Gleichheitszeichen enthält oder sie als eine Art Gleichheit ausgelegt werden könnte ), ist diese Antwort erledigt.T(n)=O(f(n))

Die Frage geht jedoch tatsächlich weiter. Was bedeutet das zum Beispiel ? Diese Gleichheit wird von der obigen Definition nicht erfasst. Wir möchten eine andere Konvention einführen, die Platzhalter-Konvention . Hier ist die vollständige Erklärung der Platzhalterkonvention, wie in Wikipedia angegeben .f(n)=3n+O(logn)

Bei komplizierterer Verwendung kann an verschiedenen Stellen in einer Gleichung auftreten, sogar mehrmals auf jeder Seite. Zum Beispiel gilt Folgendes für .O()n

(n+1)2=n2+O(n)
(n+O(n1/2))(n+O(logn))2=n3+O(n5/2)
nO(1)=O(en)

Die Bedeutung solcher Anweisungen ist wie folgt: Für alle Funktionen, die jedes auf der linken Seite erfüllen, gibt es einige Funktionen, die jedes auf der rechten Seite erfüllen , so dass alle diese Funktionen in die Gleichung eingesetzt werden macht die beiden Seiten gleich. Zum Beispiel bedeutet die obige dritte Gleichung: "Für jede Funktion gibt es eine Funktion so dass . "O()O()f(n)=O(1)g(n)=O(en)nf(n)=g(n)

Möglicherweise möchten Sie hier ein weiteres Beispiel für die Platzhalterkonvention in Aktion suchen.

Sie haben vielleicht bemerkt, dass ich die satztheoretische Erklärung der großen Anmerkung nicht verwendet habe. Alles, was ich getan habe, ist, auch ohne diese satztheoretische Erklärung wie " ist ein Satz von Funktionen" zu zeigen, dass wir die große Anmerkung immer noch vollständig und perfekt verstehen können . Wenn Sie diese satztheoretische Erklärung nützlich finden, fahren Sie trotzdem fort.OO(f(n))O

Sie können den Abschnitt in „asymptotischer Notation“ überprüfen von CLRS für ein detailliertere Analyse und Nutzungsmuster für die Familie von Notationen für asymptotisches Verhalten, wie groß , , kleines , kleine , mit mehrere Variablen Nutzung und vieles mehr. Der Wikipedia-Eintrag ist auch eine ziemlich gute Referenz.ΘΩoω

Schließlich gibt es einige inhärente Mehrdeutigkeiten / Kontroversen bei der großen Notation mit mehreren Variablen, 1 und 2 . Vielleicht möchten Sie zweimal überlegen, wenn Sie diese verwenden.O


10

Im Algorithm Design Manual [1] finden Sie einen Absatz zu diesem Thema:

Die Big-Oh-Notation [einschließlich , und ] liefert beim Vergleich von Funktionen einen groben Begriff der Gleichheit. Es ist etwas irritierend, einen Ausdruck wie , aber seine Bedeutung kann immer durch Zurückkehren zu den Definitionen in Bezug auf obere und untere Schranken aufgelöst werden. Es ist vielleicht am aufschlussreichsten, das "=" hier so zu lesen, dass es " eine der Funktionen ist, die es gibt ". Es ist klar, dass eine der Funktionen ist, die .OΩΘn2=O(n3)n 2 O ( n 3 )n2O(n3)

Genau genommen (wie in David Richerbys Kommentar erwähnt ) gibt Ihnen einen groben Begriff der Gleichheit, einen groben Begriff von kleiner oder gleich und und einen groben Begriff von größer oder gleich -zu.ΘOΩ

Trotzdem stimme ich Vincenzos Antwort zu : Sie können einfach als eine Menge von Funktionen und das Symbol = als ein gesetztes Mitgliedssymbol interpretieren .O(f(n))


[1] Skiena, SS The Algorithm Design Manual (Zweite Ausgabe). Springer (2008)


7

Normalerweise können Anweisungen wie als interpretiert werden,

f=O(g)
there exists hO(g) such that f=h.

Dies wird nützlicher in Kontexten wie den von David Richerby erwähnten, in denen wir schreiben, um zu bedeuten, dass es so dass .f(n)=n3+O(n2)g(n)O(n2)f(n)=n2+g(n)

Ich finde diese existenzielle Quantifikatorinterpretation so nützlich, dass ich versucht bin, Dinge wie zu schreiben

f(n)O(n3)

was einige noch ungeheuerlicher finden werden, aber es ist nur eine platzsparende Art zu schreiben, "es gibt so dass ".Cf(n)Cn3


Jeff Edmonds verwendet in seinem Lehrbuch .
Theodore Norvell

2

Viele andere Plakate haben erklärt, dass das Big-O als eine Menge von Funktionen bezeichnet werden kann und dass die Notation angibt, dass (als Funktion von ) in der steht set bezeichnet mit (wiederum unter Berücksichtigung von als Parameter). Im englischen Text schreiben Sie möglicherweise lieber " ist in ", um Verwirrung zu vermeiden.n2=O(n3)n2nO(n3)nn2O(n3)

Obwohl die Notation verwirrend sein kann, kann es hilfreich sein, sich das und das als Teile derselben Notation vorzustellen, dh so zu behandeln, als wäre es ein Symbol. Es unterscheidet sich kaum von dem, was wir tun, wenn wir in einer Programmiersprache schreiben : Zwei benachbarte Symbole werden in unseren Augen eins.O==O>=

Ein weiterer heikler Aspekt der Notation ist, dass die Variable, die als Parameter fungiert, nicht explizit identifiziert oder gebunden wird , wie dies in einer Funktionsdeklaration oder einer Lambda-Notation der Fall wäre. Dies kann besonders verwirrend sein, wenn zwei Variablen beteiligt sind, wie in oder noch mehr in einem Ausdruck wie da impliziert werden kann, dass eine Konstante ist. Andererseits sind einige Algorithmen in einem Big-O-Set komplex, das sich technisch nach zwei Variablen unterscheidet, während in der Praxis einer davon feststeht. Darüber hinaus kann es mehrere sinnvolle Möglichkeiten geben, die Komplexität eines Algorithmus zu messen. Wenn die Eingabe beispielsweise eine Zahl ist, lautet Ihr Algorithmus möglicherweise im WertO(mn)O(nc)cO(n)nder Zahl aber in der Bitgröße der Zahl. (Obwohl in der Komplexitätstheorie per se die Bitgröße normalerweise der richtige Parameter ist.)O(2b)

All dies bedeutet, dass das Big-O eine informelle, von Ungenauigkeit geprägte Notation ist und dass Sie häufig einen anderen Kontext verwenden müssen, um zu verstehen, was ein Autor sagt.

Wie immer vermeiden Sie am besten Verwechslungen in Ihren eigenen Schriften, und ich schlage vor, das vermeiden und stattdessen oder das englische "… ist in…" zu verwenden.=OO


" " wird normalerweise als " Quadrat ist groß-O von Würfeln" oder " Quadrat ist Ordnung Würfeln" gelesen. n2=O(n3)nnnn
David Richerby

2

Gestatten Sie mir, um den mehrfach angesprochenen Punkt zu unterstreichen, aus NG de Bruijn, Asymptotic Methods in Analysis , zu zitieren :

O0<x<O(1)+O(x2)f(x)+g(x)f(x)=O(1)(0<x<)g(x)=O(x2)(0<x<)x1O(1)=O(1)+O(x2)x1O(1)O(1)+O(x2). Manchmal ist die linke Seite der Beziehung keine Klasse, sondern eine einzelne Funktion [...]. Dann bedeutet die Beziehung, dass die Funktion links ein Mitglied der Klasse rechts ist.

=O(x)=O(x2)(x)O(x2)=O(x)(x)=

=

Trotzdem ist die Notation von Bender und Orszag (von Advanced Mathematical Methods für Wissenschaftler und Ingenieure ) viel weniger verwirrend und es lohnt sich, darüber nachzudenken. In Bezug auf eine Grenze sagen wir:

f(x)g(x)(xx0)

fg

limxx0f(x)g(x)=1

und:

f(x)g(x)(xx0)

(ausgesprochen " ist im Vergleich zu vernachlässigbar ") bedeutetfg

limxx0f(x)g(x)=0

Aber ich nehme an, der Vorteil der Big-Oh-Notation ist, dass der konstante Faktor willkürlich ist. (Und für die Little-Oh-Notation ist der konstante Faktor, was auch immer Sie tun.)


0

Ich ging dies auf Stapelüberlauf durch ; Während die vielleicht richtigste Antwort auf OPs bereits oben angegeben wurde (Äquivalenzklassen, nachfolgend als Nr. 1 wiedergegeben), ist hier eine vollständige Antwort:

  1. Mengen : " " bedeutet , dh Zugehörigkeit zu einer Menge, zB "der durch asymptotisch begrenzte Satz von Funktionen ". Dies ist die mathematische Standardbehandlung der asymptotischen Notation, die mir bekannt ist. Diese Menge hat eine Teilreihenfolge, die einer Teilmenge von entspricht, z. B. (einige Mengen können unvergleichbar sein; DAG; siehe Polynomhierarchie für eine interessante Beispiel).f=O()fO(){12x2,(5x2x+5),2.5x,...}x2O(x2)<O(x3)=O(x3+x)

    Hinweis. " " bedeutet . Es ist jedoch zu beachten, dass es sich im Gegensatz zum oben Gesagten um eine Äquivalenzbeziehung handelt (offensichtlich ist die naive Beziehung X wie in iff keine Äquivalenzklasse, da nicht impliziert ; die triviale Äquivalenzrelation "beides ein Element von " ist vielleicht amüsant zu konzipieren, aber mathematisch uninteressant, während bei die multiplen Äquivalenzklassen den Funktionsraum aufteilen).f=Θ()fΘ()f X gfO(g)fO(g)gf(g)O(g)Θ

  2. Platzhalterausdruck : Sie können die Definition von rückwärts konstruieren : Nach einem Radius der Gleichgültigkeit in der Nähe des Ursprungs (dh es gibt ein , so dass für alle ...) gibt es ein bandbegrenzte konstante Vielfache von , die begrenzen (dh ) ... und so können wir dies rückwärts konstruieren, um lediglich einen Ausdruck zu ersetzen mit dem Ausdruck , das heißt, ersetzen Sie ihn durch die Grenze selbst plus einem Fehlerbegriff, den wir nicht interessieren (ein Fehlerbegriff, der durch fürfΘ(g)x0x>x0gfLOWg(x)f(x)HIGHg(x)O(g)k1g(x)+err(x)0err(x)k2g(x)x>x0und potentiell unbegrenzt für ) ..... wenn wir also zum Beispiel sagen, könnten wir äquivalent sagen wobei dieser Fehlerterm . Wir würden das nie aufschreiben, weil es ein bisschen albern ist. Aber ich glaube, dass es legitim sein kann, dies so zu sehen und den Begriff der Gleichheit zu wahren. (Ich befürworte hier die richtige Behandlung von negativen Anzeichen, was wichtig sein kann.)xx0f=2Θ(x2)f(x)=2k1x2+err(x)0err(x)k2x2

    ein. Ändern Sie das obige für anstelle vonOΘ


Teil 1 scheint nun zu funktionieren. Aber die Behandlung des Fehlerbegriffs in 2 ist immer noch falsch. Sie können als für einen positiven Ausdruck schreiben . Und wenn Sie schreiben wollen, sagen Sie dann glaube ich nicht, dass es wirklich wahr ist, zu sagen, dass Sie den Fehlerbegriff "nicht interessieren", da Fehlerterm wäre , was sehr viel größer als . k 1 x 3 + e r r E r r x 2 = 2 x + e r r 2 x - x 2 x 2x2k1x3+errerrx2=2x+err2xx2x2
David Richerby

0

Eine genauere Antwort wäre, wenn wir sagen, dass eine Funktion f 'big O of function g' ist. (Dh x ^ 2 + x ist O (x ^ 2)) Wir sagen, dass f (x) <C * g (x) für einen Wert C und k ist, wobei x> k ist. Dies bedeutet, dass g eine Obergrenze für das Verhalten von f ist.

Beispiel

x ^ 2 + 10x 4 ist O (x ^ 2 + x), das selbst O (x ^ 2) ist

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.