problemas np-completos
DESCRIPTION
Problemas NP-completos. Profa. Sandra de Amo Teoria da Computação Pós-graduação em Ciência da Computação. Diagrama das Reduções entre os Problemas. SAT. 3-SAT. SUM-SET. K-COLOR. HAMCIRC. HAMPATH. CLIQUE. VC. Mochila. UHAMCIRC. UHAMPATH. VC = Vertex Cover. CV = Caixeiro Viajante. - PowerPoint PPT PresentationTRANSCRIPT
Problemas NP-completosProblemas NP-completos
Profa. Sandra de AmoProfa. Sandra de AmoTeoria da ComputaçãoTeoria da Computação
Pós-graduação em Ciência da Pós-graduação em Ciência da ComputaçãoComputação
SUM-SET K-COLOR
Mochila
SAT
3-SAT
CLIQUE VC HAMCIRC
UHAMPATHVC = Vertex Cover
CV = Caixeiro Viajante
Diagrama das Reduções entre os Problemas
HAMPATH
UHAMCIRC
CV
Coloração de GrafosColoração de Grafos • Input:Input: Grafo G = (V,E) , não dirigido, inteiro K ≤ |V| Grafo G = (V,E) , não dirigido, inteiro K ≤ |V|
• Pergunta:Pergunta: G é k-colorável, isto é, existe uma função G é k-colorável, isto é, existe uma função f: V f: V {1,2,...,K} {1,2,...,K} tal que f(u) ≠ f(v) sempre que {u,v} tal que f(u) ≠ f(v) sempre que {u,v} ϵϵ E ? E ?
K = 2
K = 3
???
Problema da K-coloração de grafosProblema da K-coloração de grafos
• K ≥ 3 : NP-Completo Karp 1972 : 3SAT K-color
• K=2 : polinomial
• K=4 : todo grafo planar pode ser colorido com 4 cores.
– 1879: Alfred Kempe deu primeira prova– 1890: encontrado um erro na prova de Kempe – 1890: idéias de Kempe utilizadas para mostrar a 5-coloração
de grafos planares (Percy John Heawood)– 1976: Kenneth Appel/Wolfgang Haken – prova por
computador
HAMPATH é NP-completoHAMPATH é NP-completo
3-SAT
HAMPATH
1. HAMPATH é NP2. 3-SAT
≤
≤p HAMPATH
Input:Input: Grafo G = (V,E) , dirigido, s,t Grafo G = (V,E) , dirigido, s,t V V
Pergunta:Pergunta: Existe caminho hamiltoniano ligando os vértices s e Existe caminho hamiltoniano ligando os vértices s e t t ? ?
Caminho hamiltoniano: passa uma única vez por Caminho hamiltoniano: passa uma única vez por todostodos os os vértices do grafovértices do grafo
Redução polinomialRedução polinomial
3-SAT
HAMPATH
F = (a1 V b1 V c1) ^ (a2 V b2 V c2) ^ ... ^ (ak V bk V ck) Variáveis = {x1, x2, ..., xl}
Grafo G, vértices s, t
F é satisfatível
Existe caminhoHamiltoniano ligandos a t
. . .
Para cada variável x construímos uma estrutura de “diamante” com 4 + M vértices
Para cada cláusula C construímos um vértice extra
Construção do grafo G: estruturas Construção do grafo G: estruturas básicasbásicas
M vértices M = 3k + 1 k = nº de cláusulas
Juntando as estruturasJuntando as estruturas
.
.
.
x1
x2
xl
.
.
.
C1
C2
C3
Ck
Como ligar os dois tipos de Como ligar os dois tipos de estruturasestruturas
C1
C1 = x1 V x4 V ¬ x5 x1
. . . C1
Como ligar os dois tipos de Como ligar os dois tipos de estruturasestruturas
C1
C1 = x1 V x4 V ¬ x5 x5
. . . C1
ResumoResumo• Um diamante só está ligado a vértices Um diamante só está ligado a vértices
externos correspondendo a cláusulas onde sua externos correspondendo a cláusulas onde sua variável aparece.variável aparece.
• Os vértices internos Os vértices internos ““brancosbrancos”” e e ““azuisazuis”” dos dos diamantes não estão ligados a vértices diamantes não estão ligados a vértices externos.externos.
• Os vértices Os vértices ““verdesverdes”” e e ““vermelhosvermelhos”” dos dos diamantes estão ligados aos vértices externos diamantes estão ligados aos vértices externos (cláusulas) onde eles aparecem. (cláusulas) onde eles aparecem.
Se F é satisfatível então existe Se F é satisfatível então existe caminho hamiltoniano de s a tcaminho hamiltoniano de s a t
• Cada cláusula Ci contém ao menos um literal Li verdadeiro.Cada cláusula Ci contém ao menos um literal Li verdadeiro.• Escolhemos este literal verdadeiro para cada cláusula Ci.Escolhemos este literal verdadeiro para cada cláusula Ci.• Li = xj ou Lj = Li = xj ou Lj = ¬xj¬xj
O caminho hamiltonianoO caminho hamiltonianoligando os vértices s a t vai ligando os vértices s a t vai percorrer os diamantes fazendo percorrer os diamantes fazendo desvios para os vértices externos e voltandodesvios para os vértices externos e voltandopara o mesmo diamantepara o mesmo diamante
.
.
.
s
xj
x1
x2
C1
. . . C1 V(xj) = F
Os diamantes correspondentes aos literais escolhidos vão conter “desvios”para as cláusulas onde eles foram selecionados
O diamante é percorrido em zig-zag ou zag-zig, dependendo se a variávelé avaliada como verdadeira ou falsa.
• Todos os vértices dos diamantes são Todos os vértices dos diamantes são visitados uma única vez.visitados uma única vez.
• Todos os vértices externos são Todos os vértices externos são visitados: visitados: – O vértice Ci é visitado O vértice Ci é visitado uma única vezuma única vez
quando se percorre o diamante quando se percorre o diamante correspondente ao literal Li que foi correspondente ao literal Li que foi escolhido como verdadeiro para Ci. escolhido como verdadeiro para Ci.
Se existe caminho Se existe caminho Hamiltoniano ligando s a t Hamiltoniano ligando s a t então então F é satisfatívelF é satisfatível..• Caso 1:Caso 1: o caminho hamiltoniano percorre os diamantes o caminho hamiltoniano percorre os diamantes de de
forma normal, isto é: forma normal, isto é: – na ordem em que aparecem fazendo desvios para os vértices na ordem em que aparecem fazendo desvios para os vértices
externos e retornando para o mesmo diamante de onde saiu o desvio.externos e retornando para o mesmo diamante de onde saiu o desvio.
Avaliação de variáveis: Avaliação de variáveis: • V(xi) = True se o diamante é percorrido em zig-zagV(xi) = True se o diamante é percorrido em zig-zag• V(xi) = False se o diamante é percorrido em zag-zigV(xi) = False se o diamante é percorrido em zag-zig
É claro que V(F) = True:É claro que V(F) = True:Seja Ci cláusula de F. Seja Ci cláusula de F.
– Se Ci é percorrido em zig-zag é porque a variável xj de onde saiu o Se Ci é percorrido em zig-zag é porque a variável xj de onde saiu o desvio (em zig-zag) aparece como desvio (em zig-zag) aparece como positivapositiva em Ci. Logo V(Ci) = true. em Ci. Logo V(Ci) = true.
– Se Ci é percorrido em zag-zig é porque a variável xj de onde saiu o Se Ci é percorrido em zag-zig é porque a variável xj de onde saiu o desvio (em zag-zig) aparece como desvio (em zag-zig) aparece como negativanegativa em Ci. Logo V(Ci) = true.em Ci. Logo V(Ci) = true.
Caso 2:Caso 2: O caminho hamiltoniano percorre O caminho hamiltoniano percorre os diamantes os diamantes de forma anormalde forma anormal: :
C1
C1. . .
C1. . .
ISTO NÃO PODE OCORRER !
v
Como percorrer o vértice v ? - chegando de u ? Não ! - chegando de t ? Para onde ir depois disto ? Só poderia ir para u, mas este já foi percorrido !
u t
SUM-SET é NP-completoSUM-SET é NP-completo
3-SAT
SUM-SET
1. SUM-SET é NP2. 3-SAT
≤
≤p SUM-SET
Input:Input: S = {n1,...,np} S = {n1,...,np} N , t N , t N N
Pergunta:Pergunta: Existe subconjunto S Existe subconjunto S’’ S tal que S tal que ΣΣ i = t i = t ? ? i S’
Redução polinomialRedução polinomial
3-SAT
SUM-SET
F = (a1 V b1 V c1) ^ (a2 V b2 V c2) ^ ... ^ (ak V bk V ck) Variáveis = {x1, x2, ..., xl}
S = {n1,...,nk} S = {n1,...,nk} N , t N , t N N
F é satisfatível
Existe subconjunto Existe subconjunto SS’’ S tal que S tal que ΣΣ i = t i = t ??
i S’
3 3 . . . 3
1 0 . . . 01 0 . . . 0
1 . . . 0 1 . . . 0
11..
1 1 1 1 . . . 1
t
g1h1g2h2
gkhk
y1z1y2z2y3z3
ylzl
.
.
.
.
.
1 2 3 4 . . . l C1 C2 . . . Ck1 0 0 0 01 0 0 0 00 1 0 0 00 1 0 0 00 0 1 0 00 0 1 0 0
0 0 0 0 10 0 0 0 1
1 0 . . . 00 0 . . . 00 1 . . . 01 0 . . . 01 1 . . . 00 0 . . . 1
0 0 . . . 00 0 . . . 0
Um
par
y,z
par
a ca
da v
ariá
vel x
Um
par
g,h
par
a ca
da c
láus
ula
Cn1n2n3n4n5n6
n7
np
S
Se F é satisfatível então existe Se F é satisfatível então existe subconjunto Ssubconjunto S’’ de S com soma de S com soma = t= t 1.1. Se F é satisfatível, existe avaliação de variáveis V tal que V(F) = True. Se F é satisfatível, existe avaliação de variáveis V tal que V(F) = True.
2.2. Para cada variável xi: V(xi) = true ou V(xi) = false.Para cada variável xi: V(xi) = true ou V(xi) = false.
33. . Para cada i = 1,...,l :Para cada i = 1,...,l :– Se V(xi) = true, considere a linha yiSe V(xi) = true, considere a linha yi– Se V(xi) = false, considere a linha ziSe V(xi) = false, considere a linha zi
4.4. Como F é satisfatível, então V(Cj) = true para toda cláusula Cj, j = Como F é satisfatível, então V(Cj) = true para toda cláusula Cj, j = 1,...,k1,...,k
• Logo, para todo j = 1,...,k, existe um literal verdadeiro em Cj. Logo, para todo j = 1,...,k, existe um literal verdadeiro em Cj. • Logo, toda coluna j = 1,...,k, contém pelo menos uma célula em uma das linhas Logo, toda coluna j = 1,...,k, contém pelo menos uma célula em uma das linhas
escolhidas em (3). Esta célula contém um 1.escolhidas em (3). Esta célula contém um 1.• Como cada cláusula só tem 3 literais, então cada coluna j = 1,...,k tem no Como cada cláusula só tem 3 literais, então cada coluna j = 1,...,k tem no
máximo 3 células nas linhas escolhidas em (3).máximo 3 células nas linhas escolhidas em (3).
5.5. Para cada coluna j = 1,...,k completa-se com 0, 1 ou 2 linhas da parte Para cada coluna j = 1,...,k completa-se com 0, 1 ou 2 linhas da parte bottom-rightbottom-right da tabela, dependendo se tem 3, 2, ou 1 célula nas linhas da tabela, dependendo se tem 3, 2, ou 1 célula nas linhas escolhidas em (3).escolhidas em (3).
6.6. O conjunto S` = conjunto das linhas consideradas em (3) e em (5) O conjunto S` = conjunto das linhas consideradas em (3) e em (5)
Se existe subconjunto SSe existe subconjunto S’’ de S de S com soma = tcom soma = t então F é então F é satisfatívelsatisfatível1. Se a soma resulta em 3 para cada coluna de j = 1,...,k (da parte 1. Se a soma resulta em 3 para cada coluna de j = 1,...,k (da parte
top-right), top-right), então em então em cadacada coluna da parte top-right coluna da parte top-right, ao menos , ao menos uma linha de Suma linha de S’’ que colabora para esta soma está na parte top- que colabora para esta soma está na parte top-right da tabela.right da tabela.
2. Como a soma das colunas da parte esquerda é 1, conclui-se que S2. Como a soma das colunas da parte esquerda é 1, conclui-se que S’’ não contém duas linhas yi e zi.não contém duas linhas yi e zi.
3. Associamos o valor verdade True para cada literal com valor 1 3. Associamos o valor verdade True para cada literal com valor 1 aparecendo nas linhas de Saparecendo nas linhas de S’’ da parte de cima da tabela. da parte de cima da tabela.
4. A partir de (1) concluimos que cada cláusula possui um literal 4. A partir de (1) concluimos que cada cláusula possui um literal verdadeiro. Logo V(F) = True. verdadeiro. Logo V(F) = True.
5. Portanto F é satisfatível.5. Portanto F é satisfatível.
0 0 . . . 1
3 3 . . . 3
1 0 . . . 01 0 . . . 0
1 . . . 0 1 . . . 0
11..
1 1 1 1 . . . 1
t
g1h1g2h2
gkhk
y1z1y2z2y3z3
ylzl
.
.
.
.
.
1 2 3 4 . . . l C1 C2 . . . Ck1 0 0 0 01 0 0 0 00 1 0 0 00 1 0 0 00 0 1 0 00 0 1 0 0
0 0 0 0 10 0 0 0 1
1 0 . . . 00 0 . . . 00 1 . . . 01 0 . . . 01 1 . . . 0
0 0 . . . 0
Um
par
y,z
par
a ca
da v
ariá
vel x
Um
par
g,h
par
a ca
da c
láus
ula
Cn1n2n3n4n5n6
n7
np
S0 1 . . . 0
UHAMPATH UHAMPATH é NP-Completoé NP-Completo• Input: Input: Grafo não dirigido G, s, t vértices de GGrafo não dirigido G, s, t vértices de G• Pergunta:Pergunta: Existe caminho hamiltoniano em G, Existe caminho hamiltoniano em G,
começando em s e terminando em t começando em s e terminando em t ??
HAMPATH
UHAMPATH
1. UHAMPATH é NP2. HAMPATH
≤
≤p UHAMPATH
Redução polinomialRedução polinomial
HAMPATH
UHAMPATH
G= Grafo dirigido G, s,t vértices de G Existe caminho hamiltonianoem G ligando s a t
Existe caminho hamiltonianoem G´ ligando s´ a t´
G ’ = Grafo não- dirigido G, s´,t´ vértices de G
(G,s,t) (G,s,t) (G (G’’,s´,t´),s´,t´)
t
s u
v
GRAFO DIRIGIDO Gtin
sout
uout
GRAFO Não - DIRIGIDO G´
umid
uin
vin
vmid
vout
• Suponhamos que existe caminho Suponhamos que existe caminho hamiltoniano em G ligando s a thamiltoniano em G ligando s a t
S t
uv
S outt in
uinumid
uout
voutvmid
vin
Souttin
umid
uout
voutvmid
vin
uinPor que não seria um Vout ?
S t
uv