Computabilidade e Complexidade CC
Caracterizar classes computacionais, identificar conjuntos completos, distinguir complexidade uniforme de não uniforme e executar reduções; estudar problemas em aberto em complexidade computacional.
Computação com recursos limitados no espaço e no tempo. Relações estruturais entre classes de complexidade. Reduções com recursos limitados de muitos para um (tempo polinomial, espaço logarítmico) e de Turing. Conjuntos NP-completos, PSPACE-completos e NL-completos. Conjuntos P-completos. Alternação. Classes de complexidade para a alternação. A hierarquia polinomial. Classes de complexidade não uniforme e circuitos booleanos. Máquinas de Turing probabilísticas. Classes PP, BPP, R e ZPP. Relativizações negativas e positivas. Isomorfismo e NP-completude: cilindros e conjuntos esparsos completos. Máquinas de Turing interativas. Jogos Artur contra Merlin e sistemas de prova.