Crescimento assintótico de funções. Somatórios. Análise de complexidade de algoritmos. Algoritmos iterativos e recursivos. Divisão e conquista. Algoritmos gulosos. Programação Dinâmica. Problemas tratáveis e intratáveis. Classes de problemas: P, NP, NP-Completo e NP-Difícil. Aproximações e Heurísticas.