Académique Documents
Professionnel Documents
Culture Documents
INTRODUÇÃO A MEDIDA DE
COMPLEXIDADE DE ALGORITMOS
1
1/19/2016
Motivação
O tempo de execução de um algoritmo/programa não depende somente do algoritmo,
mas do conjunto de instruções do computador, a qualidade do compilador e a habilidade
do programador.
Por que analisar a eficiência de algoritmos se o hardware está cada dia mais rápido e com
mais capacidade de armazenamento ?
- O Hardware é um recurso finito e cada vez mais necessitamos resolver problemas te
tamanho muito extenso.
O mesmo problema pode ser resolvido por diferentes algoritmos. Como selecionar o mais
adequado?
- Para problemas de tamanho pequeno não há muita diferença na performance do
algoritmo, mas precisamos nos preocupar em selecionar o algoritmo adequado para
problemas maiores.
Como Medir?
• A complexidade pode ser calculada através de:
– Tempo de execução do algoritmo que pode ser determinado pelas instruções executadas, ou
seja, quanto “tempo” é necessário para computar o resultado para uma instância do problema
de tamanho n, onde n é o tamanho da entrada de dados;
2
1/19/2016
Como Medir?
• O esforço realizado por um algoritmo é calculado a partir
da quantidade de vezes que a operação fundamental é
executada.
3
1/19/2016
4
1/19/2016
5
1/19/2016
6
1/19/2016
7
1/19/2016
Exemplos
• O(1) • O(log n)
X=5 While(x>1):
print(x) print(x)
x=x//2
• O(n) • O(n log n)
While(x<=n): For(y in range(1,n)):
print(x) x=y
x+=1 While(x>1):
print(x)
x=x//2
Exemplos
• O(n2) • O(n3)
While(x<=n):
While(x<=n):
while(y<=n):
while(y<=n): while(z<=n):
print(x*y) print(x*y*z)
z+=1
y+=1
y+=1
x+=1 x+=1
8
1/19/2016
Bibliografia
Ziviani, N. Projeto de Algoritmos Com Implementações em Pascal e C, Pioneira Thomson
Learning, 2004, segunda edição. (Livro Texto) -
http://www2.dcc.ufmg.br/livros/algoritmos/