В чем разница между O, Ω и Θ?
Я изучаю алгоритм анализа. У меня проблемы с пониманием разницы между O, Ωи Θ.
То, как ониПереопределено следующее:
f(n) = O(g(n))
средстваc · g(n)
верхняя границаf(n)
, Таким образом, существует некоторая постояннаяc
такой, чтоf(n)
всегда ≤ c · g(n)
достаточно большойn
(Т.е.n ≥ n0
для некоторой константыn0
).f(n) = Ω(g(n))
средстваc · g(n)
нижняя границаf(n)
, Таким образом, существует некоторая постояннаяc
такой, чтоf(n)
всегда ≥ c · g(n)
, для всех .n ≥ n0
f(n) = Θ(g(n))
средстваc1 · g(n)
верхняя границаf(n)
а такжеc2 · g(n)
нижняя границаf(n)
, для всехn ≥ n0
, Таким образом, существуют константыc1
а такжеc2
такой, чтоf(n) ≤ c1 ·g(n)
а такжеf(n) ≥ c2 ·g(n)
, Это означает, чтоg(n)
обеспечивает хорошую, жесткую связь.f(n)
Я понял это так:
O(f(n))
дает сложность данной функции / алгоритма в худшем случае.Ω(f(n))
дает лучший случай сложности данной функции / алгоритма.Θ(f(n))
дает среднюю сложность случая данной функции / алгоритма.Пожалуйста, поправьте меня, если я ошибаюсь. Если это так, временная сложность каждого алгоритма должна быть выражена во всех трех обозначениях. Но я заметил, что этоs выражается как O, Ωили Θ; почему не все три?