Jaka jest różnica między O, Ω i Θ?

Uczę się analizy algorytmów. Mam problem ze zrozumieniem różnicy między O, Ω i Θ.

Sposób ich definiowania jest następujący:

f(n) = O(g(n)) znaczyc · g(n) jest górną granicąf(n). Tak więc istnieje jakaś stałac takief(n) jest zawsze ≤c · g(n), wystarczająco dużyn (to znaczy.,n ≥ n0 dla pewnej stałejn0).f(n) = Ω(g(n)) znaczyc · g(n) jest dolną granicąf(n). Tak więc istnieje jakaś stałac takief(n) jest zawsze ≥c · g(n), dla wszystkichn ≥ n0.f(n) = Θ(g(n)) znaczyc1 · g(n) jest górną granicąf(n) ic2 · g(n) jest dolną granicąf(n), dla wszystkichn ≥ n0. Tak więc istnieją stałec1 ic2 takief(n) ≤ c1 ·g(n) if(n) ≥ c2 ·g(n). To znaczy żeg(n) zapewnia miłą, ciasną wiązanief(n).

Sposób, w jaki to zrozumiałem, jest następujący:

O(f(n)) daje najgorszy przypadek złożoności danej funkcji / algorytmu.Ω(f(n)) daje najlepszą złożoność przypadku danej funkcji / algorytmu.Θ(f(n)) podaje średnią złożoność przypadku danej funkcji / algorytmu.

Proszę, popraw mnie jeśli się mylę. Jeśli tak, złożoność czasowa każdego algorytmu musi być wyrażona we wszystkich trzech notacjach. Zauważyłem jednak, że jest wyrażona jako O, Ω lub Θ; dlaczego nie wszystkie trzy?

questionAnswers(5)

yourAnswerToTheQuestion