Lista de AEDS 1

2
UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA Estrutura de Dados 2 Exercícios – Lista 1 1. Suponha dois algoritmos A e B, com funções de complexidade de tempo a(n) = n 2 - n + 549 e b(n) = 49n + 49 respectivamente. Determine quais valores de n pertencentes ao conjunto de números naturais para os quais A leva menos tempo para executar do que B. n 2 - n + 549 < 49n + 49, que equivale a n 2 - 50n + 500 < 0. As raízes da equação correspondente, por Baskara: n = (50 +/- sqrt(50 2 - 4*1*500) )/2 =(50 +/- sqrt(2500-2000))/2 = (50 +/- 22.3)/2 . n 1 =13.8 e n 2 =36.1. Logo, a(n) < b(n) para 13 < n <37 , considerando n, números naturais. 2. Encontre a função de custo para cada um dos três fragmentos de código abaixo considerando que a única operação a ser levada em conta é a atribuição (:=). Faça uma tabela, para n variando de 1 a 10, e calcule o valor das três funções de custo para cada caso. Faça um esboço do gráfico para cada função.Tire suas conclusões. sum := n^2 sum := 0; para i de 1 a n faça sum := sum + n; sum := 0; para i de 1 a n faça para j de 1 a n faça sum := sum + 1; O primeiro fragmento de código executa uma atribuição (f(n) = 1), o segundo executa n atribuições (f(n) = n + 1), e o terceiro executa n 2 + 1 atribuições (f(n) = n 2 +1). n 1 2 3 4 5 6 7 8 9 10 1 1 1 1 1 1 1 1 1 1 1 n + 1 2 3 4 5 6 7 8 9 10 11 n 2 +1 2 5 10 17 26 37 59 65 82 101 Suponha que todos os três fragmentos façam a mesma coisa à variável sum. Se tivéssemos que escolher um fragmento com base apenas na velocidade,

description

lista de recursividade

Transcript of Lista de AEDS 1

  • 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

  • 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) 2n+1 = O(2n) b) 22n = O(2n) c) f(n) = O(u(n)) e g(n) = O(v(n)) => f(n) + g(n) = O(u(n) + v(n)) d) 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) = m. Por exemplo, c = 3 e m = 0; b) Falsa. No existem constantes positivas c e m, tais que 22n = m. Pois, 22n = 4n; c) Verdadeira. Existem constantes positivas c1, m1, c2, m2 tais que f(n) =m1 e g(n) = m2. Logo, f(n) + g(n)