O documento discute problemas NP-completos relacionados a grafos, como o problema do caixeiro viajante, cobertura de nós e conjuntos independentes. Explica que esses problemas são NP-completos através de reduções em tempo polinomial de problemas conhecidos como 3-SAT e ciclo hamiltoniano.
2. O problema do caixeiro
viajante
● O problema do caixeiro viajente (TSP –
traveler salesman problem) considera duas
entradas: um grafo G = (V,E) e uma função c.
c: E → N
● A função c associa um custo a cada aresta.
● O TSP envolve descobrir o menor ciclo que
passe por todos os nós.
– “Menor” diz respeito ao somatório dos custos das
arestas deste ciclo.
4. O problema do caixeiro
viajante
● O TSP pode ser enunciado como: dado um grafo
G, uma função completa c e um custo máximo k, o
grafo G possui um ciclo P que passe por todos os
nós e cujo somatório dos custos das arestas de P
seja menor que k?
● A prova que este problema é NP-completo envolve
um problema reduzido.
– HC (Hamiltonian cycle)
● O problema do ciclo hamiltoniano pode ser
enunciado como: dado um grafo G, existe um ciclo
que passe uma única vez em cada nó?
5. O problema do caixeiro
viajante
● Visto que usaremos um problema “mais fácil”
devemos apresentar a redução do HC ao TSP.
Qual seria?
● Visto que existe redução de tempo polinomial de
HC para TSP, provaremos que HC é NP-completo
para completar a prova de que o TSP também é.
● Contudo, existe um problema “mais simples” que
o HC que também é NP-completo:
– DHC (Directed Hamiltonian cycle)
● Similar ao HC, mas a entrada é um grafo dirigido.
6. NP-completude do DHC
● DHC está em NP
– Use não-determinismo para encontrar um ciclo e
verificar se todos os nós estão dentro dele.
● Redução de 3-SAT para DHC
– Transformaremos uma instância de 3-SAT
(x1+x2+y1)(x3+y2+ -y1) … (xn-2+yn-3+ -yn-4)(xn-1+xn+ -
yn-3)
– Em um grafo G dirigido que possuirá um ciclo se e
somente se a instância correspondente é
satisfazível.
7. Redução de 3-SAT para
DHC
Considere a instância E de 3-SAT.
E possui as variáveis:
– x1, x2, x3, …, xn
E possui k cláusulas:
– E = e1 ^ e2 ^ … ^ ek
Considere Qi e Qi a quantidade de ocorrências
de xi e a quantidade de ocorrências de xi,
respectivamente.
mi = max(Qi,Qi)
8. Redução de 3-SAT para
DHC
1) Para cada variável xi, crie um subgrafo Hi
assim:
9. A partir de ai
deve-se
seguir a “escada”:
ai
bi0
ci0
bi1
ci1
… di
ou
ai
ci0
bi0
ci1
bi1
… di
10. Redução de 3-SAT para
DHC
2) Para cada Hi criado, una-os como
mostrado na figura seguinte:
11.
12. Redução de 3-SAT para
DHC
3) Para cada cláusula ej criaremos um
subgrafo Ij:
14. Redução de 3-SAT para
DHC
4) Conectamos Ij com Hi da seguinte forma:
– Suponha que o primeiro literal em ej é xi (e não é
negada)
– Pegue um cip com um valor de p que não tenha sido
usado para este propósito. Ligue-o por uma aresta
com rj. Em seguida, ligue uj com bi,p+1.
– Se o primeiro literal de ej era xi, então use um bip.
– Faça o mesmo para o segundo literal, mas usando sj
e vj.
– E o mesmo para o terceiro literal, mas usando ti e wi.
17. NP-completude de DHC
● A redução dada pode ser feita em tempo
polinomial.
● Devemos mostrar a redução de DHC para
HC e em seguida do HC para TSP.
18. Redução de DHC para
HC
● Suponha que foi dado um grafo dirigido Gd. O
grafo não dirigido Gu será construído como segue.
● Para cada nó v de Gd haverão três nós em Gu: v0,
v1, v2.
● As arestas em Gu são:
– Para os nós em Gd, existem as arestas (v0,v1), (v1,v2)
em Gu
– Se existe uma aresta (v,w) em Gd haverá uma aresta
(v2,w0) em Gu.
19. Redução de DHC para
HC
● Esta redução tem tempo polinomial
● Gd possuirá um ciclo hamiltoniano se e
somente se Gu possui.
– Um ciclo de Gu será do tipo 0 1 2 0 1 2 ... ou 2 1
0 2 1 0 … . Isto determina a direção de Gd.
– Um ciclo em Gd gera um ciclo de Gu seguindo
os subscritos v10 v11 v12 v20 v21 v22 … onde os vi
são nós originais do grafo dirigido e vi0 vi1 vi2, os
nós gerados na redução.
20. O problema da cobertura
de nós
● Dado um grafo G, dizemos que N é uma
cobertura de nós para G se toda aresta de
G tem no mínimo uma extrimidade em N.
● O problema da cobertura de nós (NC –
node cover) é: dado um grafo G e um valor
k, G possui uma cobertura de nós de k ou
menos nós?
22. NP-completude do
problema da cobertura
● Redução de 3-SAT
● Para cada cláusula (X+Y+Z) construa uma
“coluna” de três nós, todas conectadas por
arestas verticais
● Adicione uma aresta horizontal entre os nós
que representam qualquer variável e sua
negação.
● k = duas vezes o número de cláusulas.
23. 23
Exemplo
(x + y + z)(-x + -y + -z)(x + -y +z)(-x + y + -z)
x
z
y
-x
-z
-y
x
z
-y
-x
-z
y
k = 8
24. Redução de 3-SAT a NC
● Uma cobertura de nós deve ter no mínimo
dois nós de cada coluna, ou alguma aresta
vertical que não foi coberta.
● Como k é duas vezes a quantidade de
colunas, deve haver exatamente dois nós na
cobertura de cada coluna.
● A atribuição que satisfaz a expressão
corresponde ao valor verdade do nó em
cada coluna que não foi selecionado no NC.
25. 25
Exemplo
(x + y + z)(-x + -y + -z)(x + -y +z)(-x + y + -z)
Atribuição de valores: x = y = V; z = F
Toma-se um nó verdadeiro de cada coluna
26. Exemplo
(x + y + z)(-x + -y + -z)(x + -y +z)(-x + y + -z)
Atribuição de valores: x = y = V; z = F
Os outros nós formam um cobertura.
27. Exercício
● Fazer o mesmo para
– (x + x + x)(-x + -x + -x)
– (x + x + x)(x + x + x)
– (x + x + x)(y + y + y)(-x + -x + -x)
28. Redução de 3-SAT a NC
● A redução pode ser feita em tempo
polinomial
● Uma instância F de 3-SAT é satisfazível se
e somente se o grafo G tem uma cobertura
de nós de tamanho k.
29. Prova: Se
● Suponha que nós possamos satisfazer F
com a atribuição A.
● Para cada cláusula de F, pegamos um dos
três literais de A que fazem F verdadeira.
● Colocamos na cobertura de nós os dois nós
para a cláusula que não corresponde ao
literal selecionado.
● Total de nós selecionados = k.
30. Prova: Se
● Os nós selecionados cobrem todas as arestas
verticais
– Por quê? Quaisquer dois nós para a cláusula cobre o
triângulo de nós verticias para a cláusula.
● As arestas horizontais estão cobertas.
– Uma aresta horizontal conecta nós para algum x e -x.
– Uma variável é falso em A e portanto seu nó deve ser
selecionado para a cobertura de nós.
● Entre x e -x, um deles deve estar dentro da cobertura,
senão, as arestas entre eles não incidirão na cobertura.
31. Prova: somente se
● Suponha que G tenha uma cobertura de
nós com no máximo k nós.
● Um nó não pode cobrir as arestas verticais
de alguma coluna, assim cada coluna deve
ter exatamente 2 nós pertencentes à
cobertura.
● Construa uma atribuição para F atribuindo
valores V ao literal que não está na
cobertura.
32. Prova: somente se
● Há nós não selecionados que
correspondem ao mesmo tempo a x e -x?
– Então não haveria uma atribuição verdade para
F. Contradição!
● Mas há uma aresta horizontal entre estes
nós.
– Portanto, no mínimo um deles estará na
cobertura de nós.
33. Problema dos conjuntos
independentes
●
Considere G = (V, E) e I ⊆ V.
● I é um conjunto independente (IS –
independent set) se nenhuma aresta de G
conecta dois nós pertencentes a I.
● O problema dos conjuntos independentes
pode ser formulado como: dado um grafo G
e um valor k entre 1 e |V|, G possui um
conjunto independente de tamanho k?
35. Problema dos conjuntos
independentes
● Aplicação de IS
– Alocação de datas para aplicação de provas
● Nós são as turmas. Se duas turmas possuem os
mesmo alunos, ligue-as por uma aresta. Se existir
um IS maximal, podemos alocar provas sem realizá-
las ao mesmo tempo.
● IS é NP-completo (prova – exercício).
36. Referência
● [1] HOPCROFT, John E.; ULLMAN, Jeffrey
D.; MOTWANI, Rajeev. Introdução à teoria
de autômatos, linguagens e computação.
[Rio de Janeiro]: Campus, c2003. p. 328-352
● [2] SIPSER, Michael. Introdução à teoria da
computação. 2.ed. São Paulo, SP: Cengage
Learning, c2007. xxi, 459 p. ISBN
9788522104994
● Traduzido e adaptado dos slides de Jeffrey
D. Ullman.