Escolar Documentos
Profissional Documentos
Cultura Documentos
a)
0
1
2
T (n)=2T (n 1)+n
2T (n1)=4T (n2)+2(n1)
4T (n2)=8T ( n3)+4(n2)
.
.
.
n2
n1
n2
2 T ( 2 ) =2 T (1)+2 (2)
2n1T (1)=2n11
(n2)
(n1)
n
k2nk =2n+12n
T(n) =
k=1
T ( n ) =T
b)
( n2 )+ n ,T (1)=1
2
3
.
.
.
k 1T (2)=T (1)+2
k
T ( 1 )=2 kk
k(k1)
2)
a) (0,5 pontos) Seja L = {2, 5, 5, 7, 8, 9, 10, 12, 15, 16, 18, 20, 21}. Simule o clculo de buscabinria(7,
L, 0, 12), exibindo os parmetros de entrada e o valor devolvido por cada chamada ao algoritmo
buscabinria.
Na primeira chamada do algoritmo:
Parmetros de Entrada L, x = 7, inicio = 0, fim = 12.
A verificao da base da recurso (inicio>fim) constatada como falso e a execuo segue.
Meio calculado com o valor 12/2 = 6
A primeira verificao do valor de x com o valor v[meio] falsa.
Observe que x menor que v[meio] que 10. Uma nova chamada ao algoritmo buscabinaria ser
efetuada.
Na segunda chamada
Parmetros de Entrada: L, x=7. Inicio = 0, Fim = 5.
A verificao da base falsa.
Meio calculado com o valor cho de 5/2 = 2
A primeira verificao do valor de x com o valor v[meio] falsa.
Observe que x maior que v[meio] que 5. Uma nova chamada ao algoritmo buscabinria ser
feita.
Na terceira chamada.
Parmetros de Entrada: L, x=7. Inicio = 3, Fim = 5.
A verificao da base falsa.
Meio calculado com o valor cho de 8/2 = 4
A primeira verificao do valor de x com o valor v[meio] falsa.
Observe que x menor que v[meio] que 8. Uma nova chamada ao algoritmo buscabinria ser
feita.
Na quarta chamada
Parmetros de Entrada: L, x=7, Inicio=3, Fim=3
A verificao da base falsa
Meio calculado como sendo 3.
A primeira verificao do valor de x com o valor v[meio] verdadeira, retorna verdadeiro.
b) (1 ponto) Determine a complexidade temporal e espacial do algoritmo buscabinria(mostre os
clculos realizados para determinar tais complexidades). O algoritmo buscabinria eficiente?
necessrio encontrar a relao de recorrncia associada busca binria. Podemos observar que o
algoritmo executa uma srie de instrues constantes at o momento em que a recurso ocorre.
No caso em que a recurso no ocorre, quando inicio>fim, o algoritmo executa apenas instrues de
tempo constante, ento a base da recurso ser T(1) = c,, pois o tempo para executar o algoritmo
em um array de 1 elemento constante . Em outros casos a recorrncia chamar a si mesma
sobre uma das metades do vetor. Como estamos tratando de termos assintticos, o vetor L pode ter
muitas posies e podemos pensar que o vetor dividido na metade para as outras iteraes:
Assim o algoritmo iria realizar aproximadamente o seguinte nmero de operaes:
T(n) = T(
Suponha que n = 2k
Utilizado o mtodo da substituio:
0
1
2
3
.
T(
T(
T(
T(
2k0
2k1
2k3
k4
2
) = T(
) = T(
) = T(
) = T(
2k1
2k2
2k4
k5
2
)+c
)+c
)+c
)+c
n
)+c
2
n
2
.
.
k
T( 2kk = C
log ( n) ).
3)
Algoritmo Potencia
Entrada: Dois nmeros naturais a e b
Sada: ab
Se b = 0
Devolva 1
Se no
b
)
2
aux = Potencia(a,
Se b for par
Devolva aux*aux
Se no
Devolva aux*aux*a
PROVA
Provemos por induo:
Sabemos que
ab =
b
2
b
2
a a , se b par
aa
b1
2
a
b
b1
2
, se b mpar
b
b
a , ) devolve a 2 . Observe que se b
2
b
for par o algoritmo Potencia devolve aux*auxque o mesmo quePotencia( a , ) * Potencia(
2
b
b
b
a , ) = a 2 * a 2 = ab.
2
De forma semelhante, suponhamos o caso em que b mpar, o Potencia devolver aux*aux*a = Potencia(
b1
b1
b
b
a , ) * Potencia( a , ) * a = aa 2 a 2
2
2
= ab
x
)+c
2
T(0) = c
De acordo com T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein, ao fim do captulo 9 (Medianas e
Estatstica de Ordem) do seu livro Introduo Anlise de Algoritmos eles afirmam a existncia de diversos
algoritmos lineares para encontrar a mediana de uma lista de nmeros e que alguns indivduos como
Bentand John forneceram limites inferiores para o problema. Podemos ento afirmar que a cota inferior
desse problema linear.
5)
6)
Algoritmo Matriz
Entrada: Duas A e B matrizes de tamanho NxM
Sada: Matriz C de tamanho NxM com a soma das matrizes A e B.
para i de 0 at n-1
par j de 0 at m-1
C[i][j] = A[i][j]+B[i][j]
devolva C
Observando que o algoritmo executa loops finitos que no so alterados no decorrer da execuo simples
observar que no final de cada iterao do loop interno a i-sima,j-sima posio da matriz C conter o
resultado da soma das respectivas posies das matrizes A e B. Sabendo tambm que i varia de 0 at n-1
garante que todas as linhas de A e B sero percorridas, do mesmo modo com j variando de 0 a m-1 garante
que todas as colunas sero acessadas. Dessa forma todas as combinaes de colunas e linhas sero
acessadas igualmente nas 3 matrizes, pois as 3 possuem o mesmo ndice de acesso em cada iterao.
O tamanho da sada que o problema produz uma matriz com o resultado da soma de duas outras matrizes
nos d uma pista sobre a cota inferior. necessrio no mnimo o tempo de salvar, ou realizar a soma para
cada elemento da matriz resultado, ento podemos dizer que a complexidade intrnseca deste problema
(NM), assumindo uma matriz resultado de tamanho N por M.
Analisando o algoritmo sugerido vemos que a instruo de soma dentro do loop interno uma instruo
crtica e executada N*M vezes. A complexidade temporal desse algoritmo seria ento (N*M). A
complexidade temporal do algoritmo igual a complexidade intrnseca do problema, logo este algoritmo um
algoritmo de cota inferior.