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

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

Embed Size (px)

Citation preview

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

Problemas NP-completosProblemas NP-completos

Profa. Sandra de AmoProfa. Sandra de AmoAnálise de AlgoritmosAnálise de Algoritmos

Pós-graduação em Ciência da Pós-graduação em Ciência da ComputaçãoComputação

Page 2: Problemas NP-completos Profa. Sandra de Amo Análise de Algoritmos Pós-graduação em Ciência da Computaçã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

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

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

???

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

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

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

HAMPATH é NP-completoHAMPATH é NP-completo

3-SAT

HAMPATH

1. HAMPATH é NP

2. 3-SAT

≤p HAMPATH

Input:Input: Grafo G = (V,E) , não dirigido, s,t Grafo G = (V,E) , não 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

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

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

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

. . .

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

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

Juntando as estruturasJuntando as estruturas

.

.

.

x1

x2

xl

.

.

.

C1

C2

C3

Ck

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

Como ligar os dois tipos de Como ligar os dois tipos de

estruturasestruturas

C1

C1 = x1 V x4 V ¬ x5

x1

. . . C1

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

Como ligar os dois tipos de Como ligar os dois tipos de

estruturasestruturas

C1

C1 = x1 V x4 V ¬ x5 x5

. . . C1

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

ResumoResumo• Um diamante só está ligado a vértices Um diamante só está ligado a vértices

externos correspondendo a cláusulas onde externos correspondendo a cláusulas onde sua variável aparece.sua 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 diamantes estão ligados aos vértices externos (cláusulas) onde eles aparecem. externos (cláusulas) onde eles aparecem.

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

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 hamiltoniano

ligando 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 voltando

para o mesmo diamantepara o mesmo diamante

.

.

.

s

xj

x1

x2

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

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.

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

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

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

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 externos e retornando para o mesmo diamante de onde saiu o desvio.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) = em Ci. Logo V(Ci) = true.true.

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

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

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

SUM-SET é NP-completoSUM-SET é NP-completo

3-SAT

SUM-SET

1. SUM-SET é NP

2. 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’

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

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’

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

3 3 . . . 3

1 0 . . . 0

1 0 . . . 0

1 . . . 0

1 . . . 0

11..

1 1 1 1 . . . 1

t

g1h1g2h2

gkhk

y1

z1

y2

z2y3

z3

ylzl

.

.

.

.

.

1 2 3 4 . . . l C1 C2 . . . Ck

1 0 0 0 0

1 0 0 0 00 1 0 0 00 1 0 0 0

0 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

para

cad

a v

ari

ável x

Um

par

g,h

para

cad

a c

láu

su

la C

n1

n2

n3n4

n5n6

n7

np

S

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

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) = Se F é satisfatível, existe avaliação de variáveis V tal que V(F) =

True. 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 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.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 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 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 parte bottom-right da tabela, dependendo se tem 3, 2, ou 1 célula nas linhas escolhidas em (3).nas linhas 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)

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

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.

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

0 0 . . . 1

3 3 . . . 3

1 0 . . . 0

1 0 . . . 0

1 . . . 0

1 . . . 0

11..

1 1 1 1 . . . 1

t

g1h1g2h2

gkhk

y1z1

y2

z2y3

z3

ylzl

.

.

.

.

.

1 2 3 4 . . . l C1 C2 . . . Ck

1 0 0 0 0

1 0 0 0 0

0 1 0 0 00 1 0 0 0

0 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

para

cad

a v

ari

ável x

Um

par

g,h

para

cad

a c

láu

su

la C

n1

n2

n3n4

n5n6

n7

np

S

0 1 . . . 0

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

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 é NP

2. HAMPATH

≤p UHAMPATH

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

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

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

(G,s,t) (G,s,t) (G (G’’,s´,t´),s´,t´)

t

su

v

GRAFO DIRIGIDO Gtin

sout

uout

GRAFO Não - DIRIGIDO G´

umid

uin

vin

vmid

vout

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

• Suponhamos que existe caminho Suponhamos que existe caminho hamiltoniano em G ligando s a thamiltoniano em G ligando s a t

S t

u

v

S outt in

uinumid

uout

voutvmid

vin

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

Souttin

umid

uout

voutvmid

vin

uin

Por que não seria um Vout ?

S t

u

v