Alguma coisa
Mestrado em Informática
Projeto e Análise de Algoritmos
Análise de Algoritmos
Raquel Mini raquelmini@pucminas.br O que é um algoritmo?
•
•
•
•
•
Qualquer procedimento computacional bem definido que toma algum valor ou conjunto de valores como entrada e produz algum valor ou conjunto de valores como saída
Sequência de passos computacionais que transformam a entrada na saída
Sequência de ações executáveis para a obtenção de uma solução para um determinado tipo de problema
Descrição de um padrão de comportamento, expresso em termos de um conjunto finito de ações
Sequência não ambígua de instruções que é executada até que determinada condição se verifique
2
Algoritmo correto X incorreto
•
•
Um algoritmo é correto se, para cada instância de entrada, ele pára com a saída correta
Um algoritmo incorreto pode não parar em algumas instâncias de entrada, ou então pode parar com outra resposta que não a desejada
3
Algoritmo eficiente X ineficiente
•
•
Algoritmos eficientes são os que executam em tempo polinomial
Algoritmos que necessitam de tempo superpolinomial são chamados de ineficientes
4
Problema tratável X intratável
•
•
Problemas que podem ser resolvidos por algoritmo de tempo polinomial são chamados de tratáveis
Problemas que exigem tempo superpolinomial são chamados de intratáveis
Tratabilidade
5
Problema decidível X indecidível
•
•
Um problema é decidível se existe algoritmo para resolvê-lo
Um problema é indecidível se não existe algoritmo para resolvê-lo
Decidibilidade
6
Análise de algoritmos
•
•
•
•
Analisar a complexidade computacional de um algoritmo significa prever os recursos de que o mesmo necessitará:
− Memória
− Largura de banda de comunicação
− Hardware
− Tempo de execução
Geralmente existe mais de um algoritmo para resolver um problema A análise de complexidade computacional é