Você está na página 1de 23

Algoritmos

Anlise de Algoritmos

Sntese de Algoritmos

Notao Assimpttica

Outra Notao

Problemas

Anlise e Sntese de Algoritmos


Reviso [CLRS, Cap. 1-3]

2011/2012

Algoritmos

Anlise de Algoritmos

Sntese de Algoritmos

Notao Assimpttica

Outra Notao

Problemas

Resumo

Algoritmos Anlise de Algoritmos Sntese de Algoritmos Notao Assimpttica Outra Notao Problemas

Algoritmos

Anlise de Algoritmos

Sntese de Algoritmos

Notao Assimpttica

Outra Notao

Problemas

Algoritmos

Algoritmo Procedimento computacional bem denido que aceita uma dada entrada e produz uma dada sada
Ferramenta para resolver um problema computacional bem denido
Ordenao de sequncias de valores Caminhos mais curtos em grafos dirigidos etc.

Pseudo-Cdigo Utilizado na descrio de algoritmos Apresentar os detalhes essenciais de um algoritmo sem a verbosidade das linguagens de programao

Algoritmos

Anlise de Algoritmos

Sntese de Algoritmos

Notao Assimpttica

Outra Notao

Problemas

Exemplo: Ordenao
Entrada: sequncia de valores A[1..n] Objectivo: ordenar valores em A de forma crescente Sada: sequncia de valores ordenados A[1..n] InsertionSort InsertionSort(A) 1 for j = 2 to length[A] 2 do key = A[j] 3 i=j-1 4 while i > 0 and A[i] > key 5 do A[i+1] = A[i] 6 i=i-1 7 A[i+1] = key

Algoritmos

Anlise de Algoritmos

Sntese de Algoritmos

Notao Assimpttica

Outra Notao

Problemas

Anlise de Algoritmos

Como aferir a complexidade um algoritmo? Como comparar dois algoritmos diferentes?


Notao assimpttica

Que modelo computacional utilizar?


Modelo RAM (Random Access Machine) Execuo sequencial de instrues Apenas 1 processador Outros modelos computacionais relacionados polinomialmente com modelo RAM

Algoritmos

Anlise de Algoritmos

Sntese de Algoritmos

Notao Assimpttica

Outra Notao

Problemas

Anlise de Algoritmos

Medidas de Complexidade Tempo necessrio (execuo) Espao necessrio Tanto o tempo como o espao dependem do tamanho da entrada Entrada depende do problema que o algoritmo pretende resolver Exemplo: No InsertionSort uma medida razovel o nmero de elementos a ordenar Exemplo: Num grafo as medidas utilizadas so o nmero de vrtices e o de arcos

Algoritmos

Anlise de Algoritmos

Sntese de Algoritmos

Notao Assimpttica

Outra Notao

Problemas

Tempo de Execuo

n 10 20 30 40 50 100 1000

f (n) = n 0.01 s 0.02 s 0.03 s 0.04 s 0.05 s 0.10 s 1.00 s

f (n) = n2 0.10 s 0.40 s 0.90 s 1.60 s 2.50 s 10 s 1 ms

f (n) = 2n 1.00 s 1.00 ms 1.00 s 18.3 min 13 dias 4 1013 anos

f a (n) = n! 3.63 ms 77.1 anos 8.4 1015 anos

Algoritmos

Anlise de Algoritmos

Sntese de Algoritmos

Notao Assimpttica

Outra Notao

Problemas

Tempo de Execuo
Exemplo: Algoritmo InsertionSort
ci : custo de executar a instruo i tj : nmero de vezes que ciclo while executado para cada j , j =2,...,n

InsertionSort InsertionSort(A) 1 for j = 2 to length[A] 2 do key = A[j] 3 i=j-1 4 while i > 0 and A[i] > key 5 do A[i+1] = A[i] 6 i=i-1 7 A[i+1] = key Custo c1 c2 c3 c4 c5 c6 c7 #Exec. n n1 n1 tj : j = 2..n tj 1 : j = 2..n tj 1 : j = 2..n n1

Algoritmos

Anlise de Algoritmos

Sntese de Algoritmos

Notao Assimpttica

Outra Notao

Problemas

Tempo de Execuo

Exemplo: Algoritmo InsertionSort


T (n) : tempo de execuo do algoritmo em funo do nmero de elementos a ordenar T (n) = c1 n + c2 (n 1) + c3 (n 1) + c4 n j =2 tj + n c5 n j =2 (tj 1) + c6 j =2 (tj 1) + c7 (n 1)

O tempo de execuo depende da sequncia a ordenar !

Algoritmos

Anlise de Algoritmos

Sntese de Algoritmos

Notao Assimpttica

Outra Notao

Problemas

Tempo de Execuo
Anlise melhor-caso Sequncia de entrada j ordenada T (n) = c1 n + c2 (n 1) + c3 (n 1) + c4 (n 1) + c7 (n 1) T (n) funo linear de n Anlise pior-caso Sequncia de entrada ordenada por ordem inversa tj = j para j = 2...n T (n ) = n 2 + n + T (n) funo quadrtica de n

Algoritmos

Anlise de Algoritmos

Sntese de Algoritmos

Notao Assimpttica

Outra Notao

Problemas

Anlise pior-caso

Uso do pior-caso como valor para a complexidade Representa um limite superior/inferior no tempo de execuo Ocorre numerosas vezes O valor mdio muitas vezes prximo do pior-caso Geralmente mais fcil de calcular Caso-mdio Importante em algoritmos probabilsticos necessrio saber a distribuio dos problemas

Algoritmos

Anlise de Algoritmos

Sntese de Algoritmos

Notao Assimpttica

Outra Notao

Problemas

Sntese de Algoritmos

Dividir para conquistar Programao Dinmica Algoritmos gananciosos (greedy)

Algoritmos

Anlise de Algoritmos

Sntese de Algoritmos

Notao Assimpttica

Outra Notao

Problemas

Ordenao Dividir para Conquistar

MergeSort MergeSort(A, p, r) 1 if p < r 2 then q = (p + r )/2 3 MergeSort(A, p, q) 4 MergeSort(A, q+1, r) 5 Merge(A, p, q, r) No pior caso, tempo de execuo cresce com n lgn
Admitindo que tempo de execuo de Merge cresce com n

Exemplo...

Algoritmos

Anlise de Algoritmos

Sntese de Algoritmos

Notao Assimpttica

Outra Notao

Problemas

Notao Assimpttica

Objectivo caracterizar tempos de execuo dos algoritmos para tamanhos arbitrrios das entradas A notao assimpttica permite estabelecer taxas de crescimento dos tempo de execuo dos algoritmos em funo dos tamanhos das entradas Constantes multiplicativas e aditivas tornam-se irrelevantes
Nota: Tempo de execuo de cada instruo no essencial para o comportamento assimpttico de um algoritmo

Simbolos da notao assimpttica


, O , o,

Algoritmos

Anlise de Algoritmos

Sntese de Algoritmos

Notao Assimpttica

Outra Notao

Problemas

Notao Assimpttica
Notao O : Limite Assimpttico Superior O (g (n)) = {f (n) : existem constantes positivas c e n0 , tal que 0 f (n) cg (n), para n n0 } f (n) = O (g (n)), signica f (n) O (g (n))

Algoritmos

Anlise de Algoritmos

Sntese de Algoritmos

Notao Assimpttica

Outra Notao

Problemas

Notao Assimpttica
Notao : Limite Assimpttico Inferior (g (n)) = {f (n) : existem constantes positivas c e n0 , tal que 0 cg (n) f (n), para n n0 } f (n) = (g (n)), signica f (n) (g (n))

Algoritmos

Anlise de Algoritmos

Sntese de Algoritmos

Notao Assimpttica

Outra Notao

Problemas

Notao Assimpttica
Notao : Limite Assimpttico Apertado (g (n)) = {f (n) : existem constantes positivas c1 , c2 e n0 , tal que 0 c1 g (n) f (n) c2 g (n), para n n0 } f (n) = (g (n)), signica f (n) (g (n))

Algoritmos

Anlise de Algoritmos

Sntese de Algoritmos

Notao Assimpttica

Outra Notao

Problemas

Notao Adicional

Floor e Ceiling: Polinnios


Um polinmio cresce com o maior grau que o compe

Exponenciais
Uma exponencial (base > 1) cresce mais depressa do que um polinmio

Logaritmos

Algoritmos

Anlise de Algoritmos

Sntese de Algoritmos

Notao Assimpttica

Outra Notao

Problemas

Somatrios

Utilizados no clculo do tempo de execuo de ciclos: Propriedades


Linearidade : Telescpica :
n n k =1 (f (k )) = ( k =1 f (k )) n k =1 (ak ak 1 ) = an a0

n k =1 ak

Limite de somatrios
Induo matemtica Limitar termos Dividir somatrio Aproximao por integrais

Algoritmos

Anlise de Algoritmos

Sntese de Algoritmos

Notao Assimpttica

Outra Notao

Problemas

Problemas

Problema 1 Dado um vector com n valores, propor um algoritmo eciente que determina a existncia de dois nmeros no vector cuja soma x .

Algoritmos

Anlise de Algoritmos

Sntese de Algoritmos

Notao Assimpttica

Outra Notao

Problemas

Problemas

Problema 2 Dado um vector com n valores ordenados, propor um algoritmo eciente que determina a existncia de dois nmeros no vector cuja soma x .

Algoritmos

Anlise de Algoritmos

Sntese de Algoritmos

Notao Assimpttica

Outra Notao

Problemas

Problemas

Problema 2 Dado um vector com n valores ordenados, propor um algoritmo eciente que determina a existncia de dois nmeros no vector cuja soma x . Soluo - Problema 2 Utilizar dois apontadores colocados inicialmente na primeira (i ) e na ltima (j ) posies do vector Se soma das posies apontadas superior a x , decrementar j Se soma das posies apontadas inferior a x , incrementar i Se soma das posies apontadas igual a x , terminar Complexidade: O (n)

Algoritmos

Anlise de Algoritmos

Sntese de Algoritmos

Notao Assimpttica

Outra Notao

Problemas

Problemas

Problema 1 Dado um vector com n valores, propor um algoritmo eciente que determina a existncia de dois nmeros no vector cuja soma x . Soluo - Problema 1 Ordenar vector e resolver problema 2 Complexidade: O (n lgn)

Você também pode gostar