desejvel exprimir o consumo de tempo de um algoritmo de uma maneira que no dependa da linguagem de programao, nem dos detalhes de implementao, nem do computador empregado. Para tornar isto possvel, preciso introduzir um modo grosseiro de comparar funes. (dependncia entre o consumo de tempo de um algoritmo e o tamanho de sua entrada)
APA / Barrre
Essa comparao s leva em conta a velocidade de crescimento das funes. Assim, ela despreza fatores multiplicativos (pois a funo 2n2, por exemplo, cresce to rpido quanto 10n2) e despreza valores pequenos do argumento (a funo n2 cresce mais rpido que 100n, embora n2 seja menor que 100n quando n pequeno). Dizemos que esta maneira de comparar funes assinttica. H trs tipos de comparao assinttica: uma com sabor de , outra com sabor de , e uma terceira com sabor de =.
APA / Barrre
APA / Barrre
Definio: Dadas funes assintoticamente no negativas f e g, dizemos que f est na ordem de g e escrevemos f = (g) se f(n) c g(n) para algum c positivo e para todo n suficientemente grande. Em outras palavras, existe um nmero positivo c e um nmero n0 tais que f(n) c g(n) para todo n maior que n0.
APA / Barrre
Notao : Diagrama
F est em (G) tem sabor de F G tem sabor de F no cresce mais que G conceito sob medida para tratar de consumo de tempo de algoritmos
Programa de Ps-Graduao em Cincia da Computao DCC UFJF APA / Barrre
Notao : Exemplo 1
f(n) c g(n)
Como sabemos que 2 e 10 so bons valores para c e N? queremos: n2 +10n c.n2 dividindo por n2, temos: 1+10/n c se n 10 ento 1+10/n 2 parece que basta tomar c 2 e N 10
APA / Barrre
Notao : Exemplo 2
9n+9 = (n2)
APA / Barrre
Notao : Exemplo 3
APA / Barrre
Notao : Exemplo 4
APA / Barrre
Notao : Exemplo 5
lg n est em (n)
Prova: para todo n 1 n 2n lg n lg 2n lg n n
APA / Barrre
Notao : Exemplo 6
APA / Barrre
Notao : Exemplo 7
(f = (g))
f(n) c g(n)
APA / Barrre
Notao : Exemplo 8
Suponha que f(n) = 3 + 2/n e que g(n) = n0, ou seja, g(n)=1. Ento, para n 2 : 3 + 2/n 3 + 1 = 4 = 4n0
APA / Barrre
APA / Barrre
Notao : Exemplo 9
Procedure Verifica_Item(Lista: TipoLista; x: TipoItem; pos: integer); Var i: integer; Begin i:=1; O(1) achou := false; while (i <= Lista.Tamanho) and not achou do O(N) if Lista.Item[i] = x then achou := true; if achou then O(1) pos := i else for i:= Lista.Tamanho +1 to MaxTam; O(N) Lista.Item[i] := x; O(1) f(N) = O(7 * O(1) + 2*O(N)) = O(O(1) + (O(N)) = O(N)
Programa de Ps-Graduao em Cincia da Computao DCC UFJF APA / Barrre
Notao Assinttica
Terminologia de classes mais comuns de funes:
Logartmica - O(log n) Linear - O(n) Quadrtica - O(n2) Polinomial O(nk), com k1 Exponencial O(an), com a>1
APA / Barrre
Eficincia de um Algoritmo
Trs algoritmos para calcular: 1 + 2 + n para um n > 0
O(n)
O(n2)
O(1)
APA / Barrre
Eficincia de um Algoritmo
Eficcia
O(n)
APA / Barrre
Eficcia
O(n2)
Programa de Ps-Graduao em Cincia da Computao DCC UFJF APA / Barrre
Notao (mega)
Dadas funes F e G de N> em R, dizemos que F est em (G) se existe c em N> tal que: F(n) c G(n), para todo n suficientemente grande. claro que inversa de O, ou seja, uma funo F est em (G) se e somente se G est em O(F) (F=(G) se e somente se G=O(F)) Exemplo: n3 + 100n est em (n3), pois n3 + 100n 1n3, para todo n (n 1).
APA / Barrre
Notao : Exemplos
n2 est em (n), pois n2 n n lg n est em (n). De fato, para todo n2 tem-se: lg n 1, portanto n lg n n. ..........................
APA / Barrre
Notao (Teta)
Provar que:
Para qualquer a em R> e qualquer b em R, a funo an2 + bn est em (n2).
APA / Barrre
Podemos usar expresses semelhantes com ou no lugar de e melhor caso no lugar de pior caso.
APA / Barrre
Algoritmo polinomial: consome tempo O(nk) para algum k exemplos: O(n), O(n lg n), O(n2), O(n100) algoritmos polinomiais so considerados rpidos.
Programa de Ps-Graduao em Cincia da Computao DCC UFJF APA / Barrre
APA / Barrre