Escolar Documentos
Profissional Documentos
Cultura Documentos
Parte 1
Prof. Tlio Toffolo
http://www.toffolo.com.br
BCC202 Aula 04
Algoritmos e Estruturas de Dados I
SEGUNDA
TERA
QUARTA
Monitoria
Monitoria
Monitoria
Monitoria
Monitoria
Monitoria
QUINTA
SEXTA
SBADO
Monitoria
Monitoria
Monitoria
Monitoria
Monitoria
Monitoria
Anlise de Algoritmos
Analisar um algoritmo consiste em verificar o que?
Tempo de Execuo
Espao/memria ocupada
Clculo do Custo
Clculo do Custo pela Execuo do Algoritmo
Tal medidas bastante inadequada e o resultado no
pode ser generalizado;
Os resultados so dependentes do compilador, que pode
favorecer algumas construes em detrimento de outras;
Os resultados dependem do hardware;
Quando grandes quantidades de memria so utilizadas, as
medidas de tempo podem depender deste aspecto.
Clculo do Custo
Clculo do Custo pela Execuo do Algoritmo
Apesar disso, h argumentos a favor de se obterem
medidas reais de tempo.
Ex.: quando h vrios algoritmos distintos para resolver um
mesmo tipo de problema, todos com um custo de execuo
dentro de uma mesma ordem de grandeza.
Anlise de Algoritmos
Possibilidade de analisar:
Um algoritmo particular.
Uma classe de algoritmos.
Anlise de Algoritmos
Anlise de um algoritmo particular.
Qual o custo de usar um dado algoritmo para
resolver um problema especfico?
Caractersticas que devem ser investigadas:
Anlise do nmero de vezes que cada parte do
algoritmo deve ser executada (tempo)
Estudo da quantidade de memria necessria
(espao).
Anlise de Algoritmos
Anlise de uma classe de algoritmos.
Qual o algoritmo de menor custo possvel para
resolver um problema particular?
Toda uma famlia de algoritmos investigada.
Procura-se identificar um que seja o melhor possvel.
Coloca-se limites para a complexidade computacional
dos algoritmos pertencentes classe.
10
Custo de um Algoritmo
O menor custo possvel para resolver problemas de uma
classe nos d a dificuldade inerente para resolver o problema.
Quando o custo de um algoritmo igual ao menor
custo possvel, o algoritmo timo para a medida de
custo considerada.
Podem existir vrios algoritmos timos para resolver o mesmo
problema.
Se a mesma medida de custo aplicada a diferentes
algoritmos, ento possvel compar-los e escolher o mais
adequado.
11
Custo de um Algoritmo
Utilizaremos um modelo matemtico baseado em um
computador idealizado.
Deve ser especificado o conjunto de operaes e seus
custos de execues.
mais usual ignorar o custo de algumas operaes e
considerar apenas outras mais significativas.
Ex.: algoritmos de ordenao. Consideramos o nmero
de comparaes entre os elementos do conjunto a ser
ordenado e ignoramos as demais operaes.
12
Funo de complexidade
Para medir o custo de execuo de um algoritmo vamos
definir uma funo de complexidade ou funo de
custo f.
Funo de complexidade de tempo: f(n) mede o
tempo necessrio para executar um algoritmo em um
problema de tamanho n.
Funo de complexidade de espao: f(n) mede a
memria necessria para executar um algoritmo em um
problema de tamanho n.
13
Funo de complexidade
Utilizaremos f para denotar uma funo de
complexidade de tempo daqui para a frente.
A complexidade de tempo na realidade no representa
tempo diretamente
Representa o nmero de vezes que determinadas operaes
relevantes so executadas.
14
17
18
20
21
Melhor caso:
O registro procurado o primeiro consultado !!!
f(n) = 1
22
Caso mdio:
O caso mdio nem sempre to simples de calcular;
Como faremos neste problema???
23
24
pi = 1/n, 1 i n
25
pi = 1/n, 1 i n
A anlise do caso esperado revela que uma pesquisa com
sucesso examina aproximadamente metade dos
registros.
26
Pior caso:
registro procurado o ltimo consultado ou no est presente no
arquivo;
f(n) = n
Caso mdio:
f(n) = (n+1)/2
27
29
31
Pior caso:
quando o maior elemento o primeiro no vetor;
f(n) = 2(n 1)
Caso mdio:
No caso mdio, A[i] maior do que Max a metade das vezes.
f(n) = 3n/2 3/2
32
33
34
Comparao 1
Comparao 2
Comparao 3
Comparao 4
Comparao 3
Comparao 4
35
38
Perguntas?
Exerccio
void exercicio1 (int n)
{
int i, a;
a = 0; i = 0;
while (i < n) {
a += i;
i += 2;
}
}
41