Você está na página 1de 54

Noes de anlise de complexidade Parte I: Introduo

Professor Alexandre Magno de Sousa Departamento de Cincias Exatas e Aplicadas

Algoritmos e Estrutura de Dados

Sumrio

Introduo Exemplos de anlise de algoritmos Crescimento assinttico das fun es Classes de complexidade Classes de algoritmos e medidas de tempo !un es t"picas e estimati#as O-grande $eferncias %i%liogrficas

Introduo

& pro'eto de algoritmos ( fortemente influenciado pelo estudo de seus comportamentos) Depois *ue decis es de pro'etos so feitas o algoritmo de#e ser implementado) +rios algoritmos podem ser utili,ados e de#e-se estudar aspectos de tempo de execuo e espao) Muitos destes algoritmos so encontrados em reas como. pesquisa operacional, otimizao, teoria dos grafos, estatstica, probabilidade, entre outras)

Introduo
Existem dois pro%lemas %em distintos.

Anlise de um algoritmos em particular:

Qual o custo de usar um dado algoritmo para resolver um problema especfico?

Anlise de uma classe de algoritmos:

Qual o algoritmo de menor custo para resolver um problema particular?

Introduo

Determinando o custo/ tem-se a medida de dificuldade para resolver um dado pro%lema) Se o custo de um dado algoritmo ( o menor/ pode-se concluir *ue o algoritmo ( timo) Podem existir #rios algoritmos para resol#er o mesmo pro%lema e necessrio escolher o melhor) Se a mesma medida de custo ( aplicada/ ( poss"#el compar-los e escol0er o mais ade*uado)

Introduo

& custo de execuo de um algoritmo pode ser medido de #rias maneiras) 1ma delas ( a medio do tempo de execuo real de um algoritmo em um computador) !"ees:

#i$ resultados dependem do compilador) #ii$ resultados dependem do hardware) #iii$ resultados dependem do taman0o da memria)

Introduo

Para medir o custo de execuo ( comum definir uma funo de custo ou funo de complexidade f) f(n) ( a medida de tempo necessrio para executar um algoritmo para um pro%lema de taman0o n) Se f(n) ( a medida da *uantidade da memria necessria para executar um algoritmo/ ento ( c0amada de funo de complexidade de espao)

Anlise de algoritmos: exemplo

Considere um algoritmo para encontrar o maior elemento de um #etor de inteiros)

9 10

se"a f(n) o custo do o n%mero de comparaes

Anlise de algoritmos: exemplo

int max2 int #34/ int n 56 int max 7 #384/ i9 &or2 i 7 :9 i ; n9 i<< 5 i&2 max ; #3i4 5 max 7 #3i49 =

se"a f(n) o custo do o n%mero de comparaes

Anlise de algoritmos: exemplo

int max2 int #34/ int n 56 int max 7 #384/ i9 &or2 i 7 :9 i ; n9 i<< 5 i&2 max ; #3i4 5 max 7 #3i49 = n 1
f ( n )= 1 =( n1 )1 =n1
1

se"a f(n) o custo do o n%mero de comparaes

Anlise de algoritmos: exemplo

int max2 int #34/ int n 56 int max 7 #384/ i9 &or2 i 7 :9 i ; n9 i<< 5 i&2 max ; #3i4 5 max 7 #3i49 = n 1
1

f ( n ) =n 1, n> 0

f ( n )= 1 =( n1 )1 =n1

Anlise de algoritmos
'el(or caso. menor tempo de execuo) Pior caso. maior tempo de execuo) )aso m*dio ou caso esperado. m(dia dos tempos de execuo de todas as entradas de taman0o n)
1ma distri%uio de pro%a%ilidades so%re o con'unto de entradas de taman0o n ( suposta e custo ( o%tido com %ase nessa distri%uio)

se"a f(n) o custo do o n%mero de comparaes

Anlise: pes+uisa se+uencial

Pes+uisa se+uencial. examina registros na ordem em *ue eles aparecem no ar*ui#o)


)aso Mel0or caso Pior caso Caso m(dio )usto f n! " # f n! " n f n! " n $ #!%&

se"a f(n) o custo do o n%mero de comparaes int max'in#2 int #34/ int n/ int max/ int min 56 max 7 #3849 min 7 #3849 int i9 &or2 i 7 :9 i ; n9 i<< 56 i&2 #3i4 > max 5 max 7 #3i49 i&2 #3i4 ; min 5 min 7 #3i49 = =

Anlise de algoritmos:

se"a f(n) o custo do o n%mero de comparaes int max'in#2 int #34/ int n/ int max/ int min 56 max 7 #3849 min 7 #3849 int i9 &or2 i 7 :9 i ; n9 i<< 56 i&2 #3i4 > max 5 max 7 #3i49 i&2 #3i4 ; min 5 min 7 #3i49 = n1 = f ( n )= 2=( n 1 )2 =2n 2

Anlise de algoritmos:

se"a f(n) o custo do o n%mero de comparaes int max'in#2 int #34/ int n/ int max/ int min 56 max 7 #3849 min 7 #3849 int i9 &or2 i 7 :9 i ; n9 i<< 56 i&2 #3i4 > max 5 max 7 #3i49 f ( n )=2 ( n 1 ) ,n> 0 i&2 #3i4 ; min 5 min 7 #3i49 = n1 = f ( n )= 2=( n 1 )2 =2n 2

Anlise de algoritmos:

se"a f(n) o custo do o n%mero de comparaes int max'in&2 int #34/ int n/ int max/ int min 56 max 7 #3849 min 7 #3849 int i9 &or2 i 7 :9 i ; n9 i<< 56 i&2 #3i4 > max 5 max 7 #3i49 )aso )usto else i&2 #3i4 ; min 5 Mel0or caso f n! " n ( # min 7 #3i49 Pior caso f n! " & n ( #! = Caso m(dio f n! " )n%&-)%& =

Anlise de algoritmos:

se"a f(n) o custo do o n%mero de comparaes Para max'in&/ segue os seguintes clculos: 'el(or caso: #etor em ordem crescente)
n 1 1

Anlise de algoritmos:

f ( n )= 1 =( n1 )1 =n1
Pior caso. #etor em ordem decrescente)
n1

f ( n )= 2=( n 1 )2 =2n 2
)aso m*dio.
1

( n 1 ) 3n 3 f ( n )=( n1 ) = 2 2 2

int max'in)2 int #34/ int n/ int max/ int min 56 int i 7 ?/ fimDoAnel9 i&2 2n @ ?5 > 856 #3n4 7 #3n - :49 fimDoAnel 7 n9 = else fimDoAnel 7 n A :9 i&2 #384 > #3:4 56 max 7 #3849 min 7 #3:49 = else 6 max 7 #3:49 min 7 #384 = ,(ile2 i ; fimDoAnel56 i&2 #3i4 > #3i < :456 i&2 #3i4 > max5 max 7 #3i49 i&2 #3i < :4 ; min5 min 7 #3i < :49 = else6 i&2 #3i4 ; min 5 min 7 #3i49 i&2 #3i < :4 > max 5 max 7 #3i < :49 = i7 i<? n 2 = n2 2 3n 6 3n = f ( n )= 3 +1= 3 + 1= +1 = 2

( )
i= 2

( )

i= 1

int max'in)2 int #34/ int n/ int max/ int min 56 int i 7 ?/ fimDoAnel9 i&2 2n @ ?5 > 856 #3n4 7 #3n - :49 fimDoAnel 7 n9 = else fimDoAnel 7 n A :9 # comparao i&2 #384 > #3:4 56 max 7 #3849 min 7 #3:49 = else 6 max 7 #3:49 min 7 #384 = ,(ile2 i ; fimDoAnel56 # comparao i&2 #3i4 > #3i < :456 $ i&2 #3i4 > max5 max 7 #3i49 & compara*es i&2 #3i < :4 ; min5 min 7 #3i < :49 = else6 ou i&2 #3i4 ; min 5 min 7 #3i49 & compara*es i&2 #3i < :4 > max 5 max 7 #3i < :49 = i7 i<? n 2 = n 2 2 3n 6 3n = f ( n )= 3 +1 3 + 1= + 1= 2

) compara*es

( )
i= 2

( )

i= 1

comparao do custo de f(n) dos algoritmos

Anlise de algoritmos:

Algoritmos max'in# max'in& max'in)

'el(or caso & n ( #! n(# )n%& ( &

Pior caso & n ( #! & n ( #! )n%& ( &

)aso m*dio & n ( #! )n%& ( )%& )n%& ( &

S*ries e somatrios
n

c= ( n i+ 1 ) c
j=i n

n j= 0 n

2 =2
1
j j= 0

n+1

1 1
n

j=i

( n i+ 1 )( n+i ) j= 2 1 1 = a 1 ( 1 / a )
j n j

() ( )

j= 0 j= 0 n

2 2 n n+1 1 j a a = a 1 ( a 1 ) j= 0
n

= 2

1 1 ( 1 / a ) = a 1 ( 1 / a )

j= 1

n ( n+ 1 )( 2n + 1 ) j= 6
2

Notaes Padro: exponenciais


a =1
0

a = a
1

1 a = a m n mn (a ) = a
1

(a ) = a
n m

nm

a a = a
m n

m+ n

Notaes padro: logaritmos


lg n = log 2 n ln n = log e n lg n = (lg n) lg lg n = lg(lg n)
k k

(logaritmo binrio) (logaritmo natural) exponenciao composio

Notaes padro: logaritmos


a= b
log b a

log c ( ab) = log c a + log c b, log b a = n log b a,


n

log c a log b a = , log c b

Notaes padro: logaritmos


log b (1 a ) = log b a, 1 log b a = , log a b a
b log b c a

= c

log b a

, = n
a b log b b

n = b

a b log b n

= n

a b 1

= n

ab

se"a f(n) o custo do n-. de atri!uies

Anlise de algoritmos:

&or2 i 7 soma 7 89 i ; n9 i<< 5 soma <7 a3i49

se"a f(n) o custo do n-. de atri!uies

Anlise de algoritmos:

&or2 i 7 89 i ; n9 i<<56 &or2 ' 7 :/ soma 7 a3849 ' ;7 i9 '<<5 soma <7 a3'49 print&2/Soma de 0 at* 1d * 1d2/ i/ soma59 =

se"a f(n) o custo do n-. de atri!uies

Anlise de algoritmos:

&or2 i 7 B9 i ; n9 i<< 56 &or2 ' 7 i A C/ soma 7 a3 i A B 49 ' ;7 i9 '<< 5 soma <7 a3 ' 49 print&2/Soma de 1d at* 1d * 1d2/ 2i-B5/ i/ soma59 =

se"a f(n) o custo do n-. de atri!uies

Anlise de algoritmos:

&or2 i 7 8/ comprimento 7 :9 i ; n A :9 i<< 56 &or2 i:7i?7D7i9 D ; n A : EE a3D4 ; a3D<:49 D<</i?<<59 i&2 comprimento ; i? A i: < :5 comprimento 7 i? A i: <:9 =

se"a f(n) o custo do n-. de atri!uies


int busca+inaria2 int arr34/ int arrFaman0o/ int c0a#e56 int %aixo 7 8/ meio/ alto 7 arrFaman0o A :9 ,(ile2 %aixo ;7 alto 56 meio 7 2 %aixo < alto 5G?9 i&2 c0a#e ; arr3 meio 4 5 alto 7 meio A :9 else i&2 arr3 meio 4 ; c0a#e 5 %aixo 7 meio < :9 else return meio9 33retorna o 4ndice da c(a5e encontrada = return -:9 33 caso no encontrado6 retorna -7 indicando &al(a =

Anlise de algoritmos:

Notao O-8rande
H & tempo exato de execuo de um algoritmo ( uma expresso complexa/ assim ele ( apenas estimado H A anlise assinttica ( uma estimati#a utili,ada para entender o tempo de execuo *uando executado so%re entradas grandes

Notao O-8rande
H Se'a a funo f n! " ,n) $ &n& $ &-n $ ./ H & termo de mais alta ordem (. ,n) H Desconsiderando o coeficiente I/ di,emos *ue f ( assintoticamente/ no mximo/ n) H A notao assinttica ou O-grande para descre#er esse relacionamento (. f n! " O n) !

Notao O-8rande
DE9INI:; Se'am f e g fun es/ f,g0 1 2$ Digamos *ue f n! " O g n!! se existem inteiros positi#os c e n0 tais *ue para todo inteiro n 3 n0. f n! 4 c 5 g n!

Notao O-8rande
H Juando f n! " O g n!! di,emos *ue g n!.
A ( um limitante superior para f n!

ou
A ( limitante superior assinttico para f n!

H Isso enfati,a *ue estamos suprimindo fatores constantes)

Notao O-8rande: exemplo


H Se'a f n! " /n) $ &n& $ &&n $ , H Fermo de mais alta ordem. /n) H Desconsiderando seu coeficiente/ tem-se *ue. f n! " O n)!

Notao O-8rande: exemplo


H +erificao da definio formal. Fornando c " , e n- " #6nto, /n) $ &n& $ &&n $ , 4 ,n) para todo n 3 #-

Notao O-8rande
H f n! " O n.! por*ue n. > n), portanto/ ainda ( um limitante superior assinttico so%re f) H f n! no ( O n&!/ por*ue independente dos #alores *ue se'am atri%u"dos a c e n- / a definio permanece insatisfeita)

Notao o-pe+ueno
H A notao O-grande di, *ue uma funo ( assintoticamente no mais ue outra) H Pode-se di,er *ue uma funo ( assintoticamente menor ue outra/ por meio da notao o-pe+uenoH A diferena entre as nota es O-grande ( ope ueno ( anloga K*uela entre < e =)

Notao o-pe+ueno
DE9INI:; Se'am f e g fun es/ f,g0 1 2$ Digamos *ue f n! " o g n!! se limn 7 f2n5Gg2n5 7 8

Notao o-pe+ueno
H Em outras pala#ras/ f n! " o g n!! significa *ue/ para *ual*uer nLmero real c 8 - e n-/ onde f n! 9 c g n! para todo n 3 n-)

Notao o-pe+ueno: exemplos


#: &: ): .: /: ,: sqrt n! " o n! n " o n log log n! n log log n " o n log n! n log n " o n&! n& " o n)! f n! nunca ( o f n!!

>*cnicas de anlise de algoritmos


)omando Atri%uio/ leitura/ escrita/ condio Se*uncia de comandos Deciso )usto O #! ;eterminado pelo maior tempo na sequ<ncia =empo da sequ<ncia dentro do comando mais a condio

>*cnicas de anlise de algoritmos


)omando )usto >oma do tempo da sequencia dentro do lao mais a condio de parada 'ultiplicado pelo n?mero de itera*es ;eve ser computado separadamente de acordo com as avalia*es anteriores

Maos de repetio

Procedimentos no recursi#os

peraes com a notao O-grande


f n! " O f n!! c @ O f n!! " O f n!! O f n!! $ O f n!! " O f n!! O O f n!!! " O f n!! O f n!! $ O g n!! " O max f n!, g n! ! ! O f n!! O g n!! " O f n!g n!! f n!O g n!! " O f n!g n!! c " constante

)omportamento assinttico

)lasse
f n! " O #! f n! " O log n! f n! " O n!

Nome
Aonstante Bogartmica Binear

Situao
As instru es do algoritmo so executadas um n)N fixo de #e,es) Algoritmos *ue resol#em um pro%lema transformando-os em tempos menores) Em geral/ um pe*ueno tra%al0o ( reali,ado so%re cada elemento da entrada) 1m pro%lema ( transformado em pro%lemas menores/ depois/ cada um ( resol#ido independentemente e/ depois/ 'untam-se as solu es) &s itens de dados so processados aos pares/ em geral/ um lao dentro do outro) Oteis para resol#er pro%lemas pe*uenos) 1so de fora %ruta aplicado a um pro%lema) 1so de fora %ruta aplicado a um pro%lema)

f n! " O n log n!

n log n

f n! " O n !
&

QuadrCtica A?bica 6xponencial Eatorial

f n! " O n)! f n! " O &n! f n! " O nD!

)lasses de algoritmos e medidas de tempo


)lasse n
)onstante @ogar4timo @inear n log n Auadrtico )%!ico Exponencial O #! O log n! O n! O n log n! O n&! O n)! O & n! # ),)& #)),& #-& #-) #-&.

N-. de )omplexidade de peraes e >empos de Execuo #7 instr3?seg$ 70


# Fseg ) Fseg #- Fseg )) Fseg #-- Fseg # mseg #- mseg # ,,,. #-& ,,. #-. #-, #-)-

70!
# Fseg G Fseg #-- Fseg ,,. Fseg #- mseg # seg ),#G 5#-#G anos # H,HG #-) HHG#-, #-H #-)-#

70"
# Fseg #- Fseg # mseg #- mseg # seg #,,G min 7

)lasses de algoritmos e medidas de tempo


)lasse n
)onstante @ogar4timo @inear n log n Auadrtico )%!ico Exponencial O #! O log n! O n! O n log n! O n&! O n)! O & n! # #),) #-. #))5#-) #-I #-#& #-)-#-

N-. de )omplexidade de peraes e >empos de Execuo #7 instr3?seg$ 70#


# Fseg #) Fseg #- mseg #)) mseg #,G min ##,, dias 7 # #,,, #-/ #,,5#-. #-##-#/ #-)-#-)

70$
# Fseg G Fseg -,# seg #,, seg #,,G min )#,G anos 7 # #H,H) #-, #HH,)5#-/ #-#& #-#I #-)-#-)-

70%
# Fseg &- Fseg # seg &- seg ##,, dias )#,G-H anos 7

9unes >4picas e estimati5as O-grande

9unes >4picas e estimati5as O-grande

Be&erCncias !i!liogr&icas
!ser5ao. o conteLdo dos slides foram extra"dos e montados a partir das referncias %i%liogrficas)

SIPSE$/ Mic0ael) Introduo a teoria da computao) So Paulo. Editora F0omson/ ?88P) )ap4tulo D: introduo K complexidade de tempo Apg) ?I: A ?IQ) RI+IASI/ S"#io) Pro"eto de algoritmos. com implementao em Ta#a e C<<) ?a) ed) So Paulo. Pioneira/ ?88I) )ap4tulo 7: medida de tempo de execuo/ comportamento assinttico/ classes assintticas/ t(cnicas de anlise de algoritmos) C&$MES/ F0omas U) et al) Algoritmos: >eoria e Prtica) $io de Taneiro. Campus/ ?88?) )ap4tulo E e F. crescimento de fun es 2pg) C?5 e recorrncias 2pg) V85

D$&RDEW/ Adam) Estrutura de Dados e Algoritmos em )GG) So Paulo. Cengage/ ?88?) )ap4tulo H. exemplos de anlise de algoritmos A pginas VB A VP) $&SES/ Wennet0 U) 'atemtica discreta e suas aplicaes) Ia) ed) Porto Alegre. McXraY-Uill/ ?88Z) )ap4tulo E. re#iso so%re somatrios A pginas :BZ A :VQ)

Você também pode gostar