Algoritmos e Estruturas de Dados Alan R. R. de Freitas Lista de Exercı́cios – Análise de Complexidade de Algoritmos Ciência da Computação 1a Questão O que significa dizer que uma função g(n) é O(f (n))? 2a Questão Explique a diferença entre O(1) e O(2). 3a Questão Prove que f (n) = 12 + 22 + ... + n2 é igual a (n3 )/3 + O(n2 ) 4a Questão Indique se as afirmativas são verdadeiras ou falsas: (a) 2n+1 = O(2n ) (b) 22n = O(2n ) (c) 2n/2 = Θ(n) (d) f (n) = O(u(n)) e g(n) = O(v(n)) → f (n) + g(n) = O(u(n) + v(n)) 5a Questão f (n) = Θ(g(n)) se f (n) = O(g(n)) e g(n) = O(f (n)) Mostre que max(f (n), g(n)) = Θ(f (n) + g(n)) 6a Questão Se os algoritmos A e B levam tempo a(n) = n2 − n + 549 e b(n) = 49n + 49. Para quais valores A leva menos tempo para executar do que B? 7a Questão Apresente um algoritmo para obter o maior e o segundo maior elementos de um conjunto. Apresente uma análise do algoritmo. Ele é eficiente? Por quê? 8a Questão Considere um algoritmo para inserir um elemento em um vetor ordenado de elementos. Qual o limite inferior para este problema? Qual o melhor caso? Qual o pior caso? Qual o caso médio? 1 9a Questão Resolver as seguintes equações de recorrência: (a) T (n) = T (n − 1) + c, T (1) = 0 onde c é uma constante. (b) T (n) = T (n − 1) + 2n para n ≥ 1, T (0) = 1 (c) T (n) = cT (n − 1), T (0) = k. c, k constantes, n > 0 10a Questão Qual a equação de recorrência para um algoritmo que acha recursivamente n fatorial? Resolva. Qual a complexidade do algoritmo que resolve o problema iterativamente? 11a Questão Do ponto de vista assintótico: n 1 ≺ log log n ≺ log n ≺ n ≺ nc ≺ nlog n ≺ cn ≺ nn ≺ cc Onde k ≥ 1 e 0 < < 1 < c Indique se A é O, o, Ω, ω ou Θ de B para os pares abaixo: A A A A A A A = = = = = = logk n k n p (n) 2n nlog m log(n!) B B B B B B B O = = = = = = n cn nsin n 2n/2 mlog n log(nn ) 2 o Ω ω Θ