Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo2/A38npc.pdf · 5/5/2014 Ruy Luiz...

64
5/5/2014 Ruy Luiz Milidiú 1 Projeto e Análise de Algoritmos Prof. Ruy Luiz Milidiú

Transcript of Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo2/A38npc.pdf · 5/5/2014 Ruy Luiz...

5/5/2014 Ruy Luiz Milidiú 1

Projeto e Análise de

Algoritmos

Prof. Ruy Luiz Milidiú

5/5/2014 Ruy Luiz Milidiú 2

A Classe NPC

5/5/2014 Ruy Luiz Milidiú 3

Resumo

Objetivo

Apresentar Classe de Problemas NPC

Sumário

P, NP, NP-difícil, e NP-completo

De 3-SAT para clique

De clique para cobertura de vértices

clique e cobertura de vértices estão em NPC

5/5/2014 Ruy Luiz Milidiú 4

NP-Difícil

NP

SAT

3SAT

3DM 3C MAXC

CLIQUE 3XC

Teorema de

Cook

PLI

3CP

IND MPS ST XC 3SC

SC VC

5/5/2014 Ruy Luiz Milidiú 5

Problemas de decisão

P resolvidos em tempo polinomial

NP verificáveis em tempo polinomial

NP-Difícil NP-Hard qualquer problema em NP pode ser reduzido a ele

NPC NP-Completos é NP verificador

é NP-Difícil redutor

5/5/2014 Ruy Luiz Milidiú 6

NPC

SAT NPC

SAT NP

Teorema de Cook

3-SAT NPC

3-SAT NP

SAT 3-SAT

PLI NPC

PLI NP

SAT PLI

NP

SAT

3SAT PLI

5/5/2014 Ruy Luiz Milidiú 7

CLIQUE

Grupo Exclusivo de G=(V,E) H V

u,vH então {u,v}E.

H = {u,v,x,y}

grupo exclusivo de G

tamanho 4

Problema de decisão

grupo exclusivo de tamanho k em G ?

5/5/2014 Ruy Luiz Milidiú 8

CLIQUE NP

//Verificador

for all vV do na_clique[v] := 0

for all vH do na_clique[v] := 1

for all vV do

if (na_clique[v] = 1) then

total_na_clique := 0

for all wAdjacent[v] do

total_na_clique := total_na_clique + na_clique[w]

if (total_na_clique k-1) then return(NÃO)

return(SIM)

5/5/2014 Ruy Luiz Milidiú 9

3-SAT CLIQUE

C = (x1x2x3)(x1x2x3)(x1x2x3) x1 x1 x2 x3 x2 x3 x2 x3 x1

5/5/2014 Ruy Luiz Milidiú 10

3-SAT CLIQUE

C = (x1x2x3)(x1x2x3)(x1x2x3)

x1

x1

x2

x3

x2

x3

x2 x3

x1

x x

PROIBIDO

5/5/2014 Ruy Luiz Milidiú 11

3-SAT CLIQUE

C = (x1x2x3)(x1x2x3)(x1x2x3)

5/5/2014 Ruy Luiz Milidiú 12

3-SAT CLIQUE

//Redutor

input C = C1 C2 … Ck

for r=1,...,k do

criar três vértices em V, rotulados pelas variáveis de Cr

for all pairs u,vV de triplas diferentes

if (rótulo(u) rótulo(v)) then

criar a aresta {u,v} em E

5/5/2014 Ruy Luiz Milidiú 13

3-SAT CLIQUE

C é capaz de satisfação

existe um grupo exclusivo de tamanho k em G

5/5/2014 Ruy Luiz Milidiú 14

3-SAT CLIQUE

C é capaz de satisfação

“” cada Cr possui ao menos um literal com atribuição 1 escolha esse literal e seu vértice correspondente em V

H são os k vértices escolhidos

todos os vértices de H estão ligados entre si pois a atribuição é consistente

H é CLIQUE de tamanho k

5/5/2014 Ruy Luiz Milidiú 15

3-SAT CLIQUE

existe um grupo exclusivo de tamanho k em G

“”

Atribua 1 ao literal associado a cada vértice de H

Nenhuma aresta em E conecta vértices da mesma tripla ou complementares

H possui exatamente um vértice por tripla (tamanho k)

H não contém pares {x,x} (consistência)

Cada cláusula Cr é satisfeita

C é satisfeita

5/5/2014 Ruy Luiz Milidiú 16

CLIQUE NPC

NP

SAT

3SAT PLI

CLIQUE

5/5/2014 Ruy Luiz Milidiú 17

VERTEX-COVER

Cobertura de Vértices de G=(V,E)

V´ V tq se {u,v}E, então uV´ou vV´

V´= {z,w} cobertura de vértices de G tamanho 2

Problema de decisão

uma cobertura de vértices de tamanho k em G ?

5/5/2014 Ruy Luiz Milidiú 18

VERTEX-COVER NP

//Verificador

for all vV do na_cobertura[v] := 0

for all vV’ do na_cobertura [v] := 1

for all vV do

if (na_cobertura[v] = 0) then

for all wAdjacent[v] do

if (na_cobertura[w] = 0) then return(NÃO)

return(SIM)

5/5/2014 Ruy Luiz Milidiú 19

CLIQUE VERTEX-COVER

Redução

{v,w}E {v,w}E’

G´=(V,E´) G=(V,E)

5/5/2014 Ruy Luiz Milidiú 20

CLIQUE VERTEX-COVER

X é CLIQUE de G

V-X é cobertura de vértices de G’

5/5/2014 Ruy Luiz Milidiú 21

CLIQUE VERTEX-COVER

X é CLIQUE de G

“”

{u,v}E’

uX ou vX , pois se u,vX então {u,v}E

u(V-X) ou vV-X

{u,v} é coberta por V-X em G’

V-X é cobertura de vértices de G’

Obs.: |V-X| = n - k

5/5/2014 Ruy Luiz Milidiú 22

CLIQUE VERTEX-COVER

V-X é cobertura de vértices de G’

“”

u,vX

(p/absurdo) {u,v}E

{u,v}E’

uV-X ou vV-X

X(V-X)

{u,v}E

X é clique de G

5/5/2014 Ruy Luiz Milidiú 23

CLIQUE NPC

NP

SAT

3SAT PLI

CLIQUE

VC

5/5/2014 Ruy Luiz Milidiú 24

3-COLOR

3-COLOR de G=(V,E) f: V {1,2,3}

{u,v}E então f(u)f(v)

Problema de decisão

uma 3-COLOR de G ?

5/5/2014 Ruy Luiz Milidiú 25

3-COLOR NP

//Verificador

for all uV do

if f(u){1,2,3} then return(NÃO)

for all {u,v}E do

if (f(u) = f(v)) then return(NÃO)

return(SIM)

5/5/2014 Ruy Luiz Milidiú 26

3-SAT 3-COLOR

(X X) = T (X Y) = T

X X

T F

G

Y

T

X

5/5/2014 Ruy Luiz Milidiú 27

3-SAT 3-COLOR

C = (x1x2x3)(x1x2x3)(x1x2x3)

X2 X2 X3 X3 X1 X1

T F

G

5/5/2014 Ruy Luiz Milidiú 28

3-SAT 3-COLOR

C = (x1x2x3)(x1x2x3)(x1x2x3)

X2 X2 X3 X3 X1 X1

T F

G

5/5/2014 Ruy Luiz Milidiú 29

3-SAT 3-COLOR

C = (x1x2x3)(x1x2x3)(x1x2x3)

X2 X3 X1

T

5/5/2014 Ruy Luiz Milidiú 30

3-SAT 3-COLOR

C = (x1x2x3)(x1x2x3)(x1x2x3)

X2 X3 X1

T T

5/5/2014 Ruy Luiz Milidiú 31

3-SAT 3-COLOR

C = (x1x2x3)(x1x2x3)(x1x2x3)

X2 X3 X1

T T

5/5/2014 Ruy Luiz Milidiú 32

3-SAT 3-COLOR

C é capaz de satisfação

existe f que é uma 3-COLOR de G

5/5/2014 Ruy Luiz Milidiú 33

3-SAT 3-COLOR

C é capaz de satisfação

“”

atribuição de cores

se u=T então f(u) = VERDE

se u=F então f(u) = VERMELHO

cada tripla tem pelo menos um nó VERMELHO

Podemos atribuir cores para os nós auxiliares

f é uma 3-COLOR de G

5/5/2014 Ruy Luiz Milidiú 34

3-SAT 3-COLOR

C = (x1x2x3)(x1x2x3)(x1x2x3)

X2 X3 X1

T T

5/5/2014 Ruy Luiz Milidiú 35

3-SAT 3-COLOR

C = (x1x2x3)(x1x2x3)(x1x2x3)

X2 X3 X1

T T

5/5/2014 Ruy Luiz Milidiú 36

3-SAT 3-COLOR

C = (x1x2x3)(x1x2x3)(x1x2x3)

X2 X3 X1

T T

5/5/2014 Ruy Luiz Milidiú 37

3-SAT 3-COLOR

C = (x1x2x3)(x1x2x3)(x1x2x3)

X2 X3 X1

T T

5/5/2014 Ruy Luiz Milidiú 38

3-SAT 3-COLOR

C = (x1x2x3)(x1x2x3)(x1x2x3)

X2 X3 X1

T T

5/5/2014 Ruy Luiz Milidiú 39

3-SAT 3-COLOR

C = (x1x2x3)(x1x2x3)(x1x2x3)

X2 X3 X1

T T

5/5/2014 Ruy Luiz Milidiú 40

3-SAT 3-COLOR

C = (x1x2x3)(x1x2x3)(x1x2x3)

X2 X3 X1

T T

5/5/2014 Ruy Luiz Milidiú 41

3-SAT 3-COLOR

C = (x1x2x3)(x1x2x3)(x1x2x3)

X2 X3 X1

T T

5/5/2014 Ruy Luiz Milidiú 42

3-SAT 3-COLOR

C = (x1x2x3)(x1x2x3)(x1x2x3)

X2 X3 X1

T T

5/5/2014 Ruy Luiz Milidiú 43

3-SAT 3-COLOR

C = (x1x2x3)(x1x2x3)(x1x2x3)

X2 X3 X1

T T

5/5/2014 Ruy Luiz Milidiú 44

3-SAT 3-COLOR

C = (x1x2x3)(x1x2x3)(x1x2x3)

X2 X3 X1

T T

5/5/2014 Ruy Luiz Milidiú 45

3-SAT 3-COLOR

C = (x1x2x3)(x1x2x3)(x1x2x3)

X2 X3 X1

T T

5/5/2014 Ruy Luiz Milidiú 46

3-SAT 3-COLOR

existe f que é uma 3-COLOR de G

“”

atribuição de valores verdade

se f(u) = VERDE então u=T

se f(u) = VERMELHO então u=F

f(u) = VERDE f(u) = VERMELHO

f tem pelo menos um nó VERDE por tripla

C é capaz de satisfação

5/5/2014 Ruy Luiz Milidiú 47

3-SAT 3-COLOR

C = (x1x2x3)(x1x2x3)(x1x2x3)

X2 X3 X1

T T

5/5/2014 Ruy Luiz Milidiú 48

3-SAT 3-COLOR

C = (x1x2x3)(x1x2x3)(x1x2x3)

X2 X3 X1

T T

5/5/2014 Ruy Luiz Milidiú 49

3-SAT 3-COLOR

C = (x1x2x3)(x1x2x3)(x1x2x3)

X2 X3 X1

T T

Absurd !

5/5/2014 Ruy Luiz Milidiú 50

3-COLOR NPC

NP

SAT

3SAT PLI

CLIQUE 3-COLOR

5/5/2014 Ruy Luiz Milidiú 51

3-COLOR PLANAR

3-COLOR de G=(V,E)

f: V {1,2,3}

{u,v}E então f(u)f(v)

G é planar

Problema de decisão

uma 3-COLOR de G ?

5/5/2014 Ruy Luiz Milidiú 52

3-COLOR PLANAR NP

//Verificador

if (not verificador_de_planaridade (G)) return(NÃO)

for all {u,v}E do

if (f(u) = f(v)) then return(NÃO)

return(SIM)

5/5/2014 Ruy Luiz Milidiú 53

3-COLOR 3-COLOR PLANAR

cantos opostos tem mesma cor

5/5/2014 Ruy Luiz Milidiú 54

3-COLOR 3-COLOR PLANAR

?

?

W é 3-COLOR

então

cantos opostos tem mesma cor

5/5/2014 Ruy Luiz Milidiú 55

3-COLOR 3-COLOR PLANAR

u v

G

5/5/2014 Ruy Luiz Milidiú 56

3-COLOR 3-COLOR PLANAR

u v

G’

5/5/2014 Ruy Luiz Milidiú 57

3-COLOR 3-COLOR PLANAR

v u

G’

5/5/2014 Ruy Luiz Milidiú 58

3-COLOR 3-COLOR PLANAR

G é 3-COLOR

G’ é 3-COLOR

5/5/2014 Ruy Luiz Milidiú 59

3-COLOR 3-COLOR PLANAR

G é 3-COLOR G’ é 3-COLOR

u v

u

u

5/5/2014 Ruy Luiz Milidiú 60

3-COLOR 3-COLOR PLANAR

G é 3-COLOR G’ é 3-COLOR

v

u

u

u

u

u

5/5/2014 Ruy Luiz Milidiú 61

3-COLOR 3-COLOR PLANAR

G’ é 3-COLOR G é 3-COLOR

v

u

u

u

u

u

5/5/2014 Ruy Luiz Milidiú 62

3-COLOR 3-COLOR PLANAR

G’ é 3-COLOR G é 3-COLOR

v

u

u

u

u

u

5/5/2014 Ruy Luiz Milidiú 63

3-COLOR 3-COLOR PLANAR

G’ é 3-COLOR G é 3-COLOR

u v

u

u

u

u

5/5/2014 Ruy Luiz Milidiú 64

3-COLOR NPC

NP

SAT

3SAT PLI

CLIQUE 3-COLOR

3-COLOR P