Escolar Documentos
Profissional Documentos
Cultura Documentos
Agenda
3 Notação O
Custo de um algoritmo
Função de Complexidade
Para medir o custo de execução de um algoritmo é comum
definir uma função de custo ou função de complexidade f .
f (n) é a medida do tempo necessário para executar um
algoritmo para um problema de tamanho n.
Função de complexidade de tempo: f (n) mede o tempo
necessário para executar um algoritmo para um problema
de tamanho n.
Função de complexidade de espaço: f (n) mede a
memória necessária para executar um algoritmo para um
problema de tamanho n.
Utilizaremos f para denotar uma função de complexidade
de tempo daqui para a frente.
Na realidade, a complexidade de tempo não representa
tempo diretamente, mas o número de vezes que
determinada operação considerada relevante é executada.
Prof. Kleber Jacques F. de Souza | klebersouza@pucminas.br Algoritmos e Estrutura de Dados II
Medida de tempo de execução de uma programa Melhor caso, pior caso e caso médio Notação O
Melhor Caso:
Menor tempo de execução sobre todas as entradas de
tamanho n.
Pior Caso:
Maior tempo de execução sobre todas as entradas de
tamanho n.
Dominação assintótica
A análise de um algoritmo geralmente conta com apenas
algumas operações elementares.
A medida de custo ou medida de complexidade relata o
crescimento assintótico da operação considerada.
Definição: Uma função f (n) domina assintoticamente
outra função g(n) se existem duas constantes positivas c
e n0 tais que, para n ≥ n0 , temos |g(n)| ≤ c ∗ |f (n)|
Dominação assintótica
Exemplo
Sejam g(n) = (n + 1)2 e f (n) = n2
As funções g(n) e f (n) dominam assintoticamente uma a
outra, já que
|(n + 1)2 | ≤ 4|n2 |, para n ≥ 1
|n2 | ≤ |(n + 1)2 |, para n ≥ 0
Contra Exemplo
Sejam g(n) = n2 e f (n) = n
|n| ≤ |n2 |, para n ≥ 0
|n2 | ≤?|n|, para n ≥?
Portanto g domina assintoticamente f , mas o contrário não
é verdadeiro.
Notação O
g(n) = (n + 1)2
g(n) é O(n2 ), quando m = 1 e c = 4.
Porque (n + 1)2 ≤ 4n2 para n ≥ 1.
f (n) 10 20 30 40 50 60
n 0,00001 s 0,00002 s 0,00003 s 0,00004 s 0,00005 s 0,00006 s
n2 0,0001 s 0,004 s 0,009 s 0,0016 s 0,0035 s 0,0036 s
n3 0,001 s 0,008 s 0,027 s 0,64 s 0,125 s 0,316 s
n5 0,1 s 3,2 s 24,3 s 1,7 min 5,2 min 13 min
2n 0,001 s 1s 17,9 min 12,7 dias 35,7 anos 366 séc.
3n 0,059 s 58 min 6,5 anos 3.855 séc 108 séc. 1013 séc.
Exercício
Exercício
Desenvolva um programa que receba um valor N, onde N seja um
número natural maior que 0, e retorne o fatorial deste número. Calcular
a ordem de complexidade do algoritmo proposto.
Definição
A função fatorial é normalmente definida por:
n
Y
n! = k, ∀ ∈ N
k =1
Exemplo: 5! = 1 x 2 x 3 x 4 x 5 = 120
Dúvidas?