Académique Documents
Professionnel Documents
Culture Documents
O que um algoritmo?
3/17/2005 2
1
Algoritmos
Estratgia:
especificar (definir propriedades)
arquitectura (algoritmo e estruturas de dados)
Analise de complexidade (tempo de execuo e
memria)
implementar (numa linguagem de programao)
testar (submeter entradas e verificar observncia das
propriedades especificadas)
3/17/2005 3
3/17/2005 4
2
Relao entre Algoritmos e Estruturas de
Dados
Algoritmos so mtodos para resolver problemas
problemas tm dados
dados so tratados (neste contexto) computacionalmente
O Processo de organizao dos dados pode determinar a
eficincia do algoritmo
algoritmos simples podem requerer estruturas de dados complexas
algoritmos complexos podem requerer estruturas de dados simples
3/17/2005 5
Anlise de Algoritmos
Para avaliar e comparar o desempenho de dois
algoritmos:
executamos ambos (muitas vezes) para ver qual mais rpido
fornece indicaes sobre o desempenho e informao sobre como
efectuar uma anlise mais profunda
Que dados usar?
dados reais: verdadeira medida do custo de execuo
dados aleatrios: assegura-nos que as experincias testam o
algoritmo e no apenas os dados especficos
Caso mdio
dados perversos: mostram que o algoritmo funciona com qualquer
tipo de dados
Pior caso!
dados benficos:
Melhor caso
3/17/2005 6
3
Anlise de Algoritmos
Anlise precisa uma tarefa complicada
algoritmo implementado numa dada linguagem
linguagem compilada e programa executado num
dado computador
difcil prever tempos de execuo de cada instrues e
antever optimizaes
muitos algoritmos so "sensveis" aos dados de entrada
muitos algoritmos no so bem compreendidos
Para prever o tempo de execuo de um programa
apenas necessrio um pequeno conjunto de
ferramentas matemticas
3/17/2005 7
3/17/2005 8
4
Anlise: Crescimento de Funes
Os Algoritmos tm tempo de execuo
proporcional a
1 - muitas instrues so executadas uma s vez ou
poucas vezes (se isto for verdade para todo o programa
diz-se que o seu tempo de execuo constante)
5
Anlise: Notao "O grande"
A notao matemtica que nos permite suprimir detalhes na
anlise de algoritmos
3/17/2005 11
f(N)
3/17/2005 12
6
Metodologia para determinao de
complexidade
Suponha o seguinte cdigo
3/17/2005 13
Branch-and-bound ( Pruning)
Ignora um conjunto de alternativas desnecessrias
Menor tempo de execuo e garante que encontra a
soluo
3/17/2005 14
7
Algoritmos Tecnicas de projecto
3/17/2005 15
8
Algoritmos Tecnicas de projecto
Aleatrios (Randomized)
Em cada passo pode ser atirada uma moeda ao ar para
decidir o passo seguinte
Existem problemas prticos onde estes algoritmos so
competitivos relativamente aos algoritmos
determinsticos
3/17/2005 18