280 likes | 491 Views
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.
E N D
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 CV
Coloração de Grafos • Input: Grafo G = (V,E) , não dirigido, inteiro K ≤ |V| • Pergunta: G é k-colorável, isto é, existe uma função f: V {1,2,...,K} tal que f(u) ≠ f(v) sempre que {u,v} ϵ E ? K = 2 K = 3 ???
Problema 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
≤ p HAMPATH é NP-completo Input: Grafo G = (V,E) , dirigido, s,t V Pergunta: Existe caminho hamiltoniano ligando os vértices s e t ? Caminho hamiltoniano: passa uma única vez por todos os vértices do grafo 3-SAT ≤ • HAMPATH é NP 2. 3-SAT HAMPATH HAMPATH
Redução polinomial Variáveis = {x1, x2, ..., xl} F é satisfatível 3-SAT F = (a1 V b1 V c1) ^ (a2 V b2 V c2) ^ ... ^ (ak V bk V ck) HAMPATH Grafo G, vértices s, t Existe caminho Hamiltoniano ligando s a t
Construção do grafo G: estruturas básicas 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 . . . M vértices M = 3k + 1 k = nº de cláusulas
Juntando as estruturas C1 x1 C2 x2 C3 . . . . . . Ck xl
Como ligar os dois tipos de estruturas x1 C1 = x1 V x4 V ¬ x5 C1 . . . C1
Como ligar os dois tipos de estruturas C1 = x1 V x4 V ¬ x5 x5 C1 . . . C1
Resumo • Um diamante só está ligado a vértices externos correspondendo a cláusulas onde sua variável aparece. • Os vértices internos “brancos” e “azuis” dos diamantes não estão ligados a vértices externos. • Os vértices “verdes” e “vermelhos” dos diamantes estão ligados aos vértices externos (cláusulas) onde eles aparecem.
Se F é satisfatível então existe caminho hamiltoniano de s a t • Cada cláusula Ci contém ao menos um literal Li verdadeiro. • Escolhemos este literal verdadeiro para cada cláusula Ci. • Li = xj ou Lj = ¬xj O caminho hamiltoniano ligando os vértices s a t vai percorrer os diamantes fazendo desvios para os vértices externos e voltando para o mesmo diamante s x1 . . . x2 xj
Os diamantes correspondentes aos literais escolhidos vão conter “desvios” para as cláusulas onde eles foram selecionados C1 V(xj) = F . . . C1 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 visitados uma única vez. • Todos os vértices externos são visitados: • O vértice Ci é visitado uma única vez quando se percorre o diamante correspondente ao literal Li que foi escolhido como verdadeiro para Ci.
Se existe caminho Hamiltoniano ligando s a t então F é satisfatível. • Caso 1: o caminho hamiltoniano percorre os diamantes de forma normal, isto é: • na ordem em que aparecem fazendo desvios para os vértices externos e retornando para o mesmo diamante de onde saiu o desvio. Avaliação de variáveis: • V(xi) = True se o diamante é percorrido em zig-zag • V(xi) = False se o diamante é percorrido em zag-zig É claro que V(F) = True: Seja Ci cláusula de F. • Se Ci é percorrido em zig-zag é porque a variável xj de onde saiu o desvio (em zig-zag) aparece como positiva em Ci. Logo V(Ci) = true. • Se Ci é percorrido em zag-zig é porque a variável xj de onde saiu o desvio (em zag-zig) aparece como negativaem Ci. Logo V(Ci) = true.
. . . . . . C1 C1 Caso 2: O caminho hamiltoniano percorre os diamantes de forma anormal: v u t 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 ! C1 ISTO NÃO PODE OCORRER !
≤ p SUM-SET é NP-completo Input: S = {n1,...,np} N , t N Pergunta: Existe subconjunto S’ S tal que Σ i = t ? i S’ 3-SAT ≤ • SUM-SET é NP 2. 3-SAT SUM-SET SUM-SET
Redução polinomial Variáveis = {x1, x2, ..., xl} F é satisfatível 3-SAT F = (a1 V b1 V c1) ^ (a2 V b2 V c2) ^ ... ^ (ak V bk V ck) SUM-SET S = {n1,...,nk} N , t N Existe subconjunto S’ S tal que Σ i = t ? i S’
1 2 3 4 . . . l C1 C2 . . . Ck n1 1 0 . . . 0 y1 1 0 0 0 0 0 0 . . . 0 n2 z1 1 0 0 0 0 n3 0 1 0 0 0 0 1 . . . 0 y2 n4 1 0 . . . 0 0 1 0 0 0 z2 Um par y,z para cada variável x n5 0 0 1 0 0 y3 1 1 . . . 0 n6 0 0 1 0 0 0 0 . . . 1 z3 . . . S yl 0 0 . . . 0 n7 0 0 0 0 1 zl 0 0 . . . 0 0 0 0 0 1 g1 1 0 . . . 0 h1 1 0 . . . 0 g2 1 . . . 0 Um par g,h para cada cláusula C h2 . . 1 . . . 0 .. gk 1 hk 1 np t 1 1 1 1 . . . 1 3 3 . . . 3
Se F é satisfatível então existe subconjunto S’ de S com soma = t • Se F é satisfatível, existe avaliação de variáveis V tal que V(F) = True. 2.Para cada variável xi: V(xi) = true ou V(xi) = false. 3. Para cada i = 1,...,l : • Se V(xi) = true, considere a linha yi • Se V(xi) = false, considere a linha zi 4.Como F é satisfatível, então V(Cj) = true para toda cláusula Cj, j = 1,...,k • 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 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 máximo 3 células nas linhas escolhidas em (3). 5.Para cada coluna j = 1,...,k completa-se com 0, 1 ou 2 linhas da parte bottom-right da tabela, dependendo se tem 3, 2, ou 1 célula nas linhas escolhidas em (3). 6. O conjunto S` = conjunto das linhas consideradas em (3) e em (5)
Se existe subconjunto S’ de S com soma = t então F é satisfatível 1. Se a soma resulta em 3 para cada coluna de j = 1,...,k (da parte top-right), então em cada coluna da parte top-right, ao menos uma linha de S’ que colabora para esta soma está na parte top-right da tabela. 2. Como a soma das colunas da parte esquerda é 1, conclui-se que S’ não contém duas linhas yi e zi. 3. Associamos o valor verdade True para cada literal com valor 1 aparecendo nas linhas de S’ da parte de cima da tabela. 4. A partir de (1) concluimos que cada cláusula possui um literal verdadeiro. Logo V(F) = True. 5. Portanto F é satisfatível.
1 2 3 4 . . . l C1 C2 . . . Ck n1 1 0 . . . 0 y1 1 0 0 0 0 z1 0 0 . . . 0 n2 1 0 0 0 0 n3 0 1 . . . 0 0 1 0 0 0 y2 n4 1 0 . . . 0 0 1 0 0 0 z2 Um par y,z para cada variável x n5 1 1 . . . 0 0 0 1 0 0 y3 n6 0 0 1 0 0 0 0 . . . 1 z3 . . . S yl 0 1 . . . 0 n7 0 0 0 0 1 zl 0 0 . . . 0 0 0 0 0 1 g1 1 0 . . . 0 h1 1 0 . . . 0 g2 1 . . . 0 Um par g,h para cada cláusula C h2 . . 1 . . . 0 .. gk 1 hk 1 np t 1 1 1 1 . . . 1 3 3 . . . 3
≤ p UHAMPATH é NP-Completo • Input: Grafo não dirigido G, s, t vértices de G • Pergunta: Existe caminho hamiltoniano em G, começando em s e terminando em t ? HAMPATH ≤ • UHAMPATH é NP 2. HAMPATH UHAMPATH UHAMPATH
Redução polinomial G= Grafo dirigido G, s,t vértices de G Existe caminho hamiltoniano em G ligando s a t HAMPATH UHAMPATH G’ = Grafo não- dirigido G, s´,t´ vértices de G Existe caminho hamiltoniano em G´ ligando s´ a t´
umid sout uin (G,s,t) (G’,s´,t´) uout vin vout s vmid u tin GRAFO Não - DIRIGIDO G´ t v GRAFO DIRIGIDO G
u • Suponhamos que existe caminho hamiltoniano em G ligando s a t v S t umid uin uout S out t in vin vout vmid
umid Por que não seria um Vout ? uin uout Sout tin vin vout vmid u v S t