Algoritmos Avançados Prof. Ruy Luiz Milidiú 5/5/2014 Ruy Luiz Milidiú 1 2-SAT 5/5/2014 Ruy Luiz Milidiú 2 Resumo Objetivo Apresentar algoritmos para o problema 2-SAT Sumário 5/5/2014 2-SAT Redução para Grafo de Implicações Algoritmo para decisão Algoritmo para atribuição Ruy Luiz Milidiú 3 2SAT Entrada Uma fórmula C, em 2-FNC Exemplo: uma fórmula 2-FNC (xy)(yz)(xz)(zy) Decisão Existe atribuição que satisfaz C ? (xy)(yz)(xz)(zy) = 1 5/5/2014 Ruy Luiz Milidiú 4 O truque… 5/5/2014 X Y ~X Y XY 0 0 1 1 0 1 1 1 1 0 0 0 1 1 1 1 Ruy Luiz Milidiú 5 Grafo de implicações Um vértice para cada literal Arco (,) sss a cláusula () ocorre em C () equivale a 5/5/2014 Ruy Luiz Milidiú 6 Trajetórias e arcos extras sss sss sss 5/5/2014 Ruy Luiz Milidiú 7 Exemplo (xy)(yz)(xz)(zy) x y x y z z 5/5/2014 Ruy Luiz Milidiú 8 Exemplo (xy)(yz)(xz)(zy) x y x y z z 5/5/2014 Ruy Luiz Milidiú 9 2-SAT Grafo de implicações C NÃO é capaz de satisfação Existe um literal x tal que x x em G 5/5/2014 Ruy Luiz Milidiú 10 Exemplo (xy)(yz)(xz)(zy) x z, y, x y x y z x, y, z z 5/5/2014 Ruy Luiz Milidiú 11 … tem trajetória x x Por absurdo admita uma atribuição satisfatória para C (x)=T x x () é uma cláusula falsa de C! 5/5/2014 x . . . x T T F F Ruy Luiz Milidiú 12 … tem trajetória x x Por absurdo admita uma atribuição satisfatória para C (x)=F x x () é uma cláusula falsa de C! 5/5/2014 x . . . T T F Ruy Luiz Milidiú x F 13 … não tem trajetória Não tem conectividade do tipo x x Algoritmo de atribuição Aspvall, Plass, Tarjan (1979) f(x) número do componente de x em ordem topológica f(x) < f(x) f(x) > f(x) 5/5/2014 se e só se se e só se Ruy Luiz Milidiú (x) = T (x) = F 14 … não tem trajetória Não tem conectividade do tipo x x Algoritmo de atribuição x x F z, y, x y y z 5/5/2014 z x, y, z Ruy Luiz Milidiú T 15 … não tem trajetória O algoritmo de atribuição é correto DEM.: por absurdo a cláusula xy de C não é satisfeita (x) = T e (y) = F f(x) < f(x) e f(y) < f(y) f(x) ≤ f(y) pois xy ord. topológica f(x) < f(x) ≤ f(y) < f(y) y x e f(x) < f(y) viola ord. topológica 5/5/2014 Ruy Luiz Milidiú 16 Algoritmo para decisão Construir o grafo de implicações G Determinar os componentes fortemente conexos de G f(x) número do componente de x em ordem topológica Para cada vértice x f(x) = f(x) então return(NAO) return(SIM) 5/5/2014 Ruy Luiz Milidiú 17 Algoritmo para atribuição Construir o grafo de implicações G Determinar os componentes fortemente conexos de G f(x) número do componente de x em ordem topológica Para cada vértice x f(x) < f(x) f(x) > f(x) f(x) = f(x) 5/5/2014 então então então Ruy Luiz Milidiú (x) = T (x) = F return(NAO) 18 Conclusões 2-SAT é fácil ! Algoritmo de tempo linear SAT é tão difícil quanto o 3-SAT ! Resolvido o 3-SAT, resolvemos o SAT 5/5/2014 Ruy Luiz Milidiú 19