Was ist Theta (eng gebunden) unter Bezugnahme auf diese Antwort ?
Omega ist die untere Grenze, ganz verstanden, die minimale Zeit, die ein Algorithmus benötigen kann. Und wir wissen, dass Big-O für die Obergrenze steht, dh die maximale Zeit, die ein Algorithmus benötigen kann. Aber ich habe keine Ahnung von der Theta.
Die Θ-Notation (Theta-Notation) wird als eng gebunden bezeichnet, da sie genauer ist als die O-Notation und die Ω-Notation (Omega-Notation).
Wenn ich faul wäre, könnte ich sagen, dass die binäre Suche in einem sortierten Array O (n 2 ), O (n 3 ) und O (2 n ) ist, und ich wäre in jedem Fall technisch korrekt. Das liegt daran, dass die O-Notation nur eine Obergrenze angibt und die binäre Suche auf der oberen Seite von all diesen Funktionen begrenzt wird, nur nicht sehr genau. Diese faulen Schätzungen wären nutzlos .
Die Θ-Notation löst dieses Problem, indem sie die O-Notation und die Ω-Notation kombiniert . Wenn ich sage, dass die binäre Suche Θ (log n) ist, erhalten Sie genauere Informationen. Es zeigt Ihnen, dass der Algorithmus auf beiden Seiten durch die angegebene Funktion begrenzt ist, sodass er niemals wesentlich schneller oder langsamer als angegeben sein wird.
quelle
If I were lazy, I could say that binary search on a sorted array is O(n2), O(n3), and O(2n), and I would be technically correct in every case
- Es scheint, dass die meisten Leute in der Computerwelt nur faul sind, da alle meistens nur über die Komplexität von Big O sprechen.If I were lazy, I could say that binary search on a sorted array is O(n2), O(n3), and O(2n), and I would be technically correct in every case
Für den Fall, dass jemand damit verwechselt wird: Für diese Art von Funktionen wird eine nicht asymptotisch enge Small-O-Notation verwendet. Beispiel: - Die Grenze 2n ^ 2 = O (n ^ 2) ist asymptotisch eng, die Grenze 2n = O (n ^ 2) jedoch nicht. Lesen Sie mehr: stackoverflow.com/questions/1364444/…Wenn Sie etwas haben, das O (f (n)) ist , bedeutet dies, dass es k , g (n) gibt, so dass f (n) ≤ kg (n) ist .
Wenn Sie etwas haben, das Ω (f (n)) ist , bedeutet dies, dass es k , g (n) gibt, so dass f (n) ≥ kg (n) ist .
Und wenn Sie etwas mit O (f (n)) und Ω (f (n)) haben , dann ist es Θ (f (n) .
Der Wikipedia-Artikel ist anständig, wenn auch etwas dicht.
quelle
g
anstattf
, und der Rest kann so belassen werden, wie er ist. Gleiches gilt für die zweite Zeile: Es sollte "Wenn Sie etwas haben, das Ω (g (n)) ist" sein. Können Sie das bitte noch einmal überprüfen?Asymptotische Obergrenze bedeutet, dass ein bestimmter Algorithmus abhängig von der Anzahl der Eingaben während der maximalen Zeit ausgeführt wird.
Nehmen wir als Beispiel einen Sortieralgorithmus. Wenn alle Elemente eines Arrays in absteigender Reihenfolge vorliegen, dauert das Sortieren eine Laufzeit von
O(n)
und zeigt die Komplexität der Obergrenze. Wenn das Array bereits sortiert ist, lautet der WertO(1)
.Im Allgemeinen
O-notation
wird für die Komplexität der oberen Grenze verwendet.Asymptotisch eng gebunden (c 1 g (n) ≤ f (n) ≤ c 2 g (n)) zeigt die durchschnittliche gebundene Komplexität für eine Funktion mit einem Wert zwischen gebundenen Grenzen (obere Grenze und untere Grenze), wobei c 1 und c 2 sind Konstanten.
quelle
Die Sätze minimale Zeit und maximale Zeit sind hier etwas irreführend. Wenn wir über große O-Notationen sprechen, ist es nicht die tatsächliche Zeit, an der wir interessiert sind, sondern wie sich die Zeit erhöht, wenn unsere Eingabegröße größer wird. Und es ist normalerweise die durchschnittliche oder schlechteste Zeit, über die wir sprechen, nicht der beste Fall , was normalerweise für die Lösung unserer Probleme nicht sinnvoll ist.
Verwenden Sie die Arraysuche in der akzeptierten Antwort auf die andere Frage als Beispiel. Die Zeit, die benötigt wird, um eine bestimmte Zahl in der Liste der Größe n zu finden, beträgt im Durchschnitt n / 2 * some_constant. Wenn Sie es als Funktion behandeln
f(n) = n/2*some_constant
, steigt es nicht schneller an alsg(n) = n
im Sinne von Charlie. Außerdem steigt es nicht langsamer alsg(n)
beide. Daherg(n)
ist tatsächlich sowohl eine Obergrenze als auch eine Untergrenze vonf(n)
in der Big-O-Notation, so dass die Komplexität der linearen Suche genau n ist , was bedeutet, dass es Theta (n) ist.In dieser Hinsicht ist die Erklärung in der akzeptierten Antwort auf die andere Frage nicht ganz richtig, was besagt, dass O (n) die Obergrenze ist, da der Algorithmus für einige Eingaben in konstanter Zeit ausgeführt werden kann (dies ist der beste Fall, den ich oben erwähnt habe). Das ist nicht wirklich das, was wir über die Laufzeit wissen wollen.
quelle
Wir können die O-Notation ("little-oh") verwenden, um eine Obergrenze zu bezeichnen, die nicht asymptotisch eng ist. Sowohl Big-Oh als auch Little-Oh sind ähnlich. Aber Big-Oh wird wahrscheinlich verwendet, um eine asymptotisch enge Obergrenze zu definieren.
quelle
Genau die Untergrenze oder $ \ omega $ bfon f (n) bedeutet die Menge von Funktionen, die asymptotisch kleiner oder gleich f (n) sind, dh U g (n) ≤ cf (n) $ \ für alle $ `un≥ n 'Für einige c, n' $ \ in $ $ \ Bbb {N} $
Und die Obergrenze oder $ \ mathit {O} $ für f (n) bedeutet die Menge von Funktionen, die assymptotisch größer oder gleich f (n) sind, was mathematisch sagt,
$ g (n) \ ge cf (n) \ für alle n \ ge n '$, für einige c, n' $ \ in $ $ \ Bbb {N} $.
Jetzt ist das $ \ Theta $ der Schnittpunkt der oben geschriebenen zwei
Wenn ein Algorithmus wie "genau $ \ Omega \ left (f (n) \ right $" ist, ist es besser zu sagen, dass es $ \ Theta \ left (f (n) \ right) $ ist.
Oder wir können auch sagen, dass es uns die tatsächliche Geschwindigkeit
$ \omega $
gibt, wo es uns die niedrigste Grenze gibt.quelle
Der grundlegende Unterschied zwischen
asymptotisch obergrenze und asymptotisch eng Asym.upperbound bedeutet einen gegebenen Algorithmus, der abhängig von der Anzahl der Eingaben mit maximaler Zeit ausgeführt werden kann, z. B. beim Sortieren von Algo, wenn alle Array (n) -Elemente in absteigender Reihenfolge sind, und dann zum Aufsteigen dauert eine Laufzeit von O (n), die die Komplexität der Obergrenze zeigt, aber wenn sie bereits sortiert sind, dauert es Ohm (1). Daher haben wir im Allgemeinen die "O" -Notation für die Komplexität der Obergrenze verwendet.
Asym. eng gebundene Grenze zeigt die für zB (c1g (n) <= f (n) <= c2g (n)) zeigt die eng gebundene Grenze, so dass die Funktion den Wert zwischen zwei Grenzen hat (obere Grenze und untere Grenze), was die ergibt durchschnittlicher Fall.
quelle