Professional Documents
Culture Documents
FERRAMENTAS DE ANLISE
INTRODUO
MODELO MATEMTICO
ALGORITMO INFORMAL
ESTRUTURAS DE DADOS
PROGRAMA EM
PROGRAMA
PSEUDOLINGUAGEM
COMPUTACIONAL
TAD a descrio matemtica dos valores que um tipo de dado pode ter e das operaes que
podem ser feitas com eles.
TEMPO DE EXECUO
Pgina 1 de 11
2.1
Cresce com o tamanho da entrada, embora possa variar para entradas diferentes,
porm de mesmo tamanho.
Se todos os outros fatores forem iguais, o tempo de execuo do mesmo algoritmo para
os mesmos dados de entrada ser menor se o computador tiver, por exemplo, um processador
muito mais rpido, ou se a implementao for feita como um programa escrito em cdigo de
mquina em vez de uma implementao interpretada em uma mquina virtual.
2.2
limitaes srias:
Desta forma, apresentada neste curso uma metodologia geral para analisar o tempo
de execuo de um algoritmo, que:
Pode ser feita por meio do estudo de uma descrio de alto nvel do algoritmo
(pseudocdigo) sem que seja necessrio implement-lo ou execut-lo.
Pgina 2 de 11
ANLISE DE ALGORITMOS
3.1
Operaes primitivas
Como visto anteriormente, a anlise experimental importante, mas tem suas
limitaes. Para analisar um algoritmo em particular sem realizar experimentos para medir seu
tempo de execuo, pode-se usar a abordagem analtica. Esta abordagem consiste em analisar
diretamente o cdigo de alto nvel ou pseudocdigo.
Para isso, define-se um conjunto de operaes primitivas de alto nvel que so
independentes da linguagem de programao usada e podem se identificadas no
pseudocdigo. So exemplos de operaes primitivas:
Chamadas de mtodos.
Operaes aritmticas.
Acesso a um arranjo.
Retorno de um mtodo.
Uma operao primitiva corresponde a uma instruo de baixo nvel com um tempo de
execuo constante, mas que depende do ambiente em termos de software e hardware.
Entretanto, nesta abordagem assume-se implicitamente que os tempos de execuo de
operaes primitivas diferentes so similares. Assim, o nmero t de operaes primitivas que
um algoritmo realiza ser proporcional ao tempo de execuo desse algoritmo.
Considere-se, como exemplo, o algoritmo seguinte, que retorna o elemento mximo de
um arranjo A de n elementos.
Algoritmo maxVetor (A, n)
Entrada: arranjo A com n0 elementos
Sada: max, o maior elemento em A
{
max=A[0]
% chute inicial
para (i=1, i<n, i++) faa {
se (A[i]>max) ento
max=A[i]
}
retorne (max)
}
Pgina 3 de 11
Resumindo:
2 + 1 + n + 6(n-1) + 1 = 7n 2, no mximo.
O melhor caso (t(n)=5n) ocorre quando A[0] o maior elemento e, portanto, a varivel
max no tem seu valor alterado posteriormente. O pior caso (t(n)=7n-2) ocorre quando o
arranjo A tem seus elementos em ordem decrescente, de forma que max alterada a cada
iterao do lao.
3.2
significa que h situaes em que o nmero de operaes primitivas mnimo (melhor caso) e
outras em que este nmero mximo (pior caso).
possvel expressar o tempo de execuo de um algoritmo como uma mdia calculada a
partir de todas as entradas possveis (caso mdio). Todavia, uma anlise de caso mdio requer
tipicamente que sejam calculados os tempos de execuo baseados em uma distribuio de
probabilidade. Esse tipo de anlise frequentemente exige matemtica sofisticada e teoria das
probabilidades.
A figura seguinte exibe esquematicamente como o tempo de execuo do caso mdio
de um algoritmo pode ter qualquer valor entre o melhor caso e o pior caso, dependendo da
distribuio das entradas.
Pgina 4 de 11
A complexidade do pior caso a mais utilizada porque sua anlise mais fcil do que a
anlise do caso mdio, j que no requer conhecimento sobre teoria das probabilidades (mas
isso no uma regra geral). Requer apenas a habilidade de identificar a pior entrada possvel,
o que geralmente simples. Alm disso, fornece um limite superior para o nmero de passos
que o algoritmo pode efetuar, o que pode conduzir a algoritmos melhores: tendo certeza de
que um algoritmo tem bom desempenho no pior caso garante que ele tem bom desempenho
em todos os casos.
NOTAO ASSINTTICA
4.1
Notao O
A notao assinttica foi inventada por P. Bachmann, em 1892, para caracterizar o
comportamento assinttico de funes. Esta notao ficou conhecida como notao O (big oh)
e definida da seguinte forma:
Pgina 5 de 11
20n3 + 10n log n + 5 O(n3). Justificativa: 20n3 + 10n log n + 5 35n3, para c=35 e
n1. De fato, qualquer polinmio da forma aknk + ak-1nk-1 + ... + a0 ser sempre
O(nk).
3log n + log log n O(log n). Justificativa: 3log n + log log n 4log n, para c=4 e n2.
Pgina 6 de 11
funo, outras notaes fornecem maneiras assintticas de fazer outros tipos de comparaes.
Definio: Sejam f(n) e g(n) funes mapeando nmeros inteiros em nmeros reais. Dizse que f(n) (g(n)) (dito f(n) mega de g(n)) se g(n) O(f(n)); ou seja, se existe uma
constante c>0 e uma constante inteira n01 tais que f(n)cg(n) para nn0.
Esta definio permite dizer que uma funo assintoticamente maior que ou igual a
outra, exceto por um fator constante, conforme ilustra o grfico seguinte.
Exemplos:
20n3 + 10n log n + 5 (n3). Justificativa: 20n3 + 10n log n + 5 35n3, para c=35 e
n1. De fato, qualquer polinmio da forma aknk + ak-1nk-1 + ... + a0 ser sempre
(nk).
3log n + log log n (log n). Justificativa: 3log n + log log n 3log n, para c=3 e n2.
7n-2 (n). Justificativa: se f(n) = 7n-2, a relao 7n-2 5n verifica, para c=5 e n0=1
Da mesma que as notaes O e , a definio seguinte permite dizer que duas funes
so assintoticamente iguais, exceto por um fator constante.
Definio: Sejam f(n) e g(n) funes mapeando nmeros inteiros em nmeros reais. Dizse que f(n) (g(n)) (dito f(n) theta de g(n)) se f(n) O(g(n)) e f(n) (g(n)); ou seja, se
existem constantes c>0 e c>0, e uma constante inteira n01 tais que cg(n) f(n) cg(n) para
nn0.
Exemplos:
3log n + log log n (log n). Justificativa: 3log n + log log n 3log n, para c=3 e
n0=2; 3log n + log log n 4log n, para c=4 e n0=2.
Pgina 7 de 11
ANLISE ASSINTTICA
EXPRESSO
NOME
Constante
log
Logartmica
(log )
log quadrado
Raiz quadrada
Linear
log
n log n
Quadrtica
Cbica
Exponencial
log
log
1,4
16
64
16
2,8
24
64
512
256
16
16
64
256
4.096
65.536
32
5,7
32
160
1.024
32.768
4.294.967.296
64
64
384
4.096
262.144
1,84 x 1019
128
11
128
896
16.384
2.097.152
3,40 x 1038
256
16
256
2.048
65.536
16.777.216
1,15 x 1077
Pgina 8 de 11
5.1
512
23
1.024
10
32
512
4.608
262.144
134.217.728
1,34 x 10154
1,79 x 10308
Pgina 9 de 11
EXERCCIOS
a) Ordene a lista de funes a seguir usando a notao O. Agrupe as funes que so uma
da outra.
6 log
2
3
2
5
log log
(log )
2 (log )
log
2
4
log
log
Dica: quando estiver em dvida sobre duas funes f(n) e g(n), considere log (f(n)) e log
(g(n)), ou 2f(n) e 2g(n).
b) Faa um grfico das funes 12 , 6 log ,
para os eixos x e y; ou seja, para o valor n e para a funo f(n), plote a informao no
ponto (log n, log(f(n))).
c) Mostre que (n+1)5 O(n5).
Pgina 10 de 11
f)
i.
ii.
Para cada par de funes f(n) e g(n) na tabela seguinte, indique se f(n)=O(g(n)) (caso 1), ou
se g(n)=O(f(n)) (caso2).
( )
( )
10
10
log
log
+ log
log
ln
log
log( + 1)
log
10
cos( '2)
sin( '2)
( cos )
Pgina 11 de 11