Projeto e Análise de Algoritmos - PUC-Rio

Propaganda
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
(xy)(yz)(xz)(zy)
 Decisão
 Existe atribuição que satisfaz C ?
(xy)(yz)(xz)(zy) = 1
5/5/2014
Ruy Luiz Milidiú
4
O truque…
5/5/2014
X
Y
~X  Y
XY
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
(xy)(yz)(xz)(zy)
x
y
x
y
z
z
5/5/2014
Ruy Luiz Milidiú
8
Exemplo
(xy)(yz)(xz)(zy)
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
(xy)(yz)(xz)(zy)
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 xy de C não é satisfeita





(x) = T
e
(y) = F
f(x) < f(x)
e
f(y) < f(y)
f(x) ≤ f(y)
pois xy 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
Download