freeCodeCamp/guide/russian/computer-science/notation/big-theta-notation/index.md

46 lines
4.0 KiB
Markdown
Raw Normal View History

2018-10-12 20:00:59 +00:00
---
title: Big Theta Notation
localeTitle: Большая тета-нотация
---
## Большая тета-нотация
Большая Омега сообщает нам нижнюю границу времени выполнения функции, а Big O сообщает верхнюю границу. Часто они отличаются друг от друга, и мы не можем поставить гарантию на время выполнения - это будет варьироваться между двумя границами и входами. Но что происходит, когда они одинаковы? Тогда мы можем дать оценку **тета** (Θ) - наша функция будет работать в это время, независимо от того, какой вклад мы ее даем. В общем, мы всегда хотим, если возможно, дать тета-границу, потому что это самая точная и узкая граница. Если мы не сможем дать привязку тета, следующая лучшая вещь - это самая узкая O-граница.
Возьмем, например, функцию, которая ищет массив для значения 0:
```python
def containsZero(arr): #assume normal array of length n with no edge cases
for num x in arr:
if x == 0:
return true
return false
```
1. Какой лучший случай? Ну, если массив, который мы даем, имеет 0 в качестве первого значения, он будет занимать постоянное время: Ω (1)
2. В худшем случае? Если массив не содержит 0, мы будем итерации по всему массиву: O (n)
Мы дали ему омегу и О, а как насчет тета? Мы не можем дать его! В зависимости от массива, который мы даем, время выполнения будет находиться где-то между постоянным и линейным.
Давайте немного изменим наш код.
```python
def printNums(arr): #assume normal array of length n with no edge cases
for num x in arr:
print(x)
```
Можете ли вы подумать о лучшем случае и худшем случае? Я не могу! Независимо от того, какой массив мы его даем, мы должны проходить через каждое значение в массиве. Таким образом, функция будет принимать наименьшее время (Ω (n)), но мы также знаем, что это не займет больше времени n (O (n)). Что это значит? Наша функция займет **ровно** n раз: Θ (n).
Если границы сбивают с толку, подумайте об этом так. У нас есть 2 числа, x и y. Нам дано, что x <= y и y <= x. Если x меньше или равно y, а y меньше или равно x, то x должно быть равно y!
Если вы знакомы со связанными списками, проверьте себя и подумайте о времени выполнения каждой из этих функций!
1. получить
2. Удалить
3. Добавить
Все становится еще интереснее, когда вы рассматриваете двойной список!
#### Дополнительная информация:
https://www.khanacademy.org/computing/computer-science/algorithms/asymptotic-notation/a/big-big-theta-notation https://stackoverflow.com/questions/10376740/what-exactly-does-big-%D3%A8-notation-represent https://www.geeksforgeeks.org/analysis-of-algorithms-set-3asymptotic-notations/