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

46 lines
2.6 KiB
Markdown

---
title: Big Theta Notation
localeTitle: Notação Theta Grande
---
## Notação Theta Grande
O Big Omega nos diz o limite inferior do tempo de execução de uma função, e Big O nos diz o limite superior. Muitas vezes, eles são diferentes e não podemos garantir o tempo de execução - isso variará entre os dois limites e as entradas. Mas o que acontece quando são iguais? Então podemos dar um **theta** (Θ) ligado - nossa função será executada nesse tempo, não importa qual entrada nós damos. Em geral, sempre queremos dar um theta vinculado, se possível, porque é o limite mais preciso e mais preciso. Se não podemos dar uma ligação theta, a próxima melhor coisa é o limite O mais apertado possível.
Tome, por exemplo, uma função que procura um array pelo valor 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. Qual é o melhor caso? Bem, se a matriz que dermos tiver 0 como o primeiro valor, levará tempo constante: Ω (1)
2. Qual é o pior caso? Se a matriz não contiver 0, teremos iterado por toda a matriz: O (n)
Nós demos um omega e O, então e theta? Nós não podemos dar um! Dependendo da matriz que fornecemos, o tempo de execução estará em algum lugar entre constante e linear.
Vamos mudar nosso código um pouco.
```python
def printNums(arr): #assume normal array of length n with no edge cases
for num x in arr:
print(x)
```
Você pode pensar em um melhor caso e pior caso? Eu não posso! Não importa qual array nós damos, temos que percorrer todos os valores da matriz. Portanto, a função terá PELO MENOS n tempo (Ω (n)), mas também sabemos que não levará mais que n tempo (O (n)). O que isto significa? Nossa função levará **exatamente** n tempo: Θ (n).
Se os limites são confusos, pense nisso assim. Nós temos 2 números, x e y. Nos é dado que x <= y e y <= x. Se x é menor ou igual a y, e y é menor ou igual a x, então x tem que ser igual a y!
Se você estiver familiarizado com listas vinculadas, teste-se e pense nos tempos de execução de cada uma dessas funções!
1. obter
2. remover
3. adicionar
As coisas ficam ainda mais interessantes quando você considera uma lista duplamente vinculada!
#### Mais Informações:
https://pt.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/