Anda di halaman 1dari 2

UNIVERSIDADE FEDERAL DE GOIS

INSTITUTO DE INFORMTICA
Estrutura de Dados 2
Exerccios Lista 1

1. Suponha dois algoritmos A e B, com funes de complexidade de tempo a(n) = n2 - n


+ 549 e b(n) = 49n + 49 respectivamente. Determine quais valores de n pertencentes
ao conjunto de nmeros naturais para os quais A leva menos tempo para executar
do que B.
n2 - n + 549 < 49n + 49, que equivale a n2 - 50n + 500 < 0. As razes da equao
correspondente, por Baskara:
n = (50 +/- sqrt(502 - 4*1*500) )/2 =(50 +/- sqrt(2500-2000))/2 = (50 +/- 22.3)/2 . n1 =13.8
e n2=36.1. Logo, a(n) < b(n) para 13 < n <37 , considerando n, nmeros naturais.
2. Encontre a funo de custo para cada um dos trs fragmentos de cdigo abaixo
considerando que a nica operao a ser levada em conta a atribuio (:=). Faa
uma tabela, para n variando de 1 a 10, e calcule o valor das trs funes de custo
para cada caso. Faa um esboo do grfico para cada funo.Tire suas concluses.
sum := 0;
para i de 1 a n faa
sum := sum + n;

sum := n^2

sum := 0;
para i de 1 a n faa
para j de 1 a n faa
sum := sum + 1;

O primeiro fragmento de cdigo executa uma atribuio (f(n) = 1), o segundo


executa n atribuies (f(n) = n + 1), e o terceiro executa n2 + 1 atribuies (f(n) =
n2 +1).
n
1
n+1
2
n +1

1
1
2
2

2
1
3
5

3
1
4
10

4
1
5
17

5
1
6
26

6
1
7
37

7
1
8
59

8
1
9
65

9
1
10
82

10
1
11
101

Suponha que todos os trs fragmentos faam a mesma coisa varivel sum. Se
tivssemos que escolher um fragmento com base apenas na velocidade,

certamente escolheramos o primeiro sobre o segundo, e o segundo sobre o


terceiro. De acordo com nossas hipteses simplificadas (nosso modelo), as
atribuies so as nicas operaes que importam. (Isso falso se elevar n ao
quadrado levar mais tempo do que fazer n adies). Neste modelo, o primeiro
fragmento mais barato (rpido) do que o segundo, e o segundo mais barato
do que o terceiro. E isso independente do custo real de uma atribuio. Alm
do mais, existe uma grande diferena entre o primeiro e o segundo fragmento.
No importa o valor de n, o primeiro fragmento faz sempre uma quantidade fixa
de trabalho. No entanto, medida que n aumenta, o segundo fragmento leva um
tempo proporcional a n. Assim, a relao entre o trabalho realizado pelo segundo
fragmento sobre o trabalho realizado pelo primeiro fragmento ilimitada. O
segundo fragmento realiza cerca de n vezes mais trabalho do que o primeiro, e n
pode, presumimos, tornam-se arbitrariamente grande. Alm disso, a mesma
relao verdadeira entre o segundo e o terceiro fragmento; n2 cresce muito
mais rpido do que n. Para ver isso, imagine se extrapolssemos os nmeros
para um tamanho de problema encontrado na prtica. Por exemplo, se n for um
milho, ento, n2 um milho de vezes maior que n. medida que n aumenta, a
razo entre os tempos de execuo do terceiro em relao ao segundo (ou do
segundo em relao ao primeiro) cresce sem limites. As taxas de crescimento do
trs fragmentos de cdigo so diferentes. Pense sobre as taxas de crescimento
em termos de mudana na quantidade de trabalho que os fragmentos tem que
fazer quando a entrada dobra de tamanho. Se a entrada (n) dobra, o tempo de
execuo do primeiro fragmento permanece o mesmo, o tempo de execuo do
segundo fragmento dobra, e tempo de execuo do terceiro fragmento
quadruplica! Ento, se para um dado programa temos que elevar n ao quadrado
uma vez por elemento, e se o nosso modelo simplista razovel, ento devemos
escolher o primeiro fragmento.
3. Explique a diferena entre O(1) e O(2).
O(1) e O(2) diferem apenas no valor da constante. Pela definio da notao O,
isso significa que, assintoticamente falando, no h diferena entre O(1) e O(2),
ou seja, as duas pertencem mesma classe de complexidade.
4. Indique se as afirmativas abaixo so verdadeiras ou falsas e justifique.
a)
b)
c)
d)

2n+1 = O(2n)
22n = O(2n)
f(n) = O(u(n)) e g(n) = O(v(n)) => f(n) + g(n) = O(u(n) + v(n))
f(n) = O(u(n)) e g(n) = O(v(n)) => f(n) - g(n) = O(u(n) - v(n))
a) Verdadeira. Existem constante positivas c e m tais que 2(n+1) <= c.2n, para todo
n >= m. Por exemplo, c = 3 e m = 0;
b) Falsa. No existem constantes positivas c e m, tais que 22n <= c.2n, para todo
n >= m. Pois, 22n = 4n;
c) Verdadeira. Existem constantes positivas c1, m1, c2, m2 tais que f(n) <= c1.u(n)
qq n >=m1 e g(n) <= c2.v(n) qq n >= m2. Logo, f(n) + g(n) <= c1.u(n) + c2.v(n) para
o maior de c1 e c2 e para o maior de m1 e m2, ou seja, f(n) + g(n) = O(u(n)) +
O(v(n)) = O(Max(u(n), v(n)) = O(u(n) + v(n)). A adio equivale a considerar o
mximo das duas funes.
d) Falsa. Pois, f(n) g(n) = O(u(n)) O(v(n)) = O(u(n) + (-1).O(v(n)), como -1
uma constante, ela pode ser desprezada. Logo, f(n) - g(n) = O(u(n)) + O(v(n)) =
O(Max(u(n), v(n))). A notao O corresponde relao <=, o que no permite
realizar subtrao nem diviso.

Anda mungkin juga menyukai