Transformação de Tseytin

Fonte: testwiki
Revisão em 23h07min de 24 de abril de 2019 por 2804:14d:149b:9523:f090:141b:fe75:dd3 (discussão)
(dif) ← Revisão anterior | Revisão atual (dif) | Revisão seguinte → (dif)
Saltar para a navegação Saltar para a pesquisa

A transformação de Tseytin, alternativamente escrita  como transformação de Tseitin tem como entrada um circuito lógico combinatório arbitrário e produz uma fórmula booleana na forma normal conjuntiva (FNC), o que pode ser resolvido através de um solucionador FNC-SAT. O comprimento da fórmula é linear no tamanho do circuito. Vetores de entrada que fazem a saída do circuito ser "verdadeira" estão na correspondência 1-para-1 com as atribuições que satisfazem a fórmula. Isto reduz o problema da satisfatibilidade do circuito em qualquer circuito (incluindo qualquer fórmula) para o problema da satisfatibilidade nas fórmulas 3-FNC.

Motivação

A alternativa é escrever o circuito como uma expressão Booleana, e usar a lei de De Morgan e a propriedade distributiva para convertê-lo para FNC. No entanto, isso pode resultar em um aumento exponencial no tamanho da equação. A transformação de Tseytin dá como saída uma fórmula, cujo tamanho cresce linearmente em relação à entrada do circuito.

Abordagem

A equação de saída é a constante 1 igual a uma expressão. Esta expressão é um conjunto de sub-expressões, onde a satisfação de cada sub-expressão impõe o bom funcionamento de uma única porta na entrada do circuito. A satisfação de toda a saída da expressão, portanto, impõe que toda a entrada do circuito está funcionando corretamente.

Para cada porta, uma nova variável que representa a sua saída é introduzida. Uma pequena expressão FNC pré-calculada que relaciona as entradas e saídas é acrescentada (através de uma operação "e") para a expressão de saída. Observe que as entradas para estas portas, podem ser para literais originais ou para introdução de variáveis que representam saídas de sub-portas.

Embora a expressão de saída contém mais variáveis do que a de entrada, ele permanece equisatisfatível, o que significa que ele é satisfatível se, e somente se,a entrada original da equação é satisfatível. Quando uma atribuição satisfatória de variáveis é encontrada, essas atribuições para as variáveis introduzidas pode ser simplesmente descartada.

A cláusula final, é acrescentada com um único literal: a última saída da porta da variável. Se este literal é complementado, então, a satisfação desta cláusula aplica a expressão de saída para falso; caso contrário, a expressão é forçado para verdadeiro.

Exemplos

Considere a seguinte fórmula ϕ .

ϕ:=((pq)r)(¬s)

Considere todos as subformulas (sem variáveis):

¬spq(pq)r((pq)r)(¬s)

Introduza uma nova variável para cada subformula:

x1¬sx2pqx3x2rx4x3x1

Em conjunção com todas as substituições e a substituição para ϕ:

T(ϕ):=x4(x4x3x1)(x3x2r)(x2pq)(x1¬s)

Todas as substituições podem ser transformadas em FNC, e.g.

x2pqx2(pq)((pq)x2)(¬x2pq)(¬(pq)x2)(¬x2pq)((¬p¬q)x2)(¬x2pq)(¬px2)(¬qx2)

Sub-expressões de porta

Algumas sub-expressões possíveis estão listadas que podem ser criadas para diferentes portas lógicas. Em uma operação de expressão, C age como uma saída; uma sub-expressão FNC, C age como uma nova variável Booleana. Para cada operação, a sub-expressão FNC é verdadeira se, e somente se, C adere ao contrato de operação Booleana para todos os possíveis valores de entrada.

Type Operation CNF Sub-expression
AND symbol AND C=AB (ABC)(AC)(BC)
NAND symbol NAND C=AB (ABC)(AC)(BC)
OR symbol OR C=A+B (ABC)(AC)(BC)
NOR symbol NOR C=A+B (ABC)(AC)(BC)
NOT symbol NOT C=A (AC)(AC)
XOR symbol XOR C=AB (ABC)(ABC)(ABC)(ABC)

Lógica combinatória simples 

O circuito a seguir retorna verdade quando pelo menos algumas de suas entradas são verdadeiras, mas não mais do que duas vezes. Ele implementa a equação y=x1x2+x1x2+x2x3. Uma variável é introduzida para cada saída das portas; aqui cada um é marcado em vermelho:

Observe que a saída do inversor com x2 como uma entrada tem duas variáveis introduzidas. Enquanto isso é redundante, não afeta a equisatisfatibilidade da equação resultante. Agora substitua cada porta com a sub-expressão apropriada FNC:

porta sub-expressão FNC
gate1 (gate1x1)(gate1x1)
gate2 (gate2gate1)(gate2x2)(x2gate2gate1)
gate3 (gate3x2)(gate3x2)
gate4 (gate4x1)(gate4gate3)(gate3gate4x1)
gate5 (gate5x2)(gate5x2)
gate6 (gate6gate5)(gate6x3)(x3gate6gate5)
gate7 (gate7gate2)(gate7gate4)(gate2gate7gate4)
gate8 (gate8gate6)(gate8gate7)(gate6gate8gate7)

A saída final da variável é a gate8 então, para impor que a saída deste circuito seja verdadeira, uma  cláusula final simples é acrescentada: (gate8). Combinando estas equações resulta em última instância de SAT:

(gate1x1)(gate1x1)(gate2gate1)(gate2x2)

(x2gate2gate1)(gate3x2)(gate3x2)(gate4x1) (gate4gate3)(gate3gate4x1)(gate5x2) (gate5x2)(gate6gate5)(gate6x3) (x3gate6gate5)(gate7gate2)(gate7gate4) (gate2gate7gate4)(gate8gate6)(gate8gate7) (gate6gate8gate7)(gate8)=1

Uma possível atribuição satisfatória destas variáveis é:

variável valor
gate2 0
gate3 1
gate1 1
gate6 1
gate7 0
gate4 0
gate5 1
gate8 1
x2 0
x3 1
x1 0

Os valores dos valores introduzidos são normalmente descartados, mas eles podem ser usados para rastrear o caminho lógico do circuito original. Aqui, (x1,x2,x3)=(0,0,1) de fato, satisfaz os critérios para o circuito original para  ter como saída verdade. Para encontrar uma resposta diferente, a cláusula (x1x2x3) pode ser acrescentada e o solucionador SAT executado novamente.

Derivação

Apresentada é a de uma possível derivação da sub-expressão FNC  para algumas portas escolhidas:

Porta OR 

Uma porta OR com duas entradas A e B e uma saída C  satisfaz as seguintes condições:

  1. se a saída C é verdadeira, então pelo menos uma das entradas A ou B é verdadeiro,
  2. se a saída C é falsa, tanto em suas entradas A e B são falsas.

Podemos expressar estas duas condições como a conjunção de duas implicações:

(C(AB))(C(AB))

Substituindo as implicações com expressões equivalentes envolvendo apenas conjunções, disjunções, e negações de rendimentos

(C(AB))(C(AB)),

que é quase  forma normal conjuntiva. A distribuição da extrema cláusula à direita duas vezes rendimentos

(CAB)((CA)(CB)),

e aplicando a associatividade ' do conjunto dá a fórmula CNF

(CAB)(CA)(CB)

Porta NOT

A porta NOT está operando adequadamente quando sua entrada e saída se opõem. O que é:

  1. se a saída C é verdade, a entrada A é falso
  2. se a saída C é falsa, a entrada de Um é verdadeiro

expressar essas condições, como uma expressão que deve ser satisfeita: (CA)(CA) (CA)(CA)

Porta NOR

A porta NOR está operando adequadamente quando mantém as seguintes condições:

  1. se a saída C é verdadeira, então nem A e nem B forem verdadeiras
  2. se a saída C é falsa, pelo menos um de A e B eram verdadeiras

expressar essas condições, como uma expressão que deve ser satisfeita:

(C(AB))(C(AB))

(C(AB))(CAB))

(C(AB))(CAB))

(AC)(BC)(CAB))

(AC)(BC)(CAB))

Referências

  • G. S. Tseytin: a complexidade de derivação no cálculo proposicional. Em: Slisenko, A. O. (ed.) Estudos Construtivas Matemática e Lógica Matemática, Parte II, dos Seminários de Matemática, pp. 115–125. Matemática Steklov Institute (1970). Traduzido de russo: Zapiski Nauchnykh Seminarov LOMI 8 (1968), pp. 234-259.