Complexidade e Otimização
Critérios de
correção para os trabalhos.
Os
trabalhos tem a forma de ARTIGOS (pegue aqui um exemplo).
Artigos que incluírem o código do programa no texto como se fosse
uma explicação para o algoritmo recebem notas ruins. A lista de
exercícios da disciplina está
aqui.
Objetivos
O cumprimento da disciplina busca dar ao aluno, ao
final do semestre, condições de:
- Aprofundar os métodos para análise da eficiência de algoritmos
e compreender as formas de análise de algoritmos.
- Aprofundar as classes de problemas P e NP, suas características
e importância.
- Conhecer as metodologias mais comuns para desenvolvimento de
algoritmos eficientes.
Ementa
Estudo de complexidade e análise de algoritmos utilizando notação
assintótica (O(), Tetha(), Omega()). Aplicação de recorrências e
somatórios na análise de algoritmos. Estudo das classes de problemas
(P, EXP, NP, NP-Completo, NP-Hard, P-SPACE) e instâncias de
problemas destas categorias. Caracterização de estratégias para a
construção de algoritmos e solução de problemas (algoritmos gulosos,
programação dinâmica, branch- and- bound, backtracking). Estudo de
problemas de otimização e de análise combinatória.
Programa
- Revisão de análise de algoritmos
- Ordem de crescimento
- Notação Assintótica
- Notação O
- Notação Omega
- Notação Theta
- Tipos de algoritmos: logarítmico, linear, quadrático,
exponencial e outros
- Análise de Complexidade de Algoritmos e de Problemas
- Somatórios
- Recorrências
- Análise de Problemas
- Classes de Problemas
- P
- NP
- NP- Completo
- NP- Hard
- Solução de Problemas "Difíceis"
- Força- Bruta
- Heurísticas
- Exemplos de Problemas
- Estratégias de Construção de Algoritmos1 Introdução aos
Problemas de Otimização
- Algoritmos Gulosos
- Divisão e Conquista
- Programação Dinâmica
- Recorrências
- Tabulação e Memoização
- Branch & Bound
- Backtracking
Avaliação
G1 = (P1+P2+NTrab)/3
Materiais
- Materiais da disciplina:
- Somatórios estão aqui e uma lista de
exercícios está aqui.
- Notações estão aqui e uma lista de
exercícios está aqui.
- Recorrências estão aqui e uma lista
de exercícios está aqui.
- Uma lista de exercícios sobre backtraking está aqui.
-
What papers should everyone read?
- Siga no Twitter: CompSciFact
- Um Wikibook inteiro
sobre algoritmos.
- Um livro ótimo está aqui.
- E outro livro muito legal está aqui.
- Caso você tenha dificuldade com os trabalhos:
- Dicas sobre o uso de pseudo-código estão
aqui, aqui, e
aqui.
- Também temos o livro do Zobel na biblioteca. Use-o!!
- Um repositório de links existe na Iowa
State.
Recomendamos os itens listados em Writing Texts and Abstracts,
especialmente as dicas de Schulzrinne e a apresentação de
Peyton-Jones.
- Introdução à análise de algoritmos
- Somas na
Univ. da California (Davis).
- Material sobre somas (bem legal), na Universidade
do Tennessee (Knoxville).
- Material sobre análise de algoritmos em
Cprogramming.com.
- Explicações legais sobre notação O() na
Universidade de Wisconsin (Madison).
- Notação O() na Wikipedia.
- Problemas P e NP na Univ. da
California (Los Angeles).
- Mais P e NP na Univ. da
California (Irvine).
- A reportagem de
capa da Communications of
the ACM de setembro de 2009, que trata dos últimos
resultados sobre P e NP.
- Metodologias de desenvolvimento de algoritmos
- Veja na Wikipedia:
divide and conquer, greedy, branch and bound, dynamic
programming.
- Material bem legal na Universidade Federal de Campina Grande,
do Prof. Jorge
Abrantes de Figueiredo.
- Veja tambem o livro do Skiena, na biblioteca ou na Web.
- Um ótimo livro online em espanhol: Guerequeta y Vallecillo
(trata de todas as abordagens, mas às vezes a matemática é meio
exigente).
- Um exemplo australiano sobre backtracking em Berkeley.
- Um pouco de tudo:
- Uma série de aulas do
MIT (em inglês), sobre vários tópicos da disciplina e outros
assuntos.
- Um catálogo de cursos sobre algoritmos na Universidade
de Pittsburgh. Fonte de outros links!
- Design and Analysis na
Universidade de Kent.
- Catálogo de Algoritmos, do Skiena, em Stony
Brook. (Temos na biblioteca)
Bibliografia:
Livros texto
- AHO, Alfred V. Foundations of computer science. New
York, NY: Computer Science Press, 1998.
- CORMEN, Thomas H. Introduction to algorithms. 3. ed.
Cambridge (MA): The MIT Press, 2009.
- RAWLINS, Gregory J. E. Compared to what? An introduction to the
analysis of algorithms. New York, NY: Computer Science
Press, 1992.
Livros complementares
- GERSTING, Judith L. Fundamentos matemáticos para ciência da
computação: um tratamento moderno de matemática discreta. 5.
ed. Rio de Janeiro: LTC, 2004.
- GIBBONS, Alan. Algorithmic
graph theory. Cambridge (UK): Cambridge Univ., 1985.
- LEVITIN, Anany. Introduction
to the design and analysis of algorithms. Boston: Addison-
Wesley, 2003.
- WALLIS, W. D. A beginner's
guide to graph theory. Boston: Birkhäuser, 2000.
- DASGUPTA, S., PAPADIMITRIOU, C.H., VAZIRANI, U.V. Algorithms.
http://www.cs.berkeley.edu/~vazirani/algorithms/all.pdf.
Acessado em janeiro de 2011.
De volta para minha página.
[PUCRS]
[Faculdade de
Informática]
[Pós-Graduação em
Informática]