Optativa 2019-1: Técnicas Avançadas de Programação
- Código: Tópicos Especiais em Computação XII
- Professor: Leandro Zatesko
- Nome: TAP - Técnicas Avançadas de Programação
EMENTA
Programação competitiva. Estruturas de dados avançadas: make–union–find, árvores de segmento, árvores de Fenwick, heaps e árvores de sufixo. Algoritmos gulosos. Algoritmos de divisão e conquista. Programação dinâmica. Modelagem de problemas com grafos. Problemas combinatoriais. Problemas de Teoria dos Números. String matching. Geometria computacional.
OBJETIVOS
Estudar técnicas avançadas de programação para a resolução de problemas complexos, praticando a implementação das técnicas em diversos exercícios e comparando analiticamente o resultado com os algoritmos de força bruta. Entender o conceito de espaço de busca em problemas de otimização. Aprimorar a criatividade e as habilidades necessárias para competições de programação. Estudar algumas técnicas para a obtenção em tempo viável de soluções aproximadas para problemas NP-completos ou NP-difíceis.
BIBLIOGRAFIA BÁSICA
- HALIM, S.; HALIM, F. Competitive Programming 3: The New Lower Bound of Programming Contests, Lulu, 2013.
- SKIENA, S. S.; REVILLA, M. Programming Challenges, 1ª edição. Springer, 2003.
- DASGUPTA, S.; PAPADIMITRIOU, C. H.; VAZIRANI, U. Algoritmos, McGraw Hill, 2008.
- KLEINBERG, J.; TARDOS, E. Algorithm Design, 1ª edição. Addison Wesley, 2005.
- SKIENA, S. S. The Algorithm Design Manual, 2ª edição. Springer, 2010.
BIBLIOGRAFIA COMPLEMENTAR
- BELLMAN, R.; DREYFUS, S. Dynamic Programming, 1ª edição. Princeton University Press, 2010.
- CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L.; STEIN, C. Algoritmos: Teoria e Prática, Rio de Janeiro: Campus, 2002.
- KNUTH, D. E. The Art Of Computer Programming, vol. 1–4, Addison-Wesley, 2011.
- MANBER, U. Introduction To Algorithms: A Creative Approach, 1ª edição. Addison-Wesley, 1989.