Was genau bedeutet die große Notation?


178

Ich bin wirklich verwirrt über die Unterschiede zwischen Big O, Big Omega und Big Theta.

Ich verstehe, dass großes O die Obergrenze und großes Omega die Untergrenze ist, aber was genau bedeutet großes Ө (Theta)?

Ich habe gelesen, dass es eng gebunden bedeutet , aber was bedeutet das?


Antworten:


93

Dies bedeutet, dass der Algorithmus in der angegebenen Funktion sowohl Big-O als auch Big-Omega ist.

Wenn dies beispielsweise der Fall ist Ө(n), gibt es eine Konstante k, sodass Ihre Funktion (Laufzeit, was auch immer) größer ist als n*kfür ausreichend große n, und eine andere Konstante K, sodass Ihre Funktion kleiner als n*Kfür ausreichend groß ist n.

Mit anderen Worten, für ausreichend große nist es zwischen zwei linearen Funktionen angeordnet:

Für k < Kund nausreichend groß,n*k < f(n) < n*K


Es ist nicht so, diese Variablen sind etwas verwirrend, sie haben nichts miteinander zu tun.
Aaron Robeson

@committedandroider Nein, sie sind in Klein- und Großbuchstaben unterschiedlich, daher verwendet er einen typischen mathematischen Stil, bei dem zwei "ähnliche" (hier jedoch in keiner Weise verwandte) Variablen Groß- und Kleinbuchstaben verwenden.
Santropedro

329

Lassen Sie uns zuerst verstehen, was großes O, großes Theta und großes Omega sind. Sie sind alle Sätze von Funktionen.

Big O gibt eine obere asymptotische Grenze , während Big Omega eine untere Grenze gibt. Big Theta gibt beides.

Alles was ist Ө(f(n))ist auch O(f(n)), aber nicht umgekehrt.
T(n)soll in sein, Ө(f(n))wenn es sowohl in O(f(n))als auch in ist Omega(f(n)).
In der Mengen-Terminologie Ө(f(n))ist der Schnittpunkt von O(f(n))undOmega(f(n))

Zum Beispiel ist Merge Sort Worst Case beides O(n*log(n))und Omega(n*log(n))- und damit auch Ө(n*log(n)), aber es ist auch O(n^2), da n^2es asymptotisch "größer" ist als es. Dies ist jedoch nicht Ө(n^2) der Fall, da der Algorithmus dies nicht ist Omega(n^2).

Eine etwas tiefere mathematische Erklärung

O(n)ist asymptotische Obergrenze. Wenn T(n)ja O(f(n)), bedeutet dies, dass es ab einer bestimmten n0Konstante eine Csolche gibt T(n) <= C * f(n). Auf der anderen Seite sagt Big-Omega, dass es eine C2solche Konstante gibt , dass T(n) >= C2 * f(n))).

Nicht verwechseln!

Nicht zu verwechseln mit der Analyse der schlechtesten, besten und durchschnittlichen Fälle: Alle drei Notationen (Omega, O, Theta) beziehen sich nicht auf die Analyse der besten, schlechtesten und durchschnittlichen Fälle von Algorithmen. Jede davon kann auf jede Analyse angewendet werden.

Wir verwenden es normalerweise, um die Komplexität von Algorithmen zu analysieren (wie im obigen Beispiel für die Zusammenführungssortierung). Wenn wir sagen "Algorithmus A ist O(f(n))", meinen wir wirklich "Die Komplexität der Algorithmen unter der Worst- 1- Fall-Analyse ist O(f(n))" - was bedeutet - sie skaliert "ähnlich" (oder formal nicht schlechter als) die Funktion f(n).

Warum kümmern wir uns um die asymptotische Grenze eines Algorithmus?

Nun, es gibt viele Gründe dafür, aber ich glaube, die wichtigsten davon sind:

  1. Es ist viel schwieriger, die genaue Komplexitätsfunktion zu bestimmen , daher "kompromittieren" wir bei den Big-O / Big-Theta-Notationen, die theoretisch informativ genug sind.
  2. Die genaue Anzahl der Operationen ist auch plattformabhängig . Zum Beispiel, wenn wir einen Vektor (eine Liste) von 16 Zahlen haben. Wie viel Einsatz wird es dauern? Die Antwort lautet: es kommt darauf an. Einige CPUs erlauben das Hinzufügen von Vektoren, andere nicht. Daher variiert die Antwort zwischen verschiedenen Implementierungen und verschiedenen Maschinen, was eine unerwünschte Eigenschaft ist. Die Big-O-Notation ist jedoch zwischen Maschinen und Implementierungen viel konstanter.

Sehen Sie sich die folgenden Grafiken an, um dieses Problem zu demonstrieren: Geben Sie hier die Bildbeschreibung ein

Es ist klar, dass f(n) = 2*n"schlimmer" ist als f(n) = n. Der Unterschied ist jedoch nicht ganz so drastisch wie bei der anderen Funktion. Wir können sehen, dass das f(n)=lognschnell viel niedriger als die anderen Funktionen wird und f(n) = n^2schnell viel höher als die anderen.
Aus den oben genannten Gründen "ignorieren" wir die konstanten Faktoren (2 * im Diagrammbeispiel) und verwenden nur die Big-O-Notation.

Im obigen Beispiel f(n)=n, f(n)=2*nwird sowohl in O(n)als auch in sein Omega(n)- und somit auch in Theta(n).
Auf der anderen Seite - f(n)=lognwird in sein O(n)(es ist "besser" als f(n)=n), wird aber NICHT in sein Omega(n)- und wird somit auch NICHT in sein Theta(n).
Symetrisch f(n)=n^2wird in sein Omega(n), aber NICHT in O(n)und somit - ist auch NICHT Theta(n).


1 Normalerweise, aber nicht immer. Wenn die Analyseklasse (schlechteste, durchschnittliche und beste) fehlt, meinen wir wirklich den schlimmsten Fall.


4
@krishnaChandra: f(n) = n^2ist dann asymptotisch stärker nund somit Omega (n). Es ist jedoch nicht O (n) (denn für große nWerte ist es dann c*nfür alle größer n). Da wir sagten, Theta (n) sei der Schnittpunkt von O (n) und Omega (n), da es nicht O (n) ist, kann es auch nicht Theta (n) sein.
Amit

8
Es ist großartig zu sehen, wie jemand erklärt, wie die Big-O-Notation nicht mit der Laufzeit eines Algorithmus im besten / schlechtesten Fall zusammenhängt. Es gibt so viele Websites, die auftauchen, wenn ich das Thema google, dass O (T (n)) die Laufzeit im schlimmsten Fall bedeutet.
Will Sewell

1
@almel Es ist 2 * n (2n, zweimal n) nicht 2 ^ n
amit

5
@VishalK 1. Big O ist die Obergrenze , da n gegen unendlich tendiert. 2. Omega ist die Untergrenze , da n gegen unendlich tendiert. 3. Theta ist sowohl die obere als auch die untere Grenze, da n gegen unendlich tendiert. Beachten Sie, dass alle Grenzen nur gültig sind, "da n gegen unendlich tendiert", da die Grenzen nicht für niedrige Werte von n (weniger als n0 ) gelten. Die Grenzen gelten für alle nn0 , jedoch nicht unter n0, wo Terme niedrigerer Ordnung dominieren.
Bain

1
@hey_you Lies die Antwort noch einmal. Big O, Theta, Omega stehen für Funktionen, nicht für Algorithmen. Zusammenführungssortierung ist der schlimmste Fall von Omega (n). Es ist auch O (n ^ 2) bester Fall. Es ist auch Theta (nlogn) schlimmster Fall. Grundsätzlich haben Sie für jede Analyse (schlechteste / beste / durchschnittliche / ...) eine Komplexitätsfunktion T_best(n), T_worst(n), T_average(n). Sie müssen nicht identisch sein (und meistens auch nicht). O / Omega / Theta kann unabhängig voneinander angewendet werden.
Amit

14

Theta (n): Eine Funktion f(n)gehört dazu Theta(g(n)), wenn es positive Konstanten gibt c1und c2solche, f(n)die zwischen c1(g(n))und eingeschlossen werden können c2(g(n)). dh es gibt sowohl obere als auch untere Grenze.

Theta (g (n)) = {f (n): Es existieren positive Konstanten c1, c2 und n1, so dass 0 <= c1 (g (n)) <= f (n) <= c2 (g (n)) für alle n> = n1}

wenn wir sagen f(n)=c2(g(n))oder f(n)=c1(g(n))es asymptotisch eng gebunden darstellt.

O (n): Es gibt nur die Obergrenze (kann eng sein oder nicht)

O (g (n)) = {f (n): Es gibt positive Konstanten c und n1, so dass 0 <= f (n) <= cg (n) für alle n> = n1}

Beispiel : Die Bindung 2*(n^2) = O(n^2)ist asymptotisch fest, während die Bindung 2*n = O(n^2)nicht asymptotisch fest ist.

o (n): Es gibt nur eine Obergrenze (niemals eine enge Grenze)

Der bemerkenswerte Unterschied zwischen O (n) und o (n) ist, dass f (n) für alle n> = n1 kleiner als cg (n) ist, aber nicht gleich wie in O (n).

Beispiel : 2*n = o(n^2)aber2*(n^2) != o(n^2)


1
Sie haben das große Omega nicht erwähnt, das sich auf die Untergrenze bezieht. Ansonsten sehr schöne erste Antwort und herzlich willkommen!
Bohney

1
Ich mochte die Art und Weise, wie er die Definition von Theta (n) formulierte. Upvoted!
user720694


1

Große Theta-Notation:

Nichts, Kumpel durcheinander zu bringen !!

Wenn wir positiv bewertete Funktionen f (n) haben und g (n) ein positiv bewertetes Argument n annimmt, dann ist ϴ (g (n)) definiert als {f (n): Es gibt Konstanten c1, c2 und n1 für alle n> = n1}

wobei c1 g (n) <= f (n) <= c2 g (n)

Nehmen wir ein Beispiel:

sei f (n) =

g (n) =

c1 = 5 und c2 = 8 und n1 = 1

Unter allen Notationen gibt die ϴ-Notation die beste Intuition über die Wachstumsrate der Funktion, da sie uns im Gegensatz zu Big-Oh und Big-Mega, die die Ober- bzw. Untergrenze angeben, eine enge Grenze gibt.

ϴ sagt uns, dass g (n) so nahe wie f (n) ist, die Wachstumsrate von g (n) so nahe wie möglich an der Wachstumsrate von f (n) liegt.

Sehen Sie sich das Bild an, um eine bessere Intuition zu erhalten


0

Zuallererst Theorie

  1. Großes O = Obergrenze O (n)

  2. Theta = Ordnungsfunktion - Theta (n)

  3. Omega = Q-Notation (untere Grenze) Q (n)

Warum sind die Leute so verwirrt?

In vielen Blogs und Büchern wird wie diese Aussage hervorgehoben

"Das ist Big O (n ^ 3)" usw.

und die Leute verwirren oft wie das Wetter

O (n) == Theta (n) == Q (n)

Was jedoch zu beachten ist, ist, dass sie nur eine mathematische Funktion mit den Namen O, Theta und Omega sind

so haben sie die gleiche allgemeine Formel des Polynoms,

Lassen,

f (n) = 2n4 + 100n2 + 10n + 50 dann,

g (n) = n4, also ist g (n) eine Funktion, die die Funktion als Eingabe übernimmt und eine Variable mit größerer Leistung zurückgibt.

Gleiches f (n) & g (n) für Nachfolgend alle Erläuterungen

Große O-Funktion (bietet Obergrenze)

Großes O (n4) = 3n4, weil 3n4> 2n4

3n4 ist der Wert von Big O (n4) Genau wie f (x) = 3x

n4 spielt hier also eine Rolle von x , also

Ersetzen Sie n4 durch x'so, Big O (x ') = 2x'. Jetzt sind wir beide froh, dass General Concept es ist

Also 0 ≤ f (n) ≤ O (x ')

O (x ') = cg (n) = 3n4

Wert setzen,

0 ≤ 2n4 + 100n2 + 10n + 50 ≤ 3n4

3n4 ist unsere Obergrenze

Theta (n) liefert die untere Grenze

Theta (n4) = cg (n) = 2n4 Weil 2n4 ≤ Unser Beispiel f (n)

2n4 ist der Wert von Theta (n4)

also 0 ≤ cg (n) ≤ f (n)

0 ≤ 2n4 ≤ 2n4 + 100n2 + 10n + 50

2n4 ist unsere Untergrenze

Omega n - Bestellfunktion

Dies wird berechnet, um herauszufinden, dass die untere Grenze des Wetters der oberen Grenze ähnlich ist.

Fall 1). Die obere Grenze ähnelt der unteren Grenze

if Upper Bound is Similar to Lower Bound, The Average Case is Similar

Example, 2n4 ≤ f(x) ≤ 2n4,
Then Omega(n) = 2n4

Fall 2). wenn die obere Grenze der unteren Grenze nicht ähnlich ist

in this case, Omega(n) is Not fixed but Omega(n) is the set of functions with the same order of growth as g(n).

Example 2n4 ≤ f(x) ≤ 3n4, This is Our Default Case,
Then, Omega(n) = c'n4, is a set of functions with 2 ≤ c' ≤ 3

Hoffe das erklärt !!

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.