Escolar Documentos
Profissional Documentos
Cultura Documentos
Anlise de Algoritmos
Sntese de Algoritmos
Notao Assimpttica
Outra Notao
Problemas
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
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
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
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
Algoritmos
Anlise de Algoritmos
Sntese de Algoritmos
Notao Assimpttica
Outra Notao
Problemas
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
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
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
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)