Академический Документы
Профессиональный Документы
Культура Документы
Logo, a anlise de algoritmos realizada para valores grandes de n. Estuda-se o comportamento assinttico das funes de custo (comportamento de suas funes de custo para valores grandes de n). O comportamento assinttico de f(n) representa o limite do comportamento do custo quando n cresce.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 2
Dominao assinttica
A anlise de um algoritmo geralmente conta com apenas algumas operaes elementares. A medida de custo ou medida de complexidade relata o crescimento assinttico da operao considerada. Definio: Uma funo f(n) domina assintoticamente outra funo g(n) se existem duas constantes positivas c e n0 tais que, para n n0, temos |g(n)| c |f(n)|.
Exemplo: Sejam g(n) = (n+1)2 e f(n) = n2 As funes g(n) e f(n) dominam assintoticamente uma a outra, j que |(n+1) 2| 4|n2| para n 1 e |n2| |(n+1) 2| para n 0.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 3
Notao
Notao
A notao limita a funo por fatores constantes. Escreve-se f(n) = (g(n)), se existirem constantes positivas c1, c2 e n0 tais que para n n0, o valor de f(n) est sempre entre c1 g(n) e c2g(n) inclusive. Neste caso, pode-se dizer que g(n) um limite assinttico firme (em ingls, asymptotically tight bound) para f(n).
Notao : Exemplo
Mostre que [(n2)/2] 3n = (n2)
Para provar esta afirmao, devemos achar constantes c1 > 0, c2 > 0, n > 0, tais que: c1n2 [(n2)/2] 3n c2n2 para todo n n0.
Notao : Exemplo
A inequao mais a direita ser sempre vlida para qualquer valor de n 1 ao escolhermos c2 1/2. Da mesma forma, a inequao mais a esquerda ser sempre vlida para qualquer valor de n 7 ao escolhermos c1 1/14. Assim, ao escolhermos c1 = 1/14, c2 = 1/2 e n0 = 7, podemos verificar que [(n2)/2] 3n = (n2). Note que existem outras escolhas para as constantes c1 e c2, mas o fato importante que a escolha existe. Note tambm que a escolha destas constantes depende da funo [(n2)/2] 3n. Uma funo diferente pertencente a (n2) ir provavelmente requerer outras constantes.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 9
10
Notao O
A notao O define um limite superior para a funo, por um fator constante. Escreve-se f(n) = O(g(n)), se existirem constantes positivas c e n0 tais que para n n0, o valor de f(n) menor ou igual a cg(n). Neste caso, pode-se dizer que g(n) um limite assinttico superior (em ingls, asymptotically upper bound) para f(n). Escrevemos f(n) = O(g(n)) para expressar que g(n) domina assintoticamente f(n). L-se f(n) da ordem no mximo g(n).
11
Notao O: Exemplos
Seja f(n) = (n+1) 2.
Logo f(n) O(n2), quando n0 = 1 e c = 4, j que (n+1) 2 4(n2) para n 1
12
Notao O: Exemplos
Mostre que g(n) = 3n3 + 2n2 + n O(n3).
Basta mostrar que 3n3 + 2n2 + n 6n3, para n 0. A funo g(n) = 3n3 + 2n2 + n tambm O(n4), entretanto esta afirmao mais fraca do que dizer que g(n) O(n3).
13
Notao O
Quando a notao O usada para expressar o tempo de execuo de um algoritmo no pior caso, est se definindo tambm o limite (superior) do tempo de execuo desse algoritmo para todas as entradas. Por exemplo, o algoritmo de ordenao por insero (a ser estudado neste curso) O(n2) no pior caso.
Este limite se aplica para qualquer entrada.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 14
Notao O
Tecnicamente um abuso dizer que o tempo de execuo do algoritmo de ordenao por insero O(n2) (i.e., sem especificar se para o pior caso, melhor caso, ou caso mdio) O tempo de execuo desse algoritmo depende de como os dados de entrada esto arranjados. Se os dados de entrada j estiverem ordenados, este algoritmo tem um tempo de execuo de O(n), ou seja, o tempo de execuo do algoritmo de ordenao por insero no melhor caso O(n). O que se quer dizer quando se fala que o tempo de execuo O(n2) que no pior caso o tempo de execuo O(n2). Ou seja, no importa como os dados de entrada esto arranjados, o tempo de execuo em qualquer entrada O(n2).
15
16
17
Notao
A notao define um limite inferior para a funo, por um fator constante. Escreve-se f(n) = (g(n)), se existirem constantes positivas c e n0 tais que para n n0, o valor de f(n) maior ou igual a cg(n).
Pode-se dizer que g(n) um limite assinttico inferior (em ingls, asymptotically lower bound) para f(n).
18
Notao
Quando a notao usada para expressar o tempo de execuo de um algoritmo no melhor caso, est se definindo tambm o limite (inferior) do tempo de execuo desse algoritmo para todas as entradas. Por exemplo, o algoritmo de ordenao por insero (n) no melhor caso.
O tempo de execuo do algoritmo de ordenao por insero (n).
O que significa dizer que o tempo de execuo (i.e., sem especificar se para o pior caso, melhor caso, ou caso mdio) (g(n))?
O tempo de execuo desse algoritmo pelo menos uma constante vezes g(n) para valores suficientemente grandes de n.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 19
Notao : Exemplos
Para mostrar que f(n) = 3n3 + 2n2 (n3) basta fazer c = 1, e ento 3n3 + 2n2 n3 para n 0. Seja f(n) = n para n mpar (n 1) e f(n) = (n2)/10 para n par (n 0).
Neste caso f(n) (n2), bastando considerar c = 1/10 e n = 0, 2, 4, 6, ...
PAA - Adaptado de Prof. Loureiro dcc/ufmg 20
No contraditrio dizer que o tempo de execuo deste algoritmo no pior caso (n2), j que existem entradas para este algoritmo que fazem com que ele execute em tempo (n2).
PAA - Adaptado de Prof. Loureiro dcc/ufmg 21
22
23
Teorema
Para quaisquer funes f(n) e g(n), f(n) = (g(n)) se e somente se, f(n) = O(g(n)), e f(n) = (g(n))
24
Estas duas notaes no so usadas normalmente, mas importante saber seus conceitos e diferenas em relao s notaes O e , respectivamente.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 25
Notao o
O limite assinttico superior definido pela notao O pode ser assintoticamente firme ou no.
Por exemplo, o limite 2n2 = O(n2) assintoticamente firme, mas o limite 2n = O(n2) no .
A notao o usada para definir um limite superior que no assintoticamente firme. Formalmente a notao o definida como:
f(n) = o(g(n)), para qq c > 0 e n0|0 f(n) < cg(n), pt n n
0
Notao o
As definies das notaes O (o grande) e o (o pequeno) so similares. A diferena principal que em f(n) = O(g(n)), a expresso 0 f(n) cg(n) vlida para todas constantes c > 0. Intuitivamente, a funo f(n) tem um crescimento muito menor que g(n) quando n tende para infinito. Isto pode ser expresso da seguinte forma:
lim
f ( n) 0 g ( n)
Notao
Por analogia, a notao est relacionada com a notao da mesma forma que a notao o est relacionada com a notao O. Formalmente a notao definida como: f(n) = (g(n)), para qq c > 0 e n0|0 cg(n) < f(n), p t n n0 Por exemplo, (n2)/2 = (n), mas (n2)/2 (n2). A relao f(n) = (g(n)) implica em
f ( n) lim n g ( n)
se o limite existir.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 28
Comparao de programas
Podemos avaliar programas comparando as funes de complexidade, negligenciando as constantes de proporcionalidade. Um programa com tempo de execuo O(n) melhor que outro com tempo O(n2). Porm, as constantes de proporcionalidade podem alterar esta considerao. Exemplo: um programa leva 100n unidades de tempo para ser executado e outro leva 2n2. Qual dos dois programas melhor? Depende do tamanho do problema. Para n < 50, o programa com tempo 2n2 melhor do que o que possui tempo 100n. Para problemas com entrada de dados pequena prefervel usar o programa cujo tempo de execuo O(n2). Entretanto, quando n cresce, o programa com tempo de execuo O(n2) leva muito mais tempo que o programa O(n).
29
Exemplo
O que significa um algoritmo ser O(2) ou O(5)?
30
Exemplo:
Algoritmo de pesquisa binria.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 31
Exemplos:
Algoritmo de pesquisa seqencial. Algoritmo para teste de planaridade de um grafo.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 32
33
Exemplo:
Algoritmo do Caixeiro Viajante
PAA - Adaptado de Prof. Loureiro dcc/ufmg 36
Considerando:
n = 20, temos que 20! = 2.432.902.008.176.640.000, um nmero com 19 dgitos. n = 40 temos um nmero com 48 dgitos.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 37
38