Você está na página 1de 18

Estruturas de Dados Bsicas I

Joo Carlos Xavier Jnior


jcxavier@imd.ufrn.br

Dependncia dos dados


Nem sempre a anlise trivial: o nmero de iteraes nos laos pode depender dos dados de entrada; Exemplo (comprimento do maior subvetor ordenado).

Qual ser a expresso se v estiver em ordem crescente? ou decrescente?


2

Dependncia dos dados

v em ordem decrescente
(3) n1 vezes e (4) 1 vez; Expresso n (crescimento linear). (3) n1 vezes e (4) j vezes, para j {i, ... , n1}; Expresso n2 (crescimento quadrtico).
3

v em ordem crescente

Complexidade de algoritmos
Dependendo dos dados, um algoritmo pode, ento funcionar de forma eficiente ou no; A anlise dos casos avalia a complexidade do algoritmo; H diferentes medidas de complexidade:
Pior caso: corresponde ao nmero de passos para a entrada mais desfavorvel; Melhor caso: corresponde ao nmero de passos para a entrada mais favorvel; Caso mdio: corresponde mdia dos passos para cada possvel entrada de acordo com a probabilidade dela ocorrer.
4

Comportamento Assinttico
Comportamento assinttico das funes de custo:
Comportamento de funes para grandes valores de n;

Qual o comportamento de (n) quando n cresce? Se f uma funo de complexidade para algoritmo F,
ento O(f) considerada a complexidade assinttica ou o comportamento assinttico do algoritmo F.

A relao de dominao assinttica permite comparar funes de complexidade.

Comportamento Assinttico
Uma funo (n) domina assintoticamente outra funo g(n) se existem duas constantes positivas c e n0 tais que, para n n0, temos |g(n)| c|(n)|. Exemplo:
custo 80 70

Sejam (n)=2n2.

g(n)=(n+1)2;

60 50 40 30 20 10 0 0.5 1.0 1.5 2.0 2.5 n 3.0 3.5 4.0 5.0 6.0 g(n) cf(n)

Comportamento Assinttico
Como exemplo, considere o nmero de operaes de cada um dos dois algoritmos que resolvem o mesmo problema, como funo de n;
Algoritmo 1: f1(n)=2n2 operaes Algoritmo 2: f2(n)=100n operaes

Qual dos dois algoritmos o melhor?

f1(n)??

f2(n)??

Depende do tamanho do problema!!!


7

Comportamento Assinttico
20000 18000 16000 14000

custo
n 10 20 30 40 50 60 70 80 90 100 f1(n) 200 800 1800 3200 5000 7200 9800 12800 16200 20000 f2(n) 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000

12000 10000 8000 6000 4000 2000 0 10 20 30 40 f1(n) f2(n)

50

60

70

80

90

100

Limite inferior e superior


A complexidade de pior caso define um limite superior; A complexidade de melhor caso define um limite inferior; Normalmente, o algoritmo funciona entre os dois limites:

Limite Superior
A notao O (big-oh) define um limite superior para a funo, por um fator constante. Letra grega micron; Escreve-se f(n) = O(g(n)), se existirem constantes positivas c e n0, tais que n n0, o valor de f(n) menor ou igual a cg(n). Neste caso, pode-se dizer que g(n) um limite assintoticamente superior (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).
10

Limite Superior
f(n)=(n+1)2 g(n)=4(n)2
f(n) g(n) 20 18 16 14 12 10 8 6 4 2 0 0 1 2 3 4 5 6

n0

f(n) = O(g(n))

Logo, f(n) O(n2), quando n0=1 e c=4, j que (n+1)2 4n2 para n 1
11

Limite inferior
A notao (big-Omega) 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 nn0, o valor de f(n) maior ou igual a cg(n). Neste caso, pode-se dizer que g(n) um limite assintoticamente inferior (lower bound) para f(n).

12

Limite inferior
f(n)=n2 g(n)=4n
20 18 16 14 12 10 8 6 4 2 0 0 1 2 3 cg(n) f(n)

n0
4

f(n) = (g(n))
13

Limite exato
A notao (big-Theta) limita a funo por fatores constantes. Escreve-se f(n)=(g(n)), se existirem constantes positivas c1, c2 e n0, tais que nn0, o valor de f(n) est sempre entre c1g(n) e c2g(n), inclusive. Neste caso, pode-se dizer que g(n) um limite assinttico firme (tight bound) para f(n).

14

Limite exato
f(n)=(n+1)2 g(n)=c1*(n)2 g(n)=c2*(n)2

n0
f(n) = (g(n))
15

Comportamento Assinttico
Exemplo:
Mostre que f(n) =3n3 +2n2 +n O(n3). Significa dizer que f(n)=O(g(n)). Ou seja, que g(n) ser superior a f(n) a partir de uma dado momento. Reposta: basta mostra que 3n3 +2n2 +n 6n3, para n 0.
f(n) 1000 900 800 700 600 500 400 300 200 100 0 0 1 2 3 4 5 6 7 8 1g(n) 6g(n)

16

Comportamento Assinttico
Exemplo:
Mostre que f(n) =3n3 +2n2 +n (n3). Significa dizer que f(n)=(g(n)). Ou seja, que f(n) ser superior a g(n). Reposta: basta mostra que 3n3 +2n2 +n 1n3, para n 0.
f(n) 1000 900 800 700 600 500 400 300 200 100 0 0 1 2 3 4 5 6 7 8 1g(n)

17

Exerccios
1. 2. 3. 4. Prove que 2n + 3n + 4 O(n) Prove que 3 + 2/n O(n0) Prove que n3 O(200n2) Prove que log n O(n).

18

Você também pode gostar