An´ alise de algoritmos
Introduc¸˜ao
Prof. Fl´avio Rog´erio Uber(UEM/DIN)
Autor: Prof. Marco Aur´elio Lopes Barbosa (UEM/DIN)
Conte´ udo
Algoritmos e problemas Como avaliar um algoritmo?
Simplicidade Corretude Eficiˆencia
Projeto e an´alise de algoritmos O que ´e
Ferramentas Utilidade Exerc´ıcios Referˆencias
Algoritmos e problemas
Problema
´E uma tarefa a ser executada.
Especifica em termos gerais o relacionamento entre a entrada e sa´ıda desejada.
Algoritmo
´E 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.
Ferramenta para resolver um problema computacional.
Autor: Prof. Marco Aur´elio Lopes Barbosa (UEM/DIN) 3 / 14
Exemplo - Problema da ordenac¸˜ ao
Entrada
Uma sequˆencia den n´umerosha1,a2, . . . ,ani
Sa´ıda
Uma permutac¸˜ao (reordenac¸˜ao) ha01,a02, . . . ,an0i da sequˆencia de entrada tal quea01 ≤a02≤ · · · ≤an0.
I Aplicac¸˜oes pr´aticas de Algoritmos s˜ao onipresentes: Internet, Com´ercio Eletrˆonico, Ind´ustria...
Autor: Prof. Marco Aur´elio Lopes Barbosa (UEM/DIN) 4 / 14
Como avaliar um algoritmo?
I Simplicidade
I Corretude
I Eficiˆencia
Autor: Prof. Marco Aur´elio Lopes Barbosa (UEM/DIN) 5 / 14
Simplicidade
Um algoritmo ´e simplesse puder ser facilmente entendido, implementado e mantido.
Como medir a simplicidade?
N˜ao se conhece t´ecnicas formais para isto!
Autor: Prof. Marco Aur´elio Lopes Barbosa (UEM/DIN) 6 / 14
Simplicidade
Um algoritmo ´e simplesse puder ser facilmente entendido, implementado e mantido.
Como medir a simplicidade?
N˜ao se conhece t´ecnicas formais para isto!
Autor: Prof. Marco Aur´elio Lopes Barbosa (UEM/DIN) 6 / 14
Simplicidade
Um algoritmo ´e simplesse puder ser facilmente entendido, implementado e mantido.
Como medir a simplicidade?
N˜ao se conhece t´ecnicas formais para isto!
Autor: Prof. Marco Aur´elio Lopes Barbosa (UEM/DIN) 6 / 14
Corretude
Um algoritmo ´e dito corretose para toda entrada espec´ıfica a sa´ıda correta ´e produzida. Dizemos que um algoritmo correto resolveo problema dado.
Como saber se um algoritmo est´a correto?
I Testando o algoritmo?
I Testes servem apenas para provar que um algoritmo tem erros, nunca para provar que est´a correto(Dijkstra).
I Com t´ecnicas matem´aticas!
Autor: Prof. Marco Aur´elio Lopes Barbosa (UEM/DIN) 7 / 14
Corretude
Um algoritmo ´e dito corretose para toda entrada espec´ıfica a sa´ıda correta ´e produzida. Dizemos que um algoritmo correto resolveo problema dado.
Como saber se um algoritmo est´a correto?
I Testando o algoritmo?
I Testes servem apenas para provar que um algoritmo tem erros, nunca para provar que est´a correto(Dijkstra).
I Com t´ecnicas matem´aticas!
Autor: Prof. Marco Aur´elio Lopes Barbosa (UEM/DIN) 7 / 14
Corretude
Um algoritmo ´e dito corretose para toda entrada espec´ıfica a sa´ıda correta ´e produzida. Dizemos que um algoritmo correto resolveo problema dado.
Como saber se um algoritmo est´a correto?
I Testando o algoritmo?
I Testes servem apenas para provar que um algoritmo tem erros, nunca para provar que est´a correto(Dijkstra).
I Com t´ecnicas matem´aticas!
Autor: Prof. Marco Aur´elio Lopes Barbosa (UEM/DIN) 7 / 14
Corretude
Um algoritmo ´e dito corretose para toda entrada espec´ıfica a sa´ıda correta ´e produzida. Dizemos que um algoritmo correto resolveo problema dado.
Como saber se um algoritmo est´a correto?
I Testando o algoritmo?
I Testes servem apenas para provar que um algoritmo tem erros, nunca para provar que est´a correto(Dijkstra).
I Com t´ecnicas matem´aticas!
Autor: Prof. Marco Aur´elio Lopes Barbosa (UEM/DIN) 7 / 14
Corretude
Um algoritmo ´e dito corretose para toda entrada espec´ıfica a sa´ıda correta ´e produzida. Dizemos que um algoritmo correto resolveo problema dado.
Como saber se um algoritmo est´a correto?
I Testando o algoritmo?
I Testes servem apenas para provar que um algoritmo tem erros, nunca para provar que est´a correto(Dijkstra).
I Com t´ecnicas matem´aticas!
Autor: Prof. Marco Aur´elio Lopes Barbosa (UEM/DIN) 7 / 14
Eficiˆencia
Medida quantitativa inversa da quantidade de recursos (tempo de processamento, mem´oria, etc) requeridos para a execuc¸˜ao do algoritmo.
Quanto maior a eficiˆencia menos recursos s˜ao gastos.
Como medir a eficiˆencia?
I M´etodo experimental
I Implementar diversos algoritmos
I Executar um grande n´umero de vezes
I Analisar os resultados
I M´etodo anal´ıtico
I A ideia ´e encontrar func¸˜oes matem´aticas que descrevam o crescimento do tempo de execuc¸˜ao dos algoritmos em relac¸˜ao ao tamanho da entrada
I Comparar as func¸˜oes
Autor: Prof. Marco Aur´elio Lopes Barbosa (UEM/DIN) 8 / 14
Eficiˆencia
Medida quantitativa inversa da quantidade de recursos (tempo de processamento, mem´oria, etc) requeridos para a execuc¸˜ao do algoritmo.
Quanto maior a eficiˆencia menos recursos s˜ao gastos.
Como medir a eficiˆencia?
I M´etodo experimental
I Implementar diversos algoritmos
I Executar um grande n´umero de vezes
I Analisar os resultados
I M´etodo anal´ıtico
I A ideia ´e encontrar func¸˜oes matem´aticas que descrevam o crescimento do tempo de execuc¸˜ao dos algoritmos em relac¸˜ao ao tamanho da entrada
I Comparar as func¸˜oes
Autor: Prof. Marco Aur´elio Lopes Barbosa (UEM/DIN) 8 / 14
Eficiˆencia
Medida quantitativa inversa da quantidade de recursos (tempo de processamento, mem´oria, etc) requeridos para a execuc¸˜ao do algoritmo.
Quanto maior a eficiˆencia menos recursos s˜ao gastos.
Como medir a eficiˆencia?
I M´etodo experimental
I Implementar diversos algoritmos
I Executar um grande n´umero de vezes
I Analisar os resultados
I M´etodo anal´ıtico
I A ideia ´e encontrar func¸˜oes matem´aticas que descrevam o crescimento do tempo de execuc¸˜ao dos algoritmos em relac¸˜ao ao tamanho da entrada
I Comparar as func¸˜oes
Autor: Prof. Marco Aur´elio Lopes Barbosa (UEM/DIN) 8 / 14
Eficiˆencia
Medida quantitativa inversa da quantidade de recursos (tempo de processamento, mem´oria, etc) requeridos para a execuc¸˜ao do algoritmo.
Quanto maior a eficiˆencia menos recursos s˜ao gastos.
Como medir a eficiˆencia?
I M´etodo experimental
I Implementar diversos algoritmos
I Executar um grande n´umero de vezes
I Analisar os resultados
I M´etodo anal´ıtico
I A ideia ´e encontrar func¸˜oes matem´aticas que descrevam o crescimento do tempo de execuc¸˜ao dos algoritmos em relac¸˜ao ao tamanho da entrada
I Comparar as func¸˜oes
Autor: Prof. Marco Aur´elio Lopes Barbosa (UEM/DIN) 8 / 14
Exemplo
I 1 milh˜ao de n´umeros
I Ordenac¸˜ao por inserc¸˜ao
I c1n2
I Computador que executa 1 bilh˜ao de instruc¸˜oes
I Executa em 2n2 - portantoc1=2
I Ordenac¸˜ao por intercalac¸˜ao
I c2nlgn
I Computador que executa 10 milh˜oes de instruc¸˜oes
I Executa em 50nlgn - portantoc2=50
Autor: Prof. Marco Aur´elio Lopes Barbosa (UEM/DIN) 9 / 14
O que ´ e projeto e an´ alise de algoritmos?
I Analisar um algoritmo significa prever os recursos de que o algoritmo necessitar´a (Cormen, et al. 2002)
I Engenharia
I Tamb´em significa estimar o grau de dificuldade de problemas
Autor: Prof. Marco Aur´elio Lopes Barbosa (UEM/DIN) 10 / 14
Ferramentas
I Ferramentas matem´aticas
I Induc¸˜ao matem´atica
I S´eries e produt´orios
I Potˆencias e logaritmos
I An´alise combinat´oria
I Teoria das probabilidades
I Criatividade
Autor: Prof. Marco Aur´elio Lopes Barbosa (UEM/DIN) 11 / 14
Utilidade
I Para saber se implementac¸˜oes s˜ao vi´aveis do ponto de vista pr´atico
I Para saber qual ´e o melhor algoritmo para a resoluc¸˜ao de um problema
I Para projetar algoritmos eficientes
Autor: Prof. Marco Aur´elio Lopes Barbosa (UEM/DIN) 12 / 14
Exerc´ıcios
I Leitura do cap´ıtulo 1
I Leitura https:
//en.wikipedia.org/wiki/Analysis_of_algorithms
I Exerc´ıcios 1.2-2 e 1.2-3
I Problema 1-1
Autor: Prof. Marco Aur´elio Lopes Barbosa (UEM/DIN) 13 / 14
Referˆ encias
I Thomas H. Cormen et al. Introduc¸˜ao a Algoritmos. 2a edic¸˜ao em portuguˆes. Cap´ıtulo 1.
Autor: Prof. Marco Aur´elio Lopes Barbosa (UEM/DIN) 14 / 14