Projeto e Análise de Algoritmos Prof. Ruy Luiz Milidiú 5/5/2014 Ruy Luiz Milidiú 1
A Classe NPC 5/5/2014 Ruy Luiz Milidiú 2
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ú 3
NP-Difícil MAXC NP SAT 3SAT 3DM Teorema de Cook PLI 3C CLIQUE 3XC 3CP IND MPS ST XC 3SC VC SC 5/5/2014 Ruy Luiz Milidiú 4
Problemas de decisão P NP resolvidos em tempo polinomial verificáveis em tempo polinomial NP-Difícil NP-Hard qualquer problema em NP pode ser reduzido a ele NPC é NP é NP-Difícil NP-Completos verificador redutor 5/5/2014 Ruy Luiz Milidiú 5
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ú 6
CLIQUE Grupo Exclusivo de G=(V,E) H V u,v H então {u,v} E. Problema de decisão H = {u,v,x,y} grupo exclusivo de G tamanho 4 grupo exclusivo de tamanho k em G? 5/5/2014 Ruy Luiz Milidiú 7
CLIQUE NP //Verificador for all v V do na_clique[v] := 0 for all v H do na_clique[v] := 1 for all v V do if (na_clique[v] = 1) then total_na_clique := 0 for all w Adjacent[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ú 8
3-SAT CLIQUE C = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) x1 x2 x3 x1 x2 x3 x1 x2 x3 5/5/2014 Ruy Luiz Milidiú 9
3-SAT CLIQUE C = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) x1 x2 x3 x1 x1 x x PROIBIDO x2 x3 x2 x3 5/5/2014 Ruy Luiz Milidiú 10
3-SAT CLIQUE C = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) 5/5/2014 Ruy Luiz Milidiú 11
3-SAT CLIQUE //Redutor input C = C 1 C 2 C k for r=1,...,k do criar três vértices em V, rotulados pelas variáveis de C r for all pairs u,v V de triplas diferentes if (rótulo(u) rótulo(v)) then criar a aresta {u,v} em E 5/5/2014 Ruy Luiz Milidiú 12
3-SAT CLIQUE C é capaz de satisfação existe um grupo exclusivo de tamanho k em G 5/5/2014 Ruy Luiz Milidiú 13
3-SAT CLIQUE C é capaz de satisfação cada C r 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ú 14
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 C r é satisfeita C é satisfeita 5/5/2014 Ruy Luiz Milidiú 15
CLIQUE NPC NP SAT 3SAT PLI CLIQUE 5/5/2014 Ruy Luiz Milidiú 16
VERTEX-COVER Cobertura de Vértices de G=(V,E) V V tq se {u,v} E, então u V ou v V 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ú 17
VERTEX-COVER NP //Verificador for all v V do na_cobertura[v] := 0 for all v V do na_cobertura [v] := 1 for all v V do if (na_cobertura[v] = 0) then for all w Adjacent[v] do if (na_cobertura[w] = 0) then return(não) return(sim) 5/5/2014 Ruy Luiz Milidiú 18
CLIQUE VERTEX-COVER Redução {v,w} E {v,w} E G=(V,E) G =(V,E ) 5/5/2014 Ruy Luiz Milidiú 19
CLIQUE VERTEX-COVER X é CLIQUE de G V-X é cobertura de vértices de G 5/5/2014 Ruy Luiz Milidiú 20
CLIQUE VERTEX-COVER X é CLIQUE de G {u,v} E u X ou v X, pois se u,v X então {u,v} E u (V-X) ou v V-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ú 21
CLIQUE VERTEX-COVER V-X é cobertura de vértices de G u,v X (p/absurdo) {u,v} E {u,v} E u V-X ou v V-X X (V-X) {u,v} E X é clique de G 5/5/2014 Ruy Luiz Milidiú 22
CLIQUE NPC NP SAT 3SAT PLI CLIQUE VC 5/5/2014 Ruy Luiz Milidiú 23
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ú 24
3-COLOR NP //Verificador for all u V 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ú 25
3-SAT 3-COLOR ( X X) = T (X Y) = T X X X Y G T F T 5/5/2014 Ruy Luiz Milidiú 26
3-SAT 3-COLOR C = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) X 1 X 1 X 2 X 2 X 3 X 3 G T F 5/5/2014 Ruy Luiz Milidiú 27
3-SAT 3-COLOR C = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) X 1 X 1 X 2 X 2 X 3 X 3 G T F 5/5/2014 Ruy Luiz Milidiú 28
3-SAT 3-COLOR C = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) X 1 X 2 X 3 T 5/5/2014 Ruy Luiz Milidiú 29
3-SAT 3-COLOR C = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) X 1 X 2 X 3 T 5/5/2014 Ruy Luiz Milidiú 30
3-SAT 3-COLOR C = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) X 1 X 2 X 3 T 5/5/2014 Ruy Luiz Milidiú 31
3-SAT 3-COLOR C é capaz de satisfação existe f que é uma 3-COLOR de G 5/5/2014 Ruy Luiz Milidiú 32
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ú 33
3-SAT 3-COLOR C = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) X 1 X 2 X 3 T 5/5/2014 Ruy Luiz Milidiú 34
3-SAT 3-COLOR C = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) X 1 X 2 X 3 T 5/5/2014 Ruy Luiz Milidiú 35
3-SAT 3-COLOR C = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) X 1 X 2 X 3 T 5/5/2014 Ruy Luiz Milidiú 36
3-SAT 3-COLOR C = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) X 1 X 2 X 3 T 5/5/2014 Ruy Luiz Milidiú 37
3-SAT 3-COLOR C = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) X 1 X 2 X 3 T 5/5/2014 Ruy Luiz Milidiú 38
3-SAT 3-COLOR C = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) X 1 X 2 X 3 T 5/5/2014 Ruy Luiz Milidiú 39
3-SAT 3-COLOR C = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) X 1 X 2 X 3 T 5/5/2014 Ruy Luiz Milidiú 40
3-SAT 3-COLOR C = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) X 1 X 2 X 3 T 5/5/2014 Ruy Luiz Milidiú 41
3-SAT 3-COLOR C = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) X 1 X 2 X 3 T 5/5/2014 Ruy Luiz Milidiú 42
3-SAT 3-COLOR C = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) X 1 X 2 X 3 T 5/5/2014 Ruy Luiz Milidiú 43
3-SAT 3-COLOR C = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) X 1 X 2 X 3 T 5/5/2014 Ruy Luiz Milidiú 44
3-SAT 3-COLOR C = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) X 1 X 2 X 3 T 5/5/2014 Ruy Luiz Milidiú 45
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ú 46
3-SAT 3-COLOR C = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) X 1 X 2 X 3 T 5/5/2014 Ruy Luiz Milidiú 47
3-SAT 3-COLOR C = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) X 1 X 2 X 3 T 5/5/2014 Ruy Luiz Milidiú 48
3-SAT 3-COLOR C = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) X 1 X 2 X 3 T Absurd! 5/5/2014 Ruy Luiz Milidiú 49
3-COLOR NPC NP SAT 3SAT PLI CLIQUE 3-COLOR 5/5/2014 Ruy Luiz Milidiú 50
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ú 51
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ú 52
3-COLOR 3-COLOR PLANAR cantos opostos tem mesma cor 5/5/2014 Ruy Luiz Milidiú 53
3-COLOR 3-COLOR PLANAR? W é 3-COLOR então cantos opostos tem mesma cor? 5/5/2014 Ruy Luiz Milidiú 54
3-COLOR 3-COLOR PLANAR u v 5/5/2014 Ruy Luiz Milidiú 55 G
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 G é 3-COLOR G é 3-COLOR 5/5/2014 Ruy Luiz Milidiú 58
3-COLOR 3-COLOR PLANAR G é 3-COLOR G é 3-COLOR u u v u 5/5/2014 Ruy Luiz Milidiú 59
3-COLOR 3-COLOR PLANAR G é 3-COLOR G é 3-COLOR u u u v u u 5/5/2014 Ruy Luiz Milidiú 60
3-COLOR 3-COLOR PLANAR G é 3-COLOR G é 3-COLOR u u u v u u 5/5/2014 Ruy Luiz Milidiú 61
3-COLOR 3-COLOR PLANAR G é 3-COLOR G é 3-COLOR u u u v u u 5/5/2014 Ruy Luiz Milidiú 62
3-COLOR 3-COLOR PLANAR G é 3-COLOR G é 3-COLOR u u u v u u 5/5/2014 Ruy Luiz Milidiú 63
3-COLOR NPC NP SAT 3SAT CLIQUE 3-COLOR PLI 3-COLOR P 5/5/2014 Ruy Luiz Milidiú 64