problemas np-completos

Post on 16-Mar-2016

100 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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 Presentation

TRANSCRIPT

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’

Sandra de Amo

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

top related