Teoria da Computabilidade e Complexidade

Teoria da Computabilidade e Complexidade


Objetivos

O cumprimento da disciplina busca dar ao aluno, ao final do semestre, condições de:

  1. Compreender a noção de funções recursivas e recursivas primitivas;

  2. Conhecer os princípios básicos da noção de computabilidade de Turing;

  3. Compreender os limites da computação através do estudo de provas de indecidibilidade;

  4. Conhecer os fundamentos da hierarquia de classes de complexidade de problemas computacionais e identificar problemas pertencentes às classes P, NP e PSPACE, suas características e importância na computação aplicada;

  5. Compreender e aplicar a redutibilidade polinomial de problemas através do estudo de provas de NP- e PSPACE-Completude.

Ementa

Estudo dos conjuntos enumeráveis e provas por diagonalização. Estudo da teoria das funções recursivas. Definições equivalentes de computabilidade. Discussão da Tese de Church-Turing. Estudo dos problemas decidíveis e do problema da parada. Estudo do conceito de redutibilidade e sua aplicação na determinação da indecidibilidade de problemas lógicos e computacionais. Estudo e aplicação das classes de complexidade de tempo: classe P, classe NP e NP-completude. Estudo e aplicação das classes de complexidade de espaço: classe PSPACE e PSPACE-completude.

Programa

  1. Conjuntos Enumeráveis e Funções Recursivas

    1. Conjuntos Enumeráveis
    2. Argumento Diagonal de Cantor e Conjuntos Incontáveis
    3. Funções Recursivas Primitivas e Funções Recursivas Parciais
  2. Turing-Computabilidade

    1. Máquinas de Turing
    2. Linguagens Reconhecíveis e Decidíveis
    3. Variações de Máquinas de Turing
    4. Conjectura de Church-Turing
    5. Máquinas de Turing Universais
  3. Problemas Indecidíveis

    1. Prova da Indecidibilidade do Problema da Parada
    2. Entscheidungsproblem e Introdução à Reducibilidade de Problemas
    3. Decidibilidade de Teorias Lógicas
    4. Teoremas de Gödel
  4. Hierarquia de Classes de Complexidade de Problemas Computacionais

    1. Tipos de Problemas Computacionais
    2. Complexidade de Tempo e de Espaço
    3. Hierarquia de Classes de Complexidade de Problemas
    4. Classe P e exemplos de Problemas em P
    5. Classe NP
      1. Definição da classe
      2. Exemplos de problemas importantes em NP e suas aplicações industriais
      3. Teorema de Cook-Levin
      4. Redução polinomial de problemas
    6. Provas de NP-Completude
    7. Classe PSPACE
      1. Definição da Classe
      2. Exemplos de Problemas em PSPACE
      3. Provas de PSPACE-Completude
    8. Intratabilidade

Avaliação

G1 = (P1 + P2 + MT) / 3

Materiais existentes no momento:

Bibliografia:

Básica:

Complementar: