0% acharam este documento útil (0 voto)
14 visualizações18 páginas

Comp Alg 01

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
14 visualizações18 páginas

Comp Alg 01

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 18

Análise de Algoritmos

Análise de Algoritmos
Análise de Algoritmos

Análise de um programa

I Um programa é considerado bom pois


seus gráficos são os melhores?
seu tempo de resposta é baixo?
I Um programa/sistema é melhor que outro (critério) quando
usa pouca memória?
suporta muitos usuários?

⇒ O foco é a qualidade dos programas/algoritmos

⇒ Quais critérios considerar numa análise?


Análise de Algoritmos

Critérios para análise

A qualidade pode ser medida por vários critérios:


I Interface do programa facilitando a utilização ao usuário;
I Compatibilidade com outros programas ou versões;
I Velocidade de execução, principalmente em aplicações cientı́ficas
com computações pesadas;
I Consumo de memória na execução;
I Portabilidade, reusabilidade, clareza, etc.
Análise de Algoritmos

Critérios de estudo em complexidade

Os critérios para se analisar um algoritmo são:


I tempo gasto pelos algoritmos
⇒ velocidade de execução; e
I memória gasta pelos algoritmos
⇒ quantidade de memória consumida.

Estão relacionados a quantidade de dados processados

ou seja, a entrada de dados do programa


Análise de Algoritmos

Medidas de complexidade

Um algoritmo então possui duas medidas de complexidade:


complexidade temporal: dada pelo número de instruções que ele
aproximadamente executa
complexidade espacial: dada pela quantidade de memória utiliza durante
sua execução

⇒ Ambas são dadas em função do tamanho da entrada


Análise de Algoritmos

Masafinal...
AnálisedeAlgoritmos
Modidne

PENSE:

Ouaissanasinstrucões

Velocidadedeexec

dosalgoritmos Auantidadodemomária Qualéaquantidadededados?

-O.

Critérios Emfuncãodo ontr

Medidadetemm
Donondedaamantidadededados
Modidareosnn
Análise de Algoritmos

Instruções e Dados

Quais instruções considerar num programa/algoritmo?

Quanto de memória um algoritmo utiliza?

https://docs.google.com/document/d/
1aXZiQadYTuMITHhJdSrAS67k6E1SPbEzYShskMJ8HNo/edit
Análise de Algoritmos

Análise de Complexidade de um Algoritmo

A complexidade pode ser definida por algoritmos:


1. Não recursivos e não iterativos
2. Iterativos
3. Recursivos

⇒ Em relação ao entrada de tamanho


Análise de Algoritmos

Algoritmos não recursivos e não iterativos

I Não dependem do tamanho da entrada

I A complexidade (temporal) é constante

• k instruções independentes do tamanho da entrada

⇒ a complexidade temporal é constante (igual a k)


Análise de Algoritmos

Complexidade constante: Exemplo 1

Operacoes ( a , b )
inicio
x <−− a + b ;
y <−− a ∗ b ;
imprima ( x ) ;
imprima ( y ) ;
fim
Análise de Algoritmos

Complexidade constante: Exemplo 2

M u l t i p l i c a (V , n )
inicio
x <−− V [ 1 ] ;
y <−− V [ n ] ;
imprima ( x ∗ y ) ;
fim
Análise de Algoritmos

Algoritmos iterativos

I Dependem do número de iterações sobre o tamanho da entrada

I Para a entrada de tamanho n a complexidade é dada em função de n

• k instruções executadas a cada iteração

⇒ a complexidade temporal é kn (complexidade linear)

• c blocos aninhados onde cada bloco efetua n iterações

⇒ a complexidade é dada por nc (quadrática com c = 2)


Análise de Algoritmos

Algoritmo Iterativo: Exemplo 1

L i s t a V a l o r e s (V , n )
inicio
Para i de 1 a t é n f a ç a
imprima ( ”O v a l o r é : ” ) ;
imprima (V [ i ] ) ;
fim
Análise de Algoritmos

Algoritmo Iterativo: Exemplo 2

I m p r i m a M a t r i z (V , n )
inicio
Para i de 1 a t é n f a ç a
Para j de 1 a t é n f a ç a
impri ma (V [ i , j ] ) ;
fim
Análise de Algoritmos

Algoritmos recursivos

I Dependem do número de chamadas recursivas em função da entrada

I Para a entrada de tamanho n a complexidade é dada em função de n

• a cada recursão a entrada diminui de 1 (n chamadas)

⇒ a complexidade temporal é linear

• com duas chamadas recursivas, diminuindo a entrada


de 1, temos 2n chamadas
⇒ a complexidade temporal é exponencial
Análise de Algoritmos

Algoritmos Recursivos: Exemplo 1

Fatorial (n)
inicio
Se n = 1 e n t ã o
retorne 1;
Senão
r e t o r n e n ∗ F a t o r i a l ( n −1);
fim
Análise de Algoritmos

Algoritmos Recursivos: Exemplo 2

ArvoreRercursao (n)
inicio
Se n = 1 e n t ã o
imprim a ( ” f o l h a ” ) ;
Senão
A r v o r e R e r c u r s a o ( n −1);
A r v o r e R e r c u r s a o ( n −1);
fim
Análise de Algoritmos

Importante

Obervações importantes para a análise de algoritmos


Instruções: é necessário deixar claro qual a instrução ou operação foco
da análise
Exemplos:
multiplicações, comparações, comandos ”Print”, etc
Quantidade de Dados: sempre em função da entrada
Exemplos:
número de registros, parâmetros de entrada, ou tamanho
da estrutura associados as instruções executadas

Você também pode gostar