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;