Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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)
9 10
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 =
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
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 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
Anlise de algoritmos:
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
a = a
1
1 a = a m n mn (a ) = a
1
(a ) = a
n m
nm
a a = a
m n
m+ n
= c
log b a
, = n
a b log b b
n = b
a b log b n
= n
a b 1
= n
ab
Anlise de algoritmos:
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 =
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 =
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 =
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!
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-)
Maos de repetio
Procedimentos no recursi#os
)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 !
&
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
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
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)