Escolar Documentos
Profissional Documentos
Cultura Documentos
Tarefa 1
Projeto e Análise de Algoritmos
Contents
Exercício 1 2
I. Exemplo do Mundo Real . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
II. Medidas de Eficiência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
III. Estrutura de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
IV. Melhor Solução x Solução Aproximada . . . . . . . . . . . . . . . . . . . . 3
Exercício 2 4
02 5 1
Apêndice 2 - Cálculo da Tabela de Complexidades 4
00 4
1
1) Forneça uma análise sobre os seguintes pontos:
02 5 1
4
2. Velocidade de processamento das instruções na máquina
00
3. Quantidade de memória utilizada
4. Tamanho do arquivo executável final
5. Custo dos recursos utilizados
III. Selecione uma estrutura de dados que você já tenha visto antes e discuta
seus pontos fortes e suas limitações
Solução:
Estrutura: Array
Prós
1. Fácil de ser implementada. Maioria das linguagens apresenta a estrutura “out-of-
the-box”
2. Índices diretos. Complexidade: O(1)
3. Acesso sequencial. Complexidade: O(n)
2
Contras
1. Dificuldade de alocação de novos espaços (estrutura estática)
2. Ordenação. Complexidade: O(n log(n))
3. Pesquisa. Complexidade: O(n)
4. Inserção e Exclusão de Itens. Complexidade: O(n)
Complexidades retiradas do site Big O Cheat Sheet
02 5 1
00 4
3
2) Preencha a tabela proposta na aula. Considere que o computador uti-
lizado para executar cada algoritmo executa 1000000 de instruções por se-
gundo. Nas linhas dessa tabela, são apresentadas as complexidades de cada
algoritmo e nas colunas estão representados os tamanhos de cada instância
do problema:
10 20 30 40 50 60
log(n)
n
n · log(n)
n2
n3
n5
2n
3n
Solução:
10 20 30 40 50 60
log(n) 0.0000033 0.0000043 4.90−6 5.32−6 5.64−6 5.90−6
n 0.00001 0.00002 3−5 4−5 5−5 6−5
n2 0.0001 0.0004
02 5 1
n.log(n) 0.0000332 0.0000864 1.47−4
9−4
2.12−4
1.60−3
2.82−4
2.50−3
3.54−4
3.60−3
n3
n
2n
3n
5
0.001
00
0.1
0.001
0.059
4
0.008
3.2
1.04
3486.78
0.027
24.3
1.073
2.058
0.064
102.4
1.096
1.2113
0.125
312.5
1.129
7.1717
0.216
777.6
1.1512
4.2322
4
apendice1 21/12/20 17:07
def insercao(n):
return 8 * math.pow(n,2)
def intercalacao(n):
return 64 * n * math.log(n,2)
plot(1,100)
plot(1,43)
# Testes
# print(insercao(10))
# print(intercalacao(10))
# print(insercao(44))
# print(intercalacao(44))
file:///Users/dseabra/Downloads/apendice1.html Page 1 of 2
apendice1 21/12/20 17:07
In [ ]:
file:///Users/dseabra/Downloads/apendice1.html Page 2 of 2
apendice2 21/12/20 17:07
def logn(n):
return math.log(n,2) / inst
def nn(n):
return n / inst
def nlogn(n):
return (n * math.log(n,2)) / inst
def n2(n):
return math.pow(n,2) / inst
def n3(n):
return math.pow(n,3) / inst
def n5(n):
return math.pow(n,5) / inst
def _2n(n):
return math.pow(2,n) / inst
def _3n(n):
return math.pow(3,n) / inst
lognarr = ['log(n)']
for n in x_vals:
lognarr.append(logn(n))
narr = ['n']
for i in x_vals:
narr.append(nn(i))
nlognarr = ['n.log(n)']
for n in x_vals:
nlognarr.append(nlogn(n))
n2arr = ['n^2']
for n in x_vals:
n2arr.append(n2(n))
n3arr = ['n^3']
for n in x_vals:
file:///Users/dseabra/Downloads/apendice2.html Page 1 of 4
apendice2 21/12/20 17:07
n3arr.append(n3(n))
n5arr = ['n^5']
for n in x_vals:
n5arr.append(n5(n))
_2narr = ['2^n']
for n in x_vals:
_2narr.append(_2n(n))
_3narr = ['3^n']
for n in x_vals:
_3narr.append(_3n(n))
Out[2]: 10 20 30 40 50
Algoritmos
5.643856e-
log(n) 0.000003 0.000004 4.906891e-06 5.321928e-06 5.906891e-06
06
2.500000e- 3.600000e-
n^2 0.000100 0.000400 9.000000e-04 1.600000e-03
03
6.400000e-
n^3 0.001000 0.008000 2.700000e-02 1.250000e-01 2.160000e-01
02
file:///Users/dseabra/Downloads/apendice2.html Page 2 of 4
apendice2 21/12/20 17:07
file:///Users/dseabra/Downloads/apendice2.html Page 3 of 4
apendice2 21/12/20 17:07
In [ ]:
file:///Users/dseabra/Downloads/apendice2.html Page 4 of 4