Buscar

exerInacabadoAula1209

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Prévia do material em texto

�
�
“livroAlgoritmosSanderson” — 2011/9/13 — 10:11 — page 18 — #28
�
�
�
�
�
�
18 1 Complexidade de tempo de algoritmos por divisa˜o e conquista
Quarto exemplo do me´todo da a´rvore de recursa˜o
O exemplo a seguir resolve a recorreˆncia
T (n) = 2T
�n
3
�
+ cn · lg n, (1.26)
considerando-se n= 3⇒ T (n) = Θ(1).
Teorema. 2T
�
n
3
�
+ cn · lg n= O(n·lg n).
Demonstrac¸a˜o. A primeira chamada da execuc¸a˜o de um algoritmo que tenha tempo de
execuc¸a˜o expresso pela recorreˆncia (1.26) tera´ tempo cn·lg n. Com isso, coloca-se esse
termo na raiz da a´rvore. A contribuic¸a˜o para o tempo de execuc¸a˜o deste nı´vel tambe´m e´
cn·lg n.
A cada chamada recursiva, o algoritmo faz duas novas chamadas recursivas, sendo
o nu´mero de elementos passados para cada uma dessas chamadas e´ um terc¸o. Com isso,
o segundo nı´vel da a´rvore de recursa˜o da Figura ?? tem dois nodos (falta fazer a figura!).
Cada nodo contribui com cn
3
lgn
3
. A contribuic¸a˜o de um nı´vel e´ a soma dos tempos de
execuc¸o˜es de cada nodo do nı´vel. A contribuic¸a˜o do segundo nı´vel da a´rvore e´ a soma
dos dois termos, resultando em c2n
3
·lgn
3
.
Cada uma das duas chamadas do segundo nı´vel de recursa˜o faz duas novas chama-
das recursivas. Com isso, o terceiro nı´vel da a´rvore de recursa˜o da Figura 1.3 tem quatro
nodos. Cada nodo contribui com cn
9
lgn
9
. A contribuic¸a˜o do terceiro nı´vel da a´rvore e´ a
soma dos quatro termos, resultando em c4n
9
·lg n
4
.
Devem-se escrever nı´veis na a´rvore de recursa˜o ate´ que o padra˜o seja percebido.
Neste exemplo, percebe-se, sem necessidade de se desenhar o quarto nı´vel na a´rvore,
que a contribuic¸a˜o do quarto nı´vel e´ c8n
27
·lg n
27
e que a contribuic¸a˜o e´ c(2
3
)in·lg n
3i
para o
i-e´simo nı´vel, em que a raiz e´ o nı´vel 0.
Cada nodo folha da a´rvore de recursa˜o contribui com 3·lg 3=Θ(1). Perceba que,
como a base do logaritmo e´ 3, enta˜o, neste exemplo, lg n = log3n. Ha´ 3c
n
log32
2
=
Θ(nlog32) nodos folhas nessa a´rvore de recursa˜o.
�
�
“livroAlgoritmosSanderson” — 2011/9/13 — 10:11 — page 19 — #29
�
�
�
�
�
�
1.2 Ana´lise de algoritmos divisa˜o e conquista 19
Precisa-se tambe´m descobrir a quantidade de nı´veis da a´rvore de recursa˜o. Clara-
mente, o nu´mero de elementos da entrada do algoritmo e´ n. O nu´mero de itens a cada
nı´vel de recursa˜o e´ dividido por 3 ate´ que n=3. Com isso, a altura da a´rvore de recursa˜o
e´ log3n-1. Deve-se considerar tambe´m a raiz, resultando em log3n nı´veis.
A construc¸a˜o da a´rvore de recursa˜o mostra que ha´ log3n nı´veis e o nı´vel i contribui
c(2
3
)in·log3
n
3i
para o tempo de execuc¸a˜o, em que a raiz e´ o nı´vel 0. Pode-se, enta˜o,
reescrever a recorreˆncia (1.26) como
T (n) = cn
log3n−1
∑
i=0
(
2
3
)ilog3
n
3i
. (1.27)
Note que a contribuic¸a˜o do u´ltimo nı´vel e´ cn(2
3
)log3n−1·log3
n
3log3n−1
=
c 3
2
nlog32·log3
n
n
3
= 3c
2
nlog32. A equac¸a˜o (1.27) pode ser reescrita como
T (n) = cn
log3n−1
∑
i=0
�
2
3
�i
(log3n− i) (1.28)
Aplicando-se propriedades de logaritmos, pode-se reescrever a equac¸a˜o (1.28) como
T (n) = cn(

log3n
log3n−1
∑
i=0
�
2
3
�i
−
log3n−1
∑
i=0
�
2
3
�i
i

 (1.29)
Note que no primeiro somato´rio da equac¸a˜o (1.29), o fator logarı´tmico na˜o consta no
somato´rio porque na˜o depende do ı´ndice do somato´rio. Utilizando-se a fo´rmula fechada
para a se´rie geome´trica (veja a sec¸a˜o de revisa˜o de matema´tica ba´sica no capı´tulo ??),
obte´m-se (tem que provar por induc¸a˜o!)
T (n) = cn

−3 · log3n(nlog3 23 −1)−
log3n−1
∑
i=0
�
2
3
�i
i

 (1.30)
Sabendo-se que
n−1
∑
i=0
ixi = x−nx
n+(n−1)xn+1
(1−x)2
, escreve-se a equac¸a˜o 1.30 como (tem que
�
�
“livroAlgoritmosSanderson” — 2011/9/13 — 10:11 — page 20 — #30
�
�
�
�
�
�
20 1 Complexidade de tempo de algoritmos por divisa˜o e conquista
provar por induc¸a˜o!)
T (n) = cn
�
−3 · log3n ·n
log3
2
3 +3 · log3n−6+9 · log3n ·n
log3
2
3 −6 ·nlog3
2
3 (log3n−1)
�
(1.31)
ou
T (n) = 3cn · log3n−6cn+6cn
log32 = O(n · lg n) (1.32)
O custo total 3c
2
nlog32 das chamadas recursivas no u´ltimo nı´vel e´ assintoticamente
menor que a contribuic¸a˜o da primeira chamada recursiva.
SeO(n·lg n) e´ um limite superior para a recorreˆncia, enta˜o, a mesma func¸a˜o tambe´m
deve ser um limite estrito Θ(n·lg n). Como T (n) ≤ 2T
�
n
3
�
+ cn·log3n ≤ 2d
n
3
·log3
n
3
+
cn·log3n=
2d
3
n(log3n−1)+cn·log3n=
2d
3
n · log3n−
2dn
3
+cn·log3n= p ·n·log3n−
2dn
3
,
em que p= 2d
3
+c, para n suficientemente grande, enta˜o, e´ possı´vel encontrar, para essa
u´ltima func¸a˜o:
• uma constante real maior ou igual a` p para que a func¸a˜o pertenc¸a a` O(n · lg n);
• uma constante real positiva que seja menor ou igual a` p para que a`
func¸a˜o pertenc¸a a Ω(n · lg n).

Outros materiais