Você está na página 1de 2

Pontifcia Universidade Catlica de Gois

Escola de Cincias Exatas e de Computao


Projeto e Anlise de Algoritmos CMP1065
Exerccios
1. Dois algoritmos A e B possuem complexidade n 5 e 2n, respectivamente. Voc
utilizaria o algoritmo B ao invs do A. Em qual caso? Exemplifique.
Resposta: Sim. Apesar do algoritmo ser exponencial, quando o
valor de n pequeno, esta funo produz um tempo de
complexidade menor do que a funo do algoritmo A. Por exemplo
para valores de n iguais 2 ... 10 20
2. Para duas funes g (n) e f(n) temos que f(n)=teta(n) se somente se f(n)=
(g(n)) e f(n)=O(g(n)). Explique o teorema acima.
Resposta: A notao teta indica que a funo f (n) est entre um
limite superior e um limite inferior. Se f (n) teta de g(n) que dizer
que f(n) tem limite superior em g(n) se somente se f(n)<= g(n)*
c1, onde c1 uma constante qualquer para n>m, ou seja f(n)=
O(g(n)). O mesmo vlido para notao .
3. Podemos definir o seguinte algoritmo para calcular a ordem de
complexidade de algoritmos no recursivos:
I.
Escolher o parmetro que indica o tamanho da entrada
II.
Identificar a operao bsica (comparao, atribuio)
III.
Estabelea uma soma que indique quantas vezes sua operao
bsica foi executada (pio caso)
IV.
Utilize regras para manipulao de soma e frmulas definindo uma
funo de complexidade
V.
Encontre a ordem de complexidade
(a) baseando-se no algoritmo acima determine a ordem de complexidade do
algoritmo abaixo:
MaxMin(vetor v)
max=v[1]; 1
min=v[1]; 1
para i=2 at n faa 2n-2
se v[1]> max ento max=v[1]; fimse 1 XOR 0
se v[1]< min ento min=v[1]; fimse 0 XOR 1
fimpara;
fim.
Resposta: A escolha do parmetro n, que indica a quantidade de
elementos do vetor. A operao bsica a comparao, pois esta
domina a o loop interno e a complexidade dada por 3(n-1). O
algoritmo da ordem de complexidade O (n).

(b) podemos dizer que o algoritmo acima O (n 2)? Justifique.


No, pois a complexidade dada por 3(n-1), portanto o algoritmo
da ordem de complexidade O (n).
4. Prove que:
n

j=( n3)
i=1 j=1

5. Considere o seguinte algoritmo recursivo, cujo argumento n um nmero


inteiro positivo.
Asterisco(n)
1
se n>0
2
ento Asterisco(n-1)
3
Para i<-1 at n faa
4
Imprima *
5
Asterisco(n-1)
Para um dado valor de n, quantos asteriscos sero impressos em uma
chamada de Asterisco(n)? Justifique a sua resposta mostrando os clculos
que fez para chegar a ela.
6. O Algoritmo abaixo (Multiplicao de matrizes) tem como entrada Duas
matrizes A = (aij ) Rmn, B = (bjk) Rno .
Sada: O produto C = (cik) = AB Rmo .
1 for i := 1, . . . , m do
2 for k := 1, . . . , o do
3
cik := 0
4
for j := 1, . . . , n do
5
cik := cik + aij bjk
6
end for
7 end for
8 end for
7. Escreva as funes e faa anlise da complexidade dos 3 algoritmos de
ordenao listados abaixo, informando a complexidade no pior caso, caso
mdio e melhor caso.
a. Insertion Sort
b. Selection Sort
c. Bubble Sort