Você está na página 1de 22

2.

MODELO DETALHADO: Relações de Recorrência

Exemplo: Algoritmo Recursivo para Cálculo do Fatorial –


Substituição Repetida

T ( n ) = t1 , n = 0
T ( n ) = T ( n − 1) + t 2 , n > 0

T ( n ) = T ( n − 1) + t 2
T ( n ) = (T ( n − 2 ) + t 2 ) + t 2 = T ( n − 2 ) + 2 t 2
T ( n ) = T ( n − 2 ) + 2 t 2 = (T ( n − 3 ) + t 2 ) + 2 t 2
T ( n ) = T ( n − 3) + 3t2
T ( n ) = T ( n − k ) + kt 2

2. MODELO DETALHADO: Relações de Recorrência

Exemplo: Algoritmo Recursivo para Cálculo do Fatorial –


Substituição Repetida

T ( n ) = T ( n − k ) + kt 2

à
Sendo n conhecido, podemos repetir o processo de substituição
até obtermos T(0) do lado direito: n-k=0 k=n

T ( n ) = T ( 0 ) + nt 2

T ( n ) = t 1 + nt 2

4
3. MODELO SIMPLIFICADO: Ex. – Somat. Série Geométrica

Para o cálculo anterior, foi utilizada a seguinte igualdade:

n
n ( n + 1)

i= 0
i =
2

Portanto:

n
( n + 2 )( n + 1 )
∑i= 0
(i + 1) =
2

3. MODELO SIMPLIFICADO: Ex. – Somat. Série Geométrica

Demonstração da igualdade por Indução Matemática:

n
n ( n + 1)

i= 0
i =
2

Passo (1): Mostrar que a igualdade vale para n=0

0
0 ( 0 + 1)

i= 0
i = 0 =
2

5
3. MODELO SIMPLIFICADO: Ex. – Somat. Série Geométrica

Demonstração da igualdade por Indução Matemática:

n
n ( n + 1)

i= 0
i =
2

Passo (2a): Supor que a igualdade vale para n=k (Hipótese)

k
k ( k + 1)
∑i= 0
i =
2

3. MODELO SIMPLIFICADO: Ex. – Somat. Série Geométrica

Passo (2a): Supor que a igualdade vale para n=k (Hipótese)


k
k ( k + 1)

i= 0
i =
2
Passo (2b): Provar que a igualdade vale para n=k+1

k +1 k
k ( k + 1)
∑i= 0
i = ∑
i= 0
i + ( k + 1) =
2
+ ( k + 1)

k ( k + 1) + 2 ( k + 1) ( k + 1 )( k + 2 ) ( k + 1 )(( k + 1 ) + 1 )
= = =
2 2 2

6
ROTEIRO

1. INTRODUÇÃO E MOTIVAÇÃO

2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

3. UM LIMITE ASSINTÓTICO INFERIOR – NOTAÇÃO W

4. NOTAÇÃO Q
5. ANÁLISE ASSINTÓTICA DE ALGORITMOS

1. INTRODUÇÃO E MOTIVAÇÃO

Sejam A e B dois algoritmos para resolver um certo problema.

TA(n) e TB(n) os respectivos tempos de processamento.

A variável n é uma medida do tamanho do problema.

Como identificar o melhor algoritmo?

Comparando as funções: TA(n) e TB(n)

O que significa TA(n) ser melhor do que TB(n) ou vice-versa?

2
1. INTRODUÇÃO E MOTIVAÇÃO

Suponha que conheçamos o tamanho do problema: n0.

Se TA(n0) < TB(n0) então certamente A é melhor do que B.

Em geral não conhecemos o tamanho do problema.

Se pudermos mostrar que TA(n) £ TB(n) para todo n ³ 0,


então certamente A é melhor do que B.

Nem sempre uma função é menor ou igual a outra para


qualquer valor de n.

Portanto, devemos considerar o comportamento assintótico


das funções: valores de n arbitrariamente GRANDES.

ROTEIRO

1. INTRODUÇÃO E MOTIVAÇÃO

2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

3. UM LIMITE ASSINTÓTICO INFERIOR – NOTAÇÃO W

4. NOTAÇÃO Q

5. ANÁLISE ASSINTÓTICA DE ALGORITMOS

3
2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

Def. O (Big O):


Seja f(n) função não negativa para todo n, n ³ 0.
Dizemos de “f(n) é O(g(n))”, se:
Existem um inteiro n0 e uma constante c > 0 tais que:
Para todo n ³ n0, f(n) £cg(n)

Notação:
f(n)=O(g(n))

2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

Exemplo: Mostrar que f(n)=8n + 128 é O(n2)

Devemos indicar um inteiro n0 e uma constante c > 0 tais que:


f(n) £cn2
Por exemplo, tomemos c=1:
2
f ( n ) ≤ cn ⇒ 8 n + 128 ≤ n 2 ⇒

n 2 − 8 n − 128 ≥ 0 ⇒ ( n − 16 )( n + 8 ) ≥ 0

Como n + 8 ³ 0, sempre (pois n ³ 0), temos que:


n - 16 ³ 0 Þ n ³ 16
Isto é, neste caso n0 deve ser, no mínimo, 16

4
2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

Exemplo: Mostrar que f(n)=8n + 128 é O(n2)


Assim, para n0 = 16 e c = 1, temos que:
Para todo n ³ n0, f(n) £cn2 , ou seja, f(n) = O(n2)

n2 é maior
que f(n) à
direita de
n=16

2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

Indique se são Verdadeiras ou Falsas as Afirmações:

Se f(n) = O(g(n)) e h(n) = O(g(n))


Então f(n) = h(n)

FALSA !!!

Contra-Exemplo:
Sejam f(n) = n e h(n) = n2, f(n) ¹g(n)
f(n) = O(n2) e h(n) = O(n2)

5
2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

Indique se são Verdadeiras ou Falsas as Afirmações:

Se f(n) = O(g(n))
Então g(n) = O-1(f(n))

FALSA !!!

A expressão g(n)=O-1(f(n)) não tem sentido:


O é apenas uma notação matemática e não possui inversa !!!

2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

Indique se são Verdadeiras ou Falsas as Afirmações:

Se f1(n) = O(g1(n)) e f2(n) = O(g2(n))


Então f1(n) + f2(n) = O(max{g1(n), g2(n)})

VERDADEIRA !!! Trata-se de um Teorema !!!

Demonstração:

Como f1(n) = O(g1(n)) e f2(n) = O(g2(n)), existem n1, n2, c1 e c2,


tais que:
f1(n) £ c1g1(n), para n ³ n1
f2(n) £ c2g2(n), para n ³ n2

6
2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

Teorema 3.1: Se f1(n) = O(g1(n)) e f2(n) = O(g2(n))


Então f1(n) + f2(n) = O(max{g1(n), g2(n)})

Demonstração:

Como f1(n) = O(g1(n)) e f2(n) = O(g2(n)), existem n1, n2, c1 e c2,


tais que:
f1(n) £ c1g1(n), para n ³ n1
f2(n) £ c2g2(n), para n ³ n2

Considere n0=max (n1, n2) e c0=2max(c1, c2)


Considere ainda a soma: f1(n) + f2(n) , para n ³ n0

2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

Teorema 3.1: Se f1(n) = O(g1(n)) e f2(n) = O(g2(n))


Então f1(n) + f2(n) = O(max{g1(n), g2(n)})

Demonstração (cont.): n0=max (n1, n2) e c0=2max(c1, c2) e


f1(n) + f2(n) , para n ³ n0

f1 ( n ) + f 2 ( n ) ≤ c1 g 1 ( n ) + c 2 g 2 (n )
c0 c c
≤ g 1 ( n ) + 0 g 2 ( n ) ≤ 0 ( g 1 ( n ) + g 2 ( n ))
2 2 2
c0
≤ (max( g 1 ( n ), g 2 ( n )) + max( g 1 ( n ), g 2 ( n )))
2
c0
≤ ( 2 max( g 1 ( n ), g 2 ( n ))) ≤ c 0 max( g 1 ( n ), g 2 ( n ))
2

7
2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

Teorema 3.1: Se f1(n) = O(g1(n)) e f2(n) = O(g2(n))


Então f1(n) + f2(n) = O(max{g1(n), g2(n)})

Exemplo de Aplicação Prática:


Sendo:
f (n) = 2n2, f(n) = O(n2) e
h(n) = n3, h(n) = O(n3)

Então pelo teorema 3.1:


f(n) + h(n) = O(max(n2, n3))=O(n3)

2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

Teorema 3.2: Se f(n) = f1(n) + f2(n) onde f1(n) e f2(n) são não
negativas tais que:
f 2(n )
lim = L, L ≥ 0
n→ ∞ f 1( n )
Então f(n) = O(f1(n))

Exemplo de Aplicação Prática:


Sendo: f (n) = n2, f(n) = O(n2) e h(n) = n3, h(n) = O(n3)
f (n ) n2 1
lim = lim 3
lim = 0
n→ ∞ h (n ) n→ ∞ n n→ ∞ n

Então aplicando o teorema 3.2:


h(n) + f(n) = n3 + n2 = O(h(n)) = O(n3)

8
2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

Teorema 3.3: Se f1(n) = O(g1(n)) e f2(n) = O(g2(n))


Então f1(n) x f2(n) = O(g1(n) x g2(n))

Demonstração:

Como f1(n) = O(g1(n)) e f2(n) = O(g2(n)), existem n1, n2, c1 e c2,


tais que:
f1(n) £ c1g1(n), para n ³ n1
f2(n) £ c2g2(n), para n ³ n2

Considere n0=max (n1, n2) e c0=c1c2


Considere ainda a soma: f1(n) x f2(n) , para n ³ n0

2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

Teorema 3.3: Se f1(n) = O(g1(n)) e f2(n) = O(g2(n))


Então f1(n) x f2(n) = O(g1(n) x g2(n))

Demonstração (cont.):
n0=max (n1, n2) e c0=c1c2 e
f1(n) x f2(n) , para n ³ n0

f1 ( n ) × f 2 ( n ) ≤ c1 g 1 ( n ) × c 2 g 2 (n )

≤ c 1 c 2 g 1 ( n ) g 2 ( n ) ≤ c 0 ( g 1 ( n ) × g 2 ( n ))

Portanto, f1(n) x f2(n) = O(g1(n) x g2(n))

9
2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

Teorema 3.3: Se f1(n) = O(g1(n)) e f2(n) = O(g2(n))


Então f1(n) x f2(n) = O(g1(n) x g2(n))

Exemplo de Aplicação Prática:


Sendo:
f (n) = 2n2 + n + 1, f(n) = O(n2) e
h(n) = n3 + n2 + n + 1, h(n) = O(n3)

Então pelo teorema 3.3:


f(n) ´ h(n) = O(n2 ´ n3)=O(n5),

OBS: Dedução sem o cálculo do produto f(n) ´ h(n)

2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

Teorema 3.4: Se f1(n) = O(g1(n)) e g2(n) uma função não


negativa, Então f1(n) x g2(n) = O(g1(n) x g2(n))
Demonstração:

Como f1(n) = O(g1(n)), existem n0, e c0, tais que:


f1(n) £ c0g1(n), para n ³ n0

f1 ( n ) × g 2 ( n ) ≤ ( c 0 g 1 ( n )) × g 2 (n )
≤ c0 ( g1(n ) × g 2 ( n ))

Assim f1(n) x g2(n) = O(g1(n) x g2(n))

10
2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

Teorema 3.4: Se f1(n) = O(g1(n)) e g2(n) uma função não


negativa, Então f1(n) x g2(n) = O(g1(n) x g2(n))

Exemplo de Aplicação Prática:


Sendo:
f (n) = 2n2 + n + 1, f(n) = O(n2) e
h(n) = n3

Então pelo teorema 3.4:


f(n) ´ h(n) = O(n2 ´ n3)=O(n5),

2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

Teorema 3.5: Se f(n) = O(g(n)) e g(n) = O(h(n))


Então f(n) = O(h(n))

Demonstração:

Como f(n) = O(g(n)) e g(n) = O(h(n)), existem n1, n2, c1 e c2,


tais que:
f(n) £ c1g(n), para n ³ n1
g(n) £ c2h(n), para n ³ n2

Considere n0=max (n1, n2) e c0=c1c2

11
2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

Teorema 3.5: Se f(n) = O(g(n)) e g(n) = O(h(n))


Então f(n) = O(h(n))

Demonstração (cont.): n0=max (n1, n2) e c0=c1c2. Para n ³ n0

f ( n ) ≤ c 1 g ( n ), n ≥ n 1

c 1 g ( n ) ≤ c 1 c 2 h ( n ), n ≥ n 0

c1c 2 h ( n ) = c 0 h ( n )

Assim: f(n) = O(h(n))

2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

Teorema 3.5: Se f(n) = O(g(n)) e g(n) = O(h(n))


Então f(n) = O(h(n))

Exemplo de Aplicação Prática:


Sendo:
f (n) = 5n3, f(n) = O(n3) e
h(n) = 3n2, queremos saber O(f(n) + h(n))

Pelo teorema 3.2: f(n) + h(n) = O(f(n))


Como f(n)=O(n3), pelo teorema 3.5, f(n) + h(n) = O(n3)

12
2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

Teorema 3.6: Seja um polinômio em n da forma:


m
f (n ) = ∑ ain i , a m > 0
Então f(n) = O(nm) i= 0

Exemplo de Aplicação Prática:


Sendo: f (n) = 2n2 + 5n3

Então, aplicando o teorema 3.5:


f(n) = O(n3)

2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

Teorema 3.7: Para todo inteiro k ³ 1: k


log n = O (n)

Obs: Apesar de que log n diverge na medida em que n cresce,


log n < n, para todo inteiro n ³ 0.

Obs: Aplicando os teoremas 3.5 e 3.3, e o fato de que n = O(n)


temos:
log(n) = O(n)
nlog(n) = O(n2),

13
2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

A notação O(.) caracteriza o comportamento assintótico de


uma função estabelecendo um limite superior quanto ao
crescimento desta função em relação ao tamanho do
problema.

A notação O(.) não informa o quão próximo do limite está o


comportamento real da função.

Def. (Justeza):
Seja f(n) = O(g(n)). Se para toda função h(n) tal que f(n) =
O(h(n)), também for verdade que g(n) = O(h(n)),
Então g(n) é um limite assintótico justo (ou estreito) para f(n)

2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

Exemplo: f(n)=8n + 128

Vimos que f(n) = O(n2). Pelo Teo 3.6 (polinômios): f(n) = O(n)

O(n) é um limite mais justo para f(n) do que O(n2)

Demonstração pela definição de justeza (e redução ao absurdo):

g(n)=n é um limite estreito de f(n) se para toda função h(n) tal


que f(n)=O(h(n)), também seja verdade que g(n)=O(h(n))

Suponhamos por absurdo que g(n) não seja um limite estreito


para f(n)=8n+128=O(h(n)).

Portanto, g(n) ¹O(h(n)).

14
2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

Exemplo: f(n)=8n + 128

Demonstração pela definição de justeza (e redução ao absurdo):


Suponhamos por absurdo que g(n) não seja um limite estreito
para f(n)=8n+128=O(h(n)).
Portanto, g(n) ¹O(h(n)).
Como, 8n+128 = O(h(n)), existem n0 e c tais que: 8n+128 £ c h(n),
para n ³ n0
É fato que para todo n, n ³ 0, n £ 8n+128.
Assim, g(n) £ 8n+128 £ c h(n), para n ³ n0 à g(n) £ c h(n)
Pela def.: g(n)=O(h(n)), o que é um absurdo.
Logo g(n)=n é um limite estreito para f(n)

2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

Convenções para as Expressões de O(.)


• Escrever expressão de O(.), sem os termos menos significativos
à
Exemplo: O(n2 + nlog(n) + n) O(n2)
• Desconsiderar coeficientes constantes
Exemplos:
à
O(3n2) O(n2),
à
O(1024) O(1)

• Expressões Comuns:

15
3. UM LIMITE ASSINTÓTICO INFERIOR – NOTAÇÃO W

Def. Ômega (W):


Seja f(n) função não negativa para todo n, n ³ 0.
Dizemos de “f(n) é Ômega g(n)”, se:
Existem um inteiro n0 e uma constante c > 0 tais que:
Para todo n ³ n0, f(n) ³ cg(n)

Notação:
f(n)=W(g(n))

3. UM LIMITE ASSINTÓTICO INFERIOR – NOTAÇÃO W

Exemplo: Mostrar que f(n)=5n2 - 64n + 256 é W(n2)

Devemos indicar um inteiro n0 e uma constante c > 0 tais que:


f(n) ³ cn2
Por exemplo, tomemos c=1:
2
f ( n ) ≥ cn ⇒ 5 n 2 − 64 n + 256 ≥ n 2 ⇒

4 n 2 − 64 n + 256 ≥ 0 ⇒ 4 ( n − 8 ) 2 ≥ 0

Como (n – 8)2 > 0 sempre, temos que:


n pode ser 0 Þ n0 = 0

2
3. UM LIMITE ASSINTÓTICO INFERIOR – NOTAÇÃO W

Exemplo: Mostrar que f(n)=5n2 - 64n + 256 é W(n2)


Assim, para n0 = 0 e c = 1, temos que:
Para todo n ³ n0, f(n) ³cn2 , ou seja, f(n) = W(n2)

n2 é menor
que f(n) à
direita de
n=0

3. UM LIMITE ASSINTÓTICO INFERIOR – NOTAÇÃO W

Teorema 3.8: Seja um polinômio em n da forma:


m
f (n ) = ∑ ain i , a m > 0
Então f(n) = W(nm) i= 0

Exemplo de Aplicação Prática:


Sendo: f (n) = 2n2 + 5n3

Então, aplicando o teorema 3.8:


f(n) = W(n3)

3
ROTEIRO

1. INTRODUÇÃO E MOTIVAÇÃO

2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

3. UM LIMITE ASSINTÓTICO INFERIOR – NOTAÇÃO W

4. NOTAÇÃO Q

5. ANÁLISE ASSINTÓTICA DE ALGORITMOS

4. NOTAÇÃO Q

Def. Teta (Q):


Seja f(n) função não negativa para todo n, n ³ 0.
Dizemos de “f(n) é Teta g(n)”, se:
f(n) = O(g(n)) e f(n) = W(g(n)), ao mesmo tempo

Notação:
f(n)=Q(g(n))

4
4. NOTAÇÃO Q

Exemplo: Mostrar que todo polinômio em n de grau m é Q(nm)


m
Seja um polinômio de grau m: f (n ) = ∑
i= 0
ain i , a m > 0

Pelo teorema 3.6 : f(n)=O(nm)

Pelo teorema 3.8 : f(n)=W(nm)

Portanto, pela definição anterior : f(n)=Q(nm)

4. NOTAÇÃO Q

Def. o (“o” pequeno):


Seja f(n) função não negativa para todo n, n ³ 0.
Dizemos de “f(n) é o(g(n))”, se:
f(n) = O(g(n)), mas f(n) não for W(g(n))

Notação:
f(n)=o(g(n))

5
4. NOTAÇÃO Q

Exemplo: Mostrar que f(n) = n + 1 é o(n2)

Claramente: f(n)=O(n2) (basta tomar n0=2 e c=1)

Por outro lado, para n grande, independente da escolha de c>0:


n + 1 nunca será superior a cn2.

Portanto, f(n) ¹W(n2).

Concluindo: f(n)=O(n2) mas f(n) ¹W(n2). Logo f(n)=o(n2)

ROTEIRO

1. INTRODUÇÃO E MOTIVAÇÃO

2. UM LIMITE ASSINTÓTICO SUPERIOR – NOTAÇÃO O

3. UM LIMITE ASSINTÓTICO INFERIOR – NOTAÇÃO W

4. NOTAÇÃO Q

5. ANÁLISE ASSINTÓTICA DE ALGORITMOS

Você também pode gostar