Você está na página 1de 11

Complexidade de algorítmos

Matemática Discreta

Matemática Discreta Complexidade de algorítmos 1 / 11


Complexidade de algorítmos

Matemática Discreta Complexidade de algorítmos 2 / 11


Sejam as funções f (n) e g(n) com o mesmo domínio.
Diremos que
1 f (n) = O(g(n)), se existe uma constante posetiva
C1 tal que
|f (n)| ≥ C1 |g(n)|.
2 f (n) = Ω(g(n)), se existe uma constante posetiva
C2 tal que
|f (n)| ≤ C2 |g(n)|.
3 f (n) = Θ(g(n)), se f (n) = O(g(n)) e
f (n) = Ω(g(n)).

Matemática Discreta Complexidade de algorítmos 3 / 11


Exemplo
Dada a função f (n) = 60n2 + 5n + 1. Mostre que
f (n) = Θ(n2 ).

Vamos mostrar que f (n) = O(n2 ). Seja


f (n) = 60n2 + 5n + 1 ≤ 60n2 + 5n2 + n2 = 66n2 ,
onde C1 = 66, logo f (n) = O(n2 ).
Vamos mostrar que f (n) = Ω(n2 ). Seja
f (n) = 60n2 + 5n + 1 ≥ 60n2 , onde C2 = 60, logo
f (n) = Ω(n2 ).
Como f (n) = O(n2 ) e f (n) = Ω(n2 ), então
f (n) = Θ(n2 ).

Matemática Discreta Complexidade de algorítmos 4 / 11


Seja
f (n) = ak nk + ak−1 nk−1 + · · · + a0
um polinómio de grau k com coeficientes posetivos.
Então f (n) = Θ(nk ).
Exemplo
Seja f (n) = 60n2 + 5n + 1, então f (n) = Θ(n2 ).
Seja f (n) = 1k + 2k−1 + · · · + nk Então f (n) = Θ(nk+1 ).
Exemplo
Seja f (n) = 1 + 2 + · · · + n, então f (n) = Θ(n2 ).

Matemática Discreta Complexidade de algorítmos 5 / 11


Matemática Discreta Complexidade de algorítmos 6 / 11
Exemplo
Dada a função f (n) = 2n + 3 lg n, mostre que
f (n) = Θ(n).

Vamos primeiro mostrar que f (n) = O(n), ou seja


f (n) = 2n + 3 lg n ≤ 2n + 3n = 5n, logo
f (n) = O(n).
Por fim, vamos mostrar que f (n) = Ω(n), ou seja
f (n) = 2n + 3 lg n ≥ 2n, logo f (n) = Ω(n). Então,
logo f (n) = Θ(n).

Matemática Discreta Complexidade de algorítmos 7 / 11


Exemplo
Mostre que lg n! = O(n lg n).
Sabemos que n! = n(n − 1)(n − 2) · · · 1 e que
lg n! = lg n + lg(n − 1) + lg(n − 2) + · · · + lg 1. Assim,

lg n! = lg n + lg(n − 1) + lg(n − 2) + · · · + lg 1

≤ lg n + lg n + · · · + lg n = n lg n, logo f (n) = O(n lg n).

Matemática Discreta Complexidade de algorítmos 8 / 11


Exemplo
Dado o trecho do algort́imo

for i = 1 to n
for j = 1 to i
x =x +1

Determine o número de vezes que a instrução x = x + 1


é executada.
Para i = 1, a instrução x = x + 1 é executada uma vez,
para i = 2, a instrução x = x + 1 é executada duas vez e
para i = n, a instrução x = x + 1 é executada n vezes.
Desta forma, x = x + 1 é executada
f (n) = 1 + 2 + 3 + · · · + n, o que implica f (n) = Θ(n2 ).
Matemática Discreta Complexidade de algorítmos 9 / 11
Exemplo
Dado o trecho do algort́imo

i =n
While i ≥ 1{
x =x +1
i = bi/2c}

Determine o número de vezes que a instrução x = x + 1


é executada.
Para n = 8 = 23 , a instrução x = x + 1 é executada 4
vezes, para n = 16 = 24 , a instrução x = x + 1 é
executada 5 vezes
Matemática Discreta Complexidade de algorítmos 10 / 11
e para n = 2k , a instrução x = x + 1 é executada k + 1
vezes. Como n = 2k , então k = lg n, desta forma,
x = x + 1 é executada 1 + lg n, o que implica
f (n) = Θ(1 + lg n).

Matemática Discreta Complexidade de algorítmos 11 / 11

Você também pode gostar