Questões-guia:
- Mostre que CIRCUIT-SAT ≤P SAT. Dica: coloque nomes de variáveis para os fios também, além das entradas.
- Mostre que SAT ≤P 3-CNF-SAT. Dica: a partir de uma árvore sintática para a fórmula, dê nomes de variáveis aos nós internos da árvore, construa cláusulas para cada nó interno, transforme cada cláusula em ≤3-CNF, depois em 3-CNF.
- Mostre que 3-CNF-SAT ≤P CLIQUE. Dica: construa um vértice para cada literal de cada cláusula e ligue literais consistentes em cláusulas distintas. A fórmula será satisfatível se e somente se o grafo tiver uma clique de tamanho n/3, onde n é o número total de vértices.
- Mostre que CLIQUE ≤P VERTEX-COVER. Dica: use STABLE-SET como intermediário.
- Mostre que 3-CNF-SAT ≤P 3-COLOR. Dica: veja Problema 34-3 do Cormen.
Exercícios:
- Exercício 34.4-1 do Cormen.
- Exercício 34.4-2 do Cormen.
- Exercício 34.4-5 do Cormen.
- Exercício 34.5-6 do Cormen.
Questões-guia:
- Que tipos de portas lógicas podem ser usadas em instâncias de CIRCUIT-SAT?
- Em CIRCUIT-SAT, um único fio pode ligar quantas entradas e quantas saídas de portas lógicas?
- O que é o fan-out de um fio? E o fan-in?
- Se representarmos cada porta lógica de uma instância de CIRCUIT-SAT por um vértice, e colocarmos um arco de p1 a p2 sempre que a saída de p1 estiver ligada à entrada de p2, qual propriedade este grafo orientado deverá ter? Quantos vértices de grau de saída 0 este grafo poderá ter?
- Com relação a instâncias de CIRCUIT-SAT, defina atribuição de valores-verdade, atribuição satisfatória e circuito satisfatível.
- Defina a linguagem CIRCUIT-SAT.
- Como se define o tamanho de uma instância de CIRCUIT-SAT?
- Quais são as 6 partes que formam a configuração de uma máquina no modelo de computação utilizado por Cormen para algoritmos de verificação? Quais destas partes mudam ao longo da execução do algoritmo? Quais não mudam?
- O circuito construido a partir de um algoritmo verificador A para uma linguagem L tem quantas cópias do circuito M que implementa a execução de 1 instrução da máquina do modelo? Qual o tamanho de M em função do tamanho n da entrada e da função T que é um limite superior de tempo para A?
Exercícios:
- Exercício 34.3-1 do Cormen.
- Discussão sobre o exercício 34.3-8 do Cormen.
Questões-guia
- O problema de resolver uma equação numérica de 1o. grau pode ser reduzido a resolver uma equação numérica de 2o. grau. A fórmula de solução para equações de 2o. grau pode ser usada para resolver equações de 1o. grau? Como?
- Defina o que significa L1 ≤P L2 para linguagens binárias L1 e L2.
- O que se pode dizer de L1 quando L1 ≤P L2 e L2 ∈ P?
- Defina o que significa dizer que uma linguagem é NP-completa. Como se define a classe NPC?
- O que se pode dizer se houver uma linguagem L tal que L ∈ NPC e L ∈ P?
- O que se pode dizer sobre NPC se P ≠ NP?
- Defina o que significa dizer que uma linguagem é NP-difícil.
- O que se pode dizer de L2 quando L1 ≤P L2 e L1 ∈ NPC?
Exercícios:
- Exercício 34.3-2 do Cormen.
- Exercício 34.3-3 do Cormen.
- Exercício 34.3-6 do Cormen.
Questões-guia:
- Em aulas anteriores, discutimos a classe NP em termos de algoritmos não determinísticos. Que abordagem segue o Cormen?
- Como se define a linguagem HAM-CYCLE? Em quanto tempo roda o algoritmo ingênuo de testar todos os possíveis ciclos?
- O que é um algoritmo verificador para uma linguagem?
- Como se define a classe NP?
- Como se define a classe co-NP? É igual à classe NP?
Exercícios:
- Exercício 34.2-1 do Cormen (fácil).
- Exercício 34.2-3 do Cormen.
- Exercício 34.2-8 do Cormen (fácil).
- Exercício 34.2-10 do Cormen (fácil).
- Exercício 34.2-11 do Cormen.
Questões-guia:
- Porque problemas que podem ser resolvidos em tempo polinomial são considerados "tratáveis"? Dê três motivos.
- O que é um problema abstrato?
- Para que servem codificações?
- Defina alguns conceitos básicos da teoria de linguagens formais: alfabeto, linguagem, string vazia, linguagem vazia, operações sobre linguagens (união, intersecção, complemento, concatenação).
- O que é o fecho de uma linguagem L, denotado por L*?
- O que significa dizer que uma string s é aceita por um algoritmo A? E o que é s ser rejeitada por A?
- O que significa dizer que uma linguagem L é aceita por um algoritmo A? E o que é L ser decidida por A?
- O que significa dizer que uma linguagem L é aceita (decidida) por um algoritmo A em tempo polinomial?
- Defina a classe P.
Exercícios:
- Exercício 34.1-1 do Cormen.
- Dê uma versão de decisão para o problema de achar uma árvore espalhada mínima num grafo não orientado ponderado.
- Mostre que se uma linguagem L está em P, então L* também está em P.
Questões-guia:
- Conhece-se um algoritmo polinomial para algum problema NP-completo? Pode-se dizer que não há algoritmo polinomial para um problema NP-completo?
- Às vezes dois problemas com enunciados semelhantes podem ser: um deles polinomial e o outro NP-completo. Dê exemplos.
- O que são as classes P e NP? É verdade que P ⊆ NP? É verdade que NP ⊆ P?
- O que é a classe NPC? Ela é diferente de NP?
- Quais são os principais elementos para mostrar que um problema é NP-completo?
- O que são problemas de decisão? Qual sua relação com problemas de otimização?
- O que é uma redução de um problema A para um problema B?
- Porque precisamos de um primeiro problema NP-completo?
Exercícios:
- Ache um problema de decisão intimamente relacionado ao problema do ciclo hamiltoniano.
- Ache um problema de decisão intimamente relacionado ao problema de coloração de grafos.
- O problema de saber se P=NP é um dos grandes desafios da computação contemporânea. Qual o valor que o Instituto Clay se comprometeu a pagar ao primeiro que resolver esta questão?
Questões-guia:
- Como emparceirar n equipes que estejam disputando um campeonato de todos contra todos? Quantas rodadas são necessárias?
- Defina os seguintes termos: k-aresta-coloração, coloração própria de arestas, grafo k-aresta-colorável, índice cromático.
- Para grafos simples G, o que pode dizer sobre a relação entre o índice cromático χ'(G) e o grau máximo Δ(G)?
- O que é um grafo "classe 1"? E um grafo "classe 2"?
- A que classe pertencem os grafos bipartidos?
- Qual a relação entre χ'(G) e Δ(G) em grafos com arestas múltiplas?
- O que é um grafo overfull (transbordante?) A que classe tais grafos pertencem?
- O que diz o Teorema de Vizing e quais os elementos principais de sua prova? Consulte, além do livro de West, adotado nesta disiplina, um paper interessante de Misra e Gries sobre o assunto, publicado em 1990.
Exercícios:
- Exercício 7.1.1 do West, apenas χ'(G).
- Calcule o número de 3-aresta-colorações próprias de K3,3.
- Mostre um grafo G e uma escolha de emparelhamentos máximos tais que o algoritmo a seguir NÃO forneça o índice cromático de G.