of 28 /28
1 Analise de Algoritmos e Notação Assintótica Alex Fernandes da Veiga Machado [email protected]

1 Analise de Algoritmos e Notação Assintótica Alex Fernandes da Veiga Machado [email protected]

Embed Size (px)

Text of 1 Analise de Algoritmos e Notação Assintótica Alex Fernandes da Veiga Machado...

  • Slide 1
  • 1 Analise de Algoritmos e Notao Assinttica Alex Fernandes da Veiga Machado [email protected]
  • Slide 2
  • 2 Algoritmo uma sequencia ordenada e finita de operaes bem definidas e eficazes que, quando executadas por um computador, sempre termina num determinado perodo de tempo, produzindo uma soluo ou indicando que a soluo no pode ser obtida. (Procedimento passo a passo para obteno de um fim) Algoritmo
  • Slide 3
  • 3 Anlise de Algoritmos Anlise de Algoritmo tempo de processamento em funo dos dados de entrada; espao de memria total requerido para os dados; comprimento total do cdigo; correcta obteno do resultado pretendido (convervncia); robustez (como comporta-se com as entradas invlidas ou no previstas). Anlise de Algoritmos medio de complexidade de algoritmo quantidade de "trabalho" necessria para a sua execuo, expressa em funo das operaes fundamentais, as quais variam de acordo com o algoritmo, e em funo do volume de dados.
  • Slide 4
  • 4 Complexidade Porqu o estudo da Complexidade? Performance Escolher entre vrios algoritmos o mais eficiente para implementar; Desenvolver algoritmos mais eficientes (melhorar os algoritmos), devido ao aumento constante do "tamanho" dos problemas a serem resolvidos. Complexidade Computacional - torna possvel determinar se a implementao de determinado algoritmo vivel.
  • Slide 5
  • 5 Complexidade Tipos de Complexidade Espacial Este tipo de complexidade representa, por exemplo, o espao de memria usado para executar o algoritmo. Temporal Este tipo de complexidade o mais usado podendo dividir-se em dois grupos: Tempo (real) necessrio execuo do algoritmo. (como podemos medir?) Nmero de instrues necessrias execuo.
  • Slide 6
  • 6 Medidas de Anlise Devem ser independentes da tecnologia (hardware/software) Modelos Matemticos simplificados baseados nos factores relevantes: Tempo de Execuo Uma funo que relaciona o tempo de execuo com o tamanho de entrada: t = F(n) Conjunto de operaes a serem executadas. Custo associado execuo de cada operao. Ocupao de Espao em Memria Analise de Algoritmos
  • Slide 7
  • 7 Complexidade Exemplo Sejam 5 algoritmos A 1 a A 5 para resolver um mesmo problema, de complexidades diferentes. (Supomos que uma operao leva 1 ms para ser efetuada.) T k (n) a complexidade ou seja o nmero de operaes que o algoritmo efectua para n entradas n A 1 T 1 (n)= n A 2 T 2 (n)=nlog n A 3 T 3 (n)=n 2 A 4 T 4 (n)=n 3 A 5 T 5 (n)=2 n 160.016s0.064s0.256s4s1m4s 320.032s0.16s1s33s46 Dias 5120.512s9s4m22s1 Dia 13h10 137 Sculos tempo necessrio para o algoritmo em funo de n entradas
  • Slide 8
  • 8 Operaes primitivas Atribuio de valores a variveis Chamadas de mtodos Operaes aritmticas Comparao de dois nmeros Acesso a elemento de um array Seguir uma referncia de objeto (acesso a objeto) Retorno de um mtodo
  • Slide 9
  • 9 Algoritmo do exemplo em pseudocdigo arrayMax(A, n): Entrada: array A com n>=1 elementos inteiros Saida: o maior elemento em A tmpMax
  • 17 Eficincia de um Algoritmo, mais um exemplo Trs algoritmo para calcular 1 + 2 + n para um n > 0
  • Slide 18
  • 18 Eficincia de um Algoritmo Nmero de operaes necessrias O(n) O(n 2 ) O(1)
  • Slide 19
  • 19 Eficincia de um Algoritmo O nmero de operaes em funo de n
  • Slide 20
  • 20 Eficcia O(n)
  • Slide 21
  • 21 Eficcia O(n 2 )
  • Slide 22
  • 22 Eficcia Outro algoritmo de O(n 2 )
  • Slide 23
  • Complexidade de Algoritmos Existem trs escalas de complexidade: Melhor Caso Caso Mdio Pior Caso Nas trs escalas, a funo f(N) retorna a complexidade de um algoritmo com entrada de N elementos
  • Slide 24
  • Complexidade de Algoritmos Melhor Caso Definido pela letra grega (mega) o menor tempo de execuo em uma entrada de tamanho N pouco usado, por ter aplicao em poucos casos. Ex.: Se tivermos uma lista de N nmeros e quisermos encontrar algum deles assume-se que a complexidade no melhor caso f(N) = (1), pois assume-se que o nmero estaria logo na cabea da lista.
  • Slide 25
  • Complexidade de Algoritmos Caso Mdio
  • Slide 26
  • Complexidade de Algoritmos Pior Caso Ser o caso utilizado durante esse curso Representado pela letra grega O (O maisculo. Trata-se da letra grega micron maiscula) o mtodo mais fcil de se obter. Baseia-se no maior tempo de execuo sobre todas as entradas de tamanho N Ex.: Se tivermos uma lista de N nmeros e quisermos encontrar algum deles, assume-se que a complexidade no pior caso O (N), pois assume-se que o nmero estaria, no pior caso, no final da lista. Outros casos adiante
  • Slide 27
  • Complexidade de Algoritmos Mas como saber qual a complexidade de um determinado algoritmo implementado? Para resolver esse problema, dividiu-se os algoritmos em Classes de Problemas, de acordo com o parmetro que afeta o algoritmo de forma mais significativa
  • Slide 28
  • Alguns Exemplos - Recursividade No caso da recursividade, depende da quantidade de iteraes que se pode chegar Ex.: se eu quiser saber os N primeiros termos de um fatorial, a complexidade N Function Fatorial (N: Integer): Integer; Begin If n=0 then Fatorial := 1 Else Fatorial := N + Fatorial (N-1) End;