Exercicios Aula 9 - Sandra de Amo

Propaganda
Pós-graduação em Ciência da Computação – UFU
Disciplina – Análise de Algoritmos
Profa. Sandra de Amo
Exercícios – AULA 9
Exercicio 1. Execute passo a passo o algoritmo de multiplicação de inteiros de n
bits visto em aula, de complexidade O(n2) para os inputs: x = 10011011 e y =
10111010 (escritos na base 2).
Exercicio 2: Faça o mesmo do exercicio 1, mas utilizando o algoritmo de Gauss,
mais eficiente (com 3 chamadas recursivas ao invés de 4), visto em aula.
Exercicio 3: Começando com uma fórmula recursiva T(n) = 2 T(n/2) + O(n), onde
T(n) = tempo do algoritmo para entradas de tamanho n, é possivel, através de
substituições sucessivas, encontrar uma fórmula para T(n), em função somente de
n, como mostrado abaixo. Usando o fato de que O(n) ≤ cn, e que T(1) = O(1) temos :
T(n) = 2 T(n/2 ) + O(n) ≤ 2 T(n/2) + cn
O padrão genérico é:
Fazendo k = log2 n = número total de níveis
Pede-se: Faça o mesmo para as seguintes recorrências:
1. Faça o mesmo para a seguintes recorrência:
T(n) = 3T(n/2) + O(n).
Qual o termo geral k-ésimo nests caso. E qual valor de k deve ser utilizado
no final para obter a fórmula sem recorrência ?
2. Agora tente a recorrência T(n) = T(n-1) + O(1), um caso que não é coberto
pelo Teorema Mestre visto em aula. Você pode resolver esta fórmula
também, encontrando uma fórmula “pura”, sem recorrência ?
Exercicio 4: Suponha que você tem os seguintes algoritmos para resolver um
problema e precisa escolher um. Qual a complexidade em tempo de cada um dos
algoritmos e qual deles você escolheria ?
• O Algoritmo A resolve problemas de tamanho n dividindo-os em 5
subproblemas com input com tamanho n/2, resolvendo
recursivamente cada subproblema e combinando as soluções em
tempo linear.
• O Algoritmo B resolve problemas de tamanho n dividindo-os em 2
subproblemas com input de tamanho n-1, resolvendo
recursivamente cada subproblema e combinando as soluções em
tempo constante.
• O Algoritmo C resolve problemas de tamanho n dividindo-os em 9
subproblemas com input de tamanho n/3, resolvendo
recursivamente cada subproblema e combinando as soluções em
tempo O(n2).
Exercicio 5: Quantas linhas (em função de n, usando a notação O) o seguinte
programa imprime? Escreva uma fórmula de recorrência para L(n) = número de
linhas impresso pelo programa e resolva esta recorrência como no exercício 3.
Você pode supor que n é uma potência de 2.
Exercicio 6. Dado um array ordenado de inteiros distintos A[1,...,n], você quer
descobrir se existe um índice i tal que A[i] = i. Dê um algoritmo do tipo dividir para
conquistar que resolva este problema e cuja complexidade seja O(log n)>
Exercicio 7. Resolva as seguintes relações de recorrência e dê a ordem assintótica
correspondente O(.) para cada uma delas
Download