A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Problemas NP-completos

Apresentações semelhantes


Apresentação em tema: "Problemas NP-completos"— Transcrição da apresentação:

1 Problemas NP-completos
Profa. Sandra de Amo Análise de Algoritmos Pós-graduação em Ciência da Computação

2 Diagrama das Reduções entre os Problemas
SAT 3-SAT SUM-SET K-COLOR CLIQUE VC HAMCIRC HAMPATH Mochila UHAMCIRC UHAMPATH VC = Vertex Cover CV = Caixeiro Viajante CV

3 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 ???

4 Problema da K-coloração de grafos
K ≥ 3 : NP-Completo Karp : 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

5 HAMPATH é NP-completo HAMPATH é NP 2. 3-SAT ≤ p HAMPATH
Input: Grafo G = (V,E) , não 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 p HAMPATH HAMPATH

6 Redução polinomial Variáveis = {x1, x2, ..., xl} 3-SAT
F é satisfatível 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

7 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

8 Juntando as estruturas
C1 x1 C2 x2 C3 . . Ck xl

9 Como ligar os dois tipos de estruturas
x1 C1 = x1 V x4 V ¬ x5 C1 . . . C1

10 Como ligar os dois tipos de estruturas
C1 = x1 V x4 V ¬ x5 x5 C1 . . . C1

11 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.

12 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

13 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.

14 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.

15 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 negativa em Ci. Logo V(Ci) = true.

16 Caso 2: O caminho hamiltoniano percorre os diamantes de forma anormal:
. . . u v 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 ! C1 . . .

17 SUM-SET é NP-completo SUM-SET é NP 2. 3-SAT ≤ p SUM-SET
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 p SUM-SET SUM-SET

18 Redução polinomial Variáveis = {x1, x2, ..., xl} 3-SAT
F é satisfatível 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’

19 l C1 C Ck n1 y1 n2 z1 n3 y2 n4 z2 Um par y,z para cada variável x y3 n5 n6 z3 . S yl n7 zl g1 h1 g2 Um par g,h para cada cláusula C h2 . .. gk 1 hk 1 np t

20 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)

21 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.

22 l C1 C Ck n1 y1 z1 n2 n3 y2 n4 z2 Um par y,z para cada variável x y3 n5 n6 z3 . S yl n7 zl g1 h1 g2 Um par g,h para cada cláusula C h2 . .. gk 1 hk 1 np t

23 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 p 2. HAMPATH UHAMPATH UHAMPATH

24 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´

25 (G,s,t)  (G’,s´,t´) s sout t tin umid u uin uout vin vout v vmid
GRAFO DIRIGIDO G sout uin uout vin vout vmid tin GRAFO Não - DIRIGIDO G´

26 Suponhamos que existe caminho hamiltoniano em G ligando s a t
v S t umid uin uout S out t in vin vout vmid

27 umid uin uout tin vin vout vmid Por que não seria um Vout ? Sout u v S


Carregar ppt "Problemas NP-completos"

Apresentações semelhantes


Anúncios Google