Escolar Documentos
Profissional Documentos
Cultura Documentos
Exerccios
1) Prove que o seguinte algoritmo est correto:
function power(y, z)
x=1
while z > 0 do
x = x.y
z=z-1
return(x)
Algoritmo correto:
unsigned produto_corrigido(unsigned a, unsigned b)
{
if (b == 0)
return 0
x = a
resto = 0
while (b > 1)
{
if (b%2) resto = resto + x
x = x * 2
b = b / 2
}
return x+resto
}
ou alternativamente na forma recursiva:
8) Para duas funes g(n) e f(n) temos que f(n)=(n) se somente se f(n)= (g(n)) e
f(n)=O(g(n)). Explique o teorema acima.
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 .
9) Uma outra mtrica muito utilizada para avaliar algoritmos e a Mtrica Emprica. Essa
consiste em escolher uma mtrica (tempo, nmero de instrues executadas, etc), propor
entradas diferenciadas (geralmente com alguma caracterstica pr-definida), ou seja,
amostras. Finalmente executar o algoritmo com as entradas e analisar os resultados. Esta
medida e muito utilizada para comparar dois algoritmos. Critique a mtrica.
O problema desta medida a definio da amostra e como sero avaliados
os parmetros. Por exemplo, se utilizarmos a funo time para calcular
o tempo, podemos obter valores diferentes para sistemas operacionais
diferentes. Ainda, deve-se pensar que o clculo do tempo no pode incluir
o tempo em que o processo no esteve escalonado. Porm, este mtodo
muito interessante quando se deseja comparar dois ou mais algoritmo,
quando se deseja saber o comportamento do algoritmo para determinadas
bases de dados.
10) Por muitas vezes damos ateno apenas ao pior caso dos algoritmos. Explique o porque.
Porque normalmente desejamos saber qual o limite mximo gasto para
executar o um determinado algoritmo.
12) Projete o algoritmo mais eficiente que voc conseguir para encontrar a mediana de um
vetor de n elementos. Anlise sua complexidade.
Ordene os elementos e retorne o elemento n/2 da lista ordenada
Complexidade: O(n log n)
f(n) : nlogb
n : nlog2 4
n : n2:
A funo nlogb a domina a funo f(n) por um fator polinomial n1. Assim,
o caso 1 do Teorema Mestre se aplica e temos que T(n) = _(n2).
(b) T(n) = 4T(n/2) + n2
Para saber se o Teorema Mestre pode ser aplicado ou no, temos que ter
as constantes a _ 1 e b > 1 e a funo f(n) assintoticamente positiva.
Temos a = 4; b = 2; f(n) = n2 e as trs condies so satisfeitas.
f(n) : nlogb
n2 : nlog2 4
n2 : n2:
f(n) : nlogb a
n3 : nlog2 4
n3 : n2:
A funo f(n) domina a funo nlogb a por um fator polinomial n1. Assim,
o caso 3 do Teorema Mestre pode ser aplicado se a condio de
regularidade for satisfeita, ou seja, af(nb )
cf(n) para uma
constante c < 1.
af(n/b )
4(n/2 )
4n/8 <=
1/2n <=
<= cf(n)
<= cn
cn
cn: