Sie sind auf Seite 1von 6

Capı́tulo 1

Aula 2

1.1 Crescimento de Funções

Definição 1. Sejam f e g funções do conjunto dos inteiros (ou dos reais) nos reais. Diremos
que f (x) é O(x) se existem as constantes C e k tais que

|f (x)| ≤ C|g(x)

sempre que x > k. (Lê-se ’f (x) é big − oh de g(x).)

Exemplo 2. Mostre que f (x) = x2 + 2x + 1 é O(x2 ).


Solução: Tomando k = 1 e x > k, temos que x < x2 e 1 < x2 . Decorre daı́ que

0 ≤ x2 + 2x + 1 ≤ x2 + 2x2 + x2 = 4x2

Assim, basta tomar C = 4 e k = 1 para termos que x2 + 2x + 1 é O(x2 ).

Observação 3. Podemos tomar um caminho (semelhante) para mostrar que x2 + 2x + 1 é


O(x2 ). De fato, tomando k = 2 temos que

0 < x2 + 2x + 1 ≤ x2 + x2 + x2 = 3x2

Assim, basta tomar C = 3 e k = 2 para termos que x2 + 2x + 1 é O(x2 ).

Exemplo 4. Mostre que 7x2 é O(x3 ).


Solução: Consideremos x > 7 (K = 7):

7x2 < x · x2 = x3

Assim, basta tomar C = 1 e k = 7.

1
Exemplo 5. É verdade que x3 é O(7x2 )?
Solução: Suponhamos por absurdo que sim, isto é, existe C, k tais que x3 ≤ C · 7x2 para
x > k. Assim,
x3 < C · 7x2 |{z}
⇒ x < 7c
÷x2

o que é uma contradição pois a função x não é limitada.

Teorema 6. Seja f (x) = an xn + · · · + a1 x + a0 , em que a0 , a1 , · · · an são números reais. Então


f (x) é O(xn ).

Demonstração. Considerando x > 1 e (k = 1), temos:

|f (x)| = |an xn + · · · + a1 x + a0
≤ |an |xn + · · · |a1 |x + |a0 |
= xn |an | + · · · + |a1 |/xn−1 + |a0 |/xn


≤ xn (|an | + · · · + |a1 | + |a0 |)

Basta tomar C = |an | + · · · + |a1 | + |a0 | e k = 1 para mostrarmos que an xn + · · · + a1 x + a0 é


O(xn ).

Exemplo 7. Estime O para a soma dos n primeiros inteiros positivos.


Solução: Note que

1 + 2 + · · · + n ≤ n + n + · · · + n = n(1 + 1 + · · · + 1) = n · · · n = n2 .

Assim, basta tomar C = 1 e k = 1 para termos que 1 + 2 + · · · + n é O(n2 ).

Exemplo 8. Estime O para o fatorial de n e para o logaritmo deste fatorial.


Solução: Temos que

n! = 1 · 2 · 3 · · · n
≤ n · n · n···n
= nn

Assim, basta tomar C = 1 e k = 1 para termos que n! é O(nn ).


Além disso, temos que
log(n!) ≤ log (nn ) = nlog(n).

Assi, basta tomar C = 1 e k = 1 para ter que log(n!) é O(nlog(n)).

2
Exemplo 9. Mostre que log(n) é O(n).
Solução: Note que,
log(n) n 1
logb (n) = ≤ = n
log(b) log(b) log(b)
1
Assim, basta tomar C = log(b)
e n > 1 (k = 1) para termos que logb (n) é O(n).

A notação big − oh é usada para estimar o número de operações necessárias para se resolver
um problema usando um procedimento especı́fico ou um algoritmo. Algumas funções usadas
para tais estimativas são:
1, log(n), n, nlog(n), n2 , 2n , n!.

Agora, vejamos alguns teoremas para estimarmos big-oh para uma combinação de funções.

Teorema 10. Suponha que f1 (x) é O(g1 (x)) e que f2 (x) é O(g2 (x)). Então (f1 + f2 )(x) é
O (max(|g1 (x)|, |g2 (x)|)).

Demonstração. Por hipótese, temos que existem C1 , C2 , k1 , k2 tais que

|f1 (x)| ≤ C1 |g1 (x), x > k1

|f2 (x)| ≤ C2 |g1 (x), x > k2

Temos que

|(f1 + f2 )(x)| = |(f1 + f2 )|(x) = |f1 (x) + f2 (x)|


≤ |f1 (x)| + |f2 (x)|
≤ C1 |g1 (x)| + C2 |g2 (x)|
≤ C1 |g(x)| + C2 |g(x)|
= (C1 + C2 )|g(x)|

em que g(x) = maxO (|g1 (x)|, |g2 (x)|). Assim, basta tomar C = C1 + C2 e x > k = max(k1 , k2 )
para termos que (f1 + f2 )(x) é O (max(|g1 (x)|, |g2 (x)|)).

Teorema 11. Suponha que f1 (x) é O(g1 (x)) e que f2 (x) é O(g2 (x)). Então (f1 f2 )(x) é
O (g1 (x)g2 (x)).

Demonstração. Por hipótese, temos que existem C1 , C2 , k1 , k2 tais que

|f1 (x)| ≤ C1 |g1 (x), x > k1

|f2 (x)| ≤ C2 |g1 (x), x > k2

3
Temos que

|(f1 f2 )(x)| = |(f1 (x)f2 (x)|


≤ C1 |g1 (x)|C2 |g2 (x)|
= C1 C2 |g1 (x)g2 (x)|
= C|(g1 g2 )(x)|

Assim, basta tomar C = C1 C2 e k = max(k1 , k2 ) para termos que f1 f2 (x) é O((g1 g2 )(x)).

Exemplo 12. Estime O para f (n) = 3nlog(n) + (n2 + 3)log(n).


Solução: Temos que n > 1(k = 1)

3nlog(n!) ≤ 3nlog(nn )
= 3n · nlog(n)
= 3n2 log(n)

Assim, basta tomar C = 3 e k = 1 para termos que 3nlog(n!) é O(n2 log(n)). Por outro lado,
n2 + 3 ≤ 2n2 para n > 2(k = 2). Assim, basta tomar C = 2 e k = 2 para termos que
n2 + 3 é O(n2 ). Pelo Teorema 11, temos que (n2 + 3)log(n) é O(n2 log(n)). Pelo Teorema 10
(trivialmente), temos que 3nlog(n!) + (n2 + 3)log(n) é O(n2 log(n)).

Exemplo 13. Estime O para

f (x) = (x + 1)log(x2 + 1) + 3x2 .

Solução: Temos que x + 1 é O(x) e que x2 + 1 ≤ 2x2 desde que x > 1(k = 1). Portanto,

log(x2 + 1) ≤ log(2x2 )
= log(2) + log(x2 )
= log(2) + 2log(x)
= 3log(x)

desde que x > 2. Isto mostra que log(x2 + 1) é O(log(x)). Segue do Teorema 11 que
(x + 1)log(x2 + 1) é O(xlog(x)). Como 3x2 é O(x2 ) o Teorema 10 nos assegura que (x +
1)log(x2 + 1) + 3x2 é O(max(xlog(x), x2 )). Como xlog(x) ≤ x2 para x > 1, temos que f (x) é
O(x2 ).

1.2 Notação Big-Ω e Big-Θ

4
Definição 14. Sejam f e g funções do conjunto dos inteiros (ou dos reais) no conjunto do
reais. Dizemos que f (x) é Ω(g(x)) se existem constantes positivas C, k tais que

|f (x)| ≥ C|g(x)|

sempre que x > k. (Lê-se ”f (x) é big-Omega de g(x)”.)

Em particular, f (x) é Ω(g(x)) se, e somente se, g(x) é O(f (x)).

Exemplo 15. Note que f (x) = 8x3 + 5x2 + 7 é Ω(g(x)) em que g(x) = x3 . De fato, f (x) =
8x3 + 5x2 + 7 ≥ 8x3 (C = 3) para todo x > 0(k = 0).

Definição 16. Sejam f e g funções do conjunto dos inteiros (ou dos reais) no conjunto dos
reais. Nós dizemos que f (x) é Θ(g(x)) se f (x) é O(g(x)) e f (x) é Ω(g(x)). Neste caso, dizemos
que ”f (x) é big-Theta de g(x)”, ou que f (x) e g(x) têm a mesma ordem.

Pode-se mostrar que f (x) é Θ(g(x)) se, e somente se, existem constantes reais positivas C1 ,
C2 , k tais que
C1 |g(x)| ≤ f (x) ≤ C2 |g(x)|

sempre que x > k. Isto é equivalente a dizer que f (x) é Θ(g(x)) se, e somente se, f (x) é O(g(x))
e g(x) é O(f (x)).

Exemplo 17. Mostre que a soma dos n primeiros inteiros positivos tem ordem n2 .
Solunção: No Exemplo 7 vimos que f (n) = 1 + 2 + · · · + n é O(n2 ). Agora, basta obtermos
C tal que f (n) > Cn2 para k > n (n suficientemente grande). Note que
hni h n i  h n i 
1 + 2 + ··· + n = + +1 + + 2 + ··· + n
2 h n i2  h n i 2
= n− +1
2 2
n n
≥ ·
2 2
n2
=
4
1
Logo, f (n) é Ω(n2 ) em que C = 4
e n > k = 1. Assim, f (n) tem ordem n2 , ou equivalentemente,
f (n) é Θ(n2 ).
n
Observação 18. A notação 2
usada no Exemplo 17 é usada para indicar a parte inteira da
divisão de n por 2. A exemplo, temos:
   
4 7
= 2, = 3.
2 2

5
Exemplo 19. Mostre que 3x2 + 8xlog(x) é Θ(x2 ).
Solução: Para x > 1(k = 1), temos que

0 ≤ 8xlog(x) ≤ 8x · x = 8x2
3x2 ≤ 8xlog(x) + 3x2 ≤ 8x2 + 3x2 = 11x2

Assim, 3x2 + 8xlog(x) é O(x2 ). Por outro lado, para x > 1, temos que x2 ≤ 3x2 + 8xlog(x) e
portanto, x2 é O(3x2 + xlog(x)). Consequentemente, 3x2 + 8xlog(x) é Θ(x2 ).

Teorema 20. Seja f (x) = an xn + · · · + a1 x + a0 em que a0 , a1 , · · · , an são números reais


positivos e an 6= 0. Então f (x) é da ordem xn .

1.3 Exercı́cios
Exercı́cio 1. Determine em cada caso se a função dada é O(x).
a) f (x) = 10 b) f (x) = 3x + 7 c) f (x) = x2 + x + 1 d) f (x) = 5log(x)

Exercı́cio 2. Mostre que x4 + 9x3 + 4x + 7 é O(x4 ).

Exercı́cio 3. Exiba o menor inteiro n tal que f (x) seja O(xn ) para cada função dada:
a) f (x) = 2x3 + x2 log(x)
b) f (x) = 3x3 + (log(x))4
x4 +x2 +1
c) f (x) = x3 +1

Exercı́cio 4. Mostre que x2 + 4x + 17 é O(x3 ) mas x3 não é O(x2 + 4x + 17).

Exercı́cio 5. Arrume as funções a seguir em uma lista de modo que cada uma seja O da
próxima:
√ n n n2
n, 1000log(n), nlog(n), 2n!, 2 , 3 ,
1000
Exercı́cio 6. Dê a melhor estimativa para O para cada uma das funções:
a) (n2 + 8)(n + 1)
b) (nlog(n) + n2 )(n3 + 1)
c) (n! + 2n )(n3 + log(n2 + 1))
d) (nlog(n) + 1)2 + (log(n) + 1)(n2 + 1)

Exercı́cio 7. Mostre que os pares de funções têm a mesma ordem:


a) 3x + 7, x
b) 2x2 + x − 7, x2
c) log(x2 + 1), log2 (x)

Das könnte Ihnen auch gefallen