Professional Documents
Culture Documents
COMPLEXIDADE
ALVARO A. F. DE SOUZA
AEDS 1 - AULA 2
NOTAÇÃO ASSINTÓTICA
A notações que usamos para descrever o tempo de
execução assintótica de um algoritmo são definidas em
termos de funções cujos domínios são o conjunto dos
números naturais N ={0,1,2,...}.
c1 ≤ ½- 3/n ≤ c2 Fazendo:
c1 ≤ ½- 3/n
c2≥ ½- 3/n
NOTAÇÃO
c2≥ ½- 3/n n ≥ 1 pois para qualquer
a desigualdade é válida para
valor menor que 1, -3/n cresce em módulo n ∈ ℕ. Temos que ½ ≥
½ - 3/n n ∈ ℕ é verdadeiro logo podemos tomar c2 com valor de ½
logo temos c2=½ .
nn > n! > 2n > n³ > n² > n log n > n > log n > 1
OPERAÇÕES RELEVANTES
CLASSES DE COMPORTAMENTO ASSINTÓTICO
f(n)=O(1) : O uso do algoritmo independe do tamanho de n. As instruções do
algoritmo são executadas um número fixo de vezes.
Considerando:
–n= 20, temos que 20! = 2432902008176640000 , um número com 19 dígitos.
–n= 40 temos um número com 48 dígitos.
FUNÇÃO DE COMPLEXIDADE
● Usa um modelo matemático baseado em um computador idealizado.
● Deve ser especificado o conjunto de operações e seus custos de
execuções.
● É mais usual ignorar o custo de algumas das operações e considerar
apenas as operações mais significativas.
Por exemplo, algoritmos de ordenação:
consideramos o número de comparações entre os elementos do conjunto a
ser ordenado e ignoramos as operações aritméticas, de atribuição e
manipulações de índices, caso existam.
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 em um problema de tamanho n.
● Função de complexidade de espaço: f (n) mede a memória necessária para
executar algoritmo em um problema de tamanho n.
● Utilizaremos f para denotar uma função de complexidade de tempo.
● A complexidade de tempo na realidade não representa tempo diretamente,
mas o número de vezes que determinada operação considerada relevante é
executada.
OPERAÇÕES RELEVANTES
Operações aritméticas
Comparações
Atribuições
Indexação em um arranjo