Vous êtes sur la page 1sur 2

Aluno: Gustavo José Oliveira Santos

RESPOSTAS
1ª LISTA DE EXERCÍCIOS DE PROJETO E ANÁLISE DE ALGORITMOS

1. O que é um algoritmo?
Um algoritmo é uma sequência de instruções não ambíguas para resolver um
problema, isto é, para obter uma saída desejada para qualquer entrada legítima em um
intervalo de tempo finito.
Um algoritmo é qualquer procedimento computacional que recebe como entrada
um valor ou um conjunto de valores e produz como saída um valor ou um conjunto de
valores.
Podemos concluir que um algoritmo é uma sequência de passos computacionais
que transformam a entrada em saída.

2. O que significa dizer que um algoritmo executa em tempo polinomial a n?


Um algoritmo é dito ser de tempo polinomial se seu tempo de execução é limitado
superiormente por uma expressão polinomial no tamanho da entrada do algoritmo, i.e.,
T(n) = O(nk) para uma constante k. Problemas para os quais um algoritmo de tempo
polinomial existe pertencem à classe de complexidade P, que é o campo central da teoria
da complexidade computacional. A Tese de Cobham determina que este tempo
polinomial é um sinônimo para "tratável", “eficiente” ou “rápido”.
Alguns exemplos de algoritmos de tempo polinomial:

 O algoritmo quicksort sobre n inteiros executa no máximo 𝐴𝑛2 operações para


uma constante A. Assim então rodando em tempo 𝑂𝑛2 e sendo um algoritmo de
tempo polinomial.
 Todas as operações aritméticas básicas (adição, subtração, multiplicação, divisão
e comparação) podem ser realizadas em tempo polinomial.
 Acoplamento em grafos pode ser encontrado em tempo polinomial.
3. Para cada função f(n) e cada tempo t na tabela a seguir, determine o maior tamanho n
de um problema que pode ser resolvido no tempo t, supondo-se que o algoritmo para
resolver o problema demore f(n) microssegundos.
1 seg 1 min 1 hora 1 dia 1 mês
Log n 9,97 15,87 21,78 26,36 31,27
N 1.000 60.000 3.600.000 86.400.000 2.592.000.000
𝑛2
𝑛3
2𝑛

4. Sejam A e B dois algoritmos cujas complexidades são respectivamente determinadas


pelas funções f(n) e g(n) dadas abaixo. Para cada caso, determine os valores inteiros
positivos de n para os quais o algoritmo A leve menos tempo para executar do que o
algoritmo B.
a) f(n)= 2n² -2 e g(n)= 3n +5
b) f (n)  3n4  2n² 1 e g(n) = 4n² + 1
5. Suponha que estamos comparando uma implementação do algoritmo de ordenação por
inserção, com uma implementação do mergesort. O primeiro consome 8n² unidades de
tempo quando aplicado a um vetor de comprimento n, segundo consome 64nlog 2 n .
Para que valores de n o primeiro é mais rápido que o segundo?
6. É verdade que n² + 2000n +5466 = O(n²)? Justifique.
7. É verdade que n² - 2000n +5466 = O(n)? Justifique.
8. É verdade que n4  99988889n2  5000008  O(n3) ? Justifique.
9. Considere a equação de recorrência a seguir, definindo T(n):

Demonstre por indução que T(n)= n(n +1)/2.


10. Através do Método Mestre, determinar limites assintóticos para as seguintes
recorrências.
a)T(n)=4T(n/2)+n
b)T(n)=4T(n/2)+n²
c) T(n) = 7T(n/8) + n²

Vous aimerez peut-être aussi