Краткое объяснение:
Если алгоритм имеет Θ (g (n)), это означает, что время выполнения алгоритма при увеличении n (входного размера) пропорционально g (n).
Если алгоритм имеет значение O (g (n)), это означает, что время выполнения алгоритма при увеличении n равно не более пропорционально g (n).
Обычно, даже когда люди говорят о O (g (n)), они на самом деле означают Θ (g (n)), но технически есть разница.
<ч />
Более технически:
O (n) представляет верхнюю границу. Θ (n) означает тесную связь.
Ω (n) представляет нижнюю границу.
f (x) = Θ (g (x)) тогда и только тогда, когда f (x) =
O (g (x)) и f (x) = Ω (g (x))
В основном, когда мы говорим, что алгоритм имеет O (n), это также O (n 2 ), O (n 1000000 ), O (2 n *) 1028 *), ... но алгоритм Θ (n) равен , а не Θ (n 2 ).
Фактически, поскольку f (n) = Θ (g (n)) означает, что для достаточно больших значений n, f (n) может быть ограничено в пределах c 1 g (n) и c 2 g (n) для некоторых значений c 1 и c 2 , т.е. скорость роста f асимптотически равна g: g может быть нижней границей и и верхняя граница f. Это непосредственно означает, что f может быть как нижней, так и верхней границей g. Следовательно,
f (x) = Θ (g (x)) тогда и только тогда, когда g (x) = Θ (f (x))
Точно так же, чтобы показать f (n) = Θ (g (n)), достаточно показать, что g является верхней границей f (т. Е. F (n) = O (g (n))), а f является нижняя граница g (т. е. f (n) = Ω (g (n)), что точно так же, как g (n) = O (f (n))). Лаконично,
f (x) = Θ (g (x)) тогда и только тогда, когда f (x) = O (g (x)) и g (x) = O (f (x))
Существуют также нотации о-о и-омега (ω
), представляющие свободные верхние и нижние нижние границы функции.
Подведем итог:
f(x) = O(g(x))
(big-oh) означает, что
скорость роста f(x)
составляет
асимптотически меньше или равно
до до темпов роста g(x)
.
f(x) = Ω(g(x))
(биг-омега) означает
что темпы роста f(x)
асимптотически больше или
равен темпу прироста g(x)
f(x) = o(g(x))
(мало-ой) означает, что
скорость роста f(x)
составляет
асимптотически меньше
темпы роста g(x)
.
f(x) = ω(g(x))
(мало-омега) означает
что темпы роста f(x)
асимптотически больше
скорость роста g(x)
f(x) = Θ(g(x))
(тета) означает, что
скорость роста f(x)
составляет
асимптотически равен
темпы роста g(x)
Для более подробного обсуждения вы можете прочитать определение в Википедии или обратиться к классическому учебнику, например, «Введение в алгоритмы» Кормена и др.