Transformace tseytinu - Tseytin transformation
The Transformace tseytinu, alternativně písemné Transformace tseitinu, bere jako vstup libovolný kombinatorická logika obvod a vyrábí a booleovský vzorec v konjunktivní normální forma (CNF), což může vyřešit a CNF-SAT řešitel. Délka vzorce je lineární vzhledem k velikosti obvodu. Vstupní vektory, díky nimž je výstup obvodu „pravdivý“, jsou uvnitř Korespondence 1: 1 s úkoly, které splňují vzorec. Tím se snižuje problém uspokojivost obvodu na libovolném okruhu (včetně jakéhokoli vzorce) do uspokojivost problém na vzorcích 3-CNF.
Motivace
Naivní přístup je napsat obvod jako logický výraz a použít De Morganův zákon a distribuční vlastnictví převést na CNF. To však může mít za následek exponenciální zvětšení velikosti rovnice. Transformace Tseytin vydává vzorec, jehož velikost roste lineárně vzhledem ke vstupnímu obvodu.
Přístup
Výstupní rovnicí je konstanta 1, která se rovná výrazu. Tento výraz je spojením dílčích výrazů, kde uspokojení každého dílčího výrazu vynucuje správnou funkci jedné brány ve vstupním obvodu. Spokojenost celého výstupního výrazu tak vynucuje, aby celý vstupní obvod fungoval správně.
Pro každou bránu je zavedena nová proměnná představující její výstup. Malý předem vypočítaný CNF výraz, který souvisí se vstupy a výstupy, je připojen (pomocí operace „a“) k výstupnímu výrazu. Všimněte si, že vstupy do těchto bran mohou být buď původní literály, nebo zavedené proměnné představující výstupy dílčích bran.
Ačkoli výstupní výraz obsahuje více proměnných než vstup, zůstává vyrovnatelný, což znamená, že je uspokojivá, pouze a pouze, je-li původní vstupní rovnice uspokojivá. Když je nalezeno uspokojivé přiřazení proměnných, lze tyto přiřazení pro zavedené proměnné jednoduše zahodit.
Závěrečná klauzule je připojena k jedinému literálu: výstupní proměnná konečné brány. Pokud je tento literál doplněn, pak uspokojení této klauzule vynutí výstupní výraz na false; jinak je výraz vynucen pravdivý.
Příklady
Zvažte následující vzorec .
Zvažte všechny podformule (bez proměnných):
Zavést novou proměnnou pro každý podformulář:
Spojte všechna střídání a střídání :
Všechny substituce lze transformovat na CNF, např.
Podvýrazy brány
Uvedeny jsou některé z možných dílčích výrazů, které lze vytvořit pro různé logické brány. Ve výrazu operace funguje C jako výstup; v subexpresi CNF působí C jako nová booleovská proměnná. Pro každou operaci je dílčí výraz CNF pravdivý právě tehdy, když C dodržuje kontrakt booleovské operace pro všechny možné vstupní hodnoty.
Typ | Úkon | CNF Dílčí výraz |
---|---|---|
A | ||
NAND | ||
NEBO | ||
ANI | ||
NE | ||
XOR | ||
XNOR |
Jednoduchá kombinatorická logika
Následující obvod vrací true, pokud jsou alespoň některé z jeho vstupů pravdivé, ale ne více než dva najednou. Implementuje rovnici y = x1 · X2 + x1 · x2 + x2 · X3. Pro výstup každé brány je zavedena proměnná; zde je každý označen červeně:
Všimněte si, že výstup střídače s x2 jako vstup má zavedeny dvě proměnné. I když je to nadbytečné, nemá to vliv na vyrovnatelnost výsledné rovnice. Nyní nahraďte každou bránu příslušnými CNF podvýraz:
brána | CNF podvýraz |
---|---|
brána1 | (brána1 ∨ x1) ∧ (brána1 ∨ x1) |
brána2 | (brána2 ∨ brána1) ∧ (brána2 ∨ x2) ∧ (x2 ∨ gate2 ∨ brána1) |
brána3 | (brána3 ∨ x2) ∧ (brána3 ∨ x2) |
brána4 | (brána4 ∨ x1) ∧ (brána4 ∨ brána3) ∧ (brána3 ∨ gate4 ∨ x1) |
brána5 | (brána5 ∨ x2) ∧ (brána5 ∨ x2) |
brána6 | (brána6 ∨ brána5) ∧ (brána6 ∨ x3) ∧ (x3 ∨ gate6 ∨ brána5) |
brána7 | (brána 7 ∨ brána2) ∧ (brána7 ∨ brána4) ∧ (brána2 ∨ brána7 ∨ brána4) |
brána8 | (brána 8 ∨ brána6) ∧ (brána 8 ∨ brána7) ∧ (brána6 ∨ brána8 ∨ brána7) |
Konečná výstupní proměnná je gate8, takže k vynucení toho, aby byl výstup tohoto obvodu pravdivý, je připojena jedna závěrečná jednoduchá klauzule: (gate8). Kombinace těchto rovnic vede k poslední instanci SAT:
- (brána1 ∨ x1) ∧ (brána1 ∨ x1) ∧ (brána2 ∨ brána1) ∧ (brána2 ∨ x2) ∧
- (x2 ∨ gate2 ∨ brána1) ∧ (brána3 ∨ x2) ∧ (brána3 ∨ x2) ∧ (brána4 ∨ x1) ∧
- (brána4 ∨ brána3) ∧ (brána3 ∨ gate4 ∨ x1) ∧ (gate5 ∨ x2) ∧
- (brána5 ∨ x2) ∧ (brána6 ∨ brána5) ∧ (brána6 ∨ x3) ∧
- (x3 ∨ gate6 ∨ brána5) ∧ (brána7 ∨ brána2) ∧ (brána7 ∨ brána4) ∧
- (brána 2 ∨ brána7 ∨ brána4) ∧ (brána8 ∨ brána6) ∧ (brána 8 ∨ brána7) ∧
- (brána6 ∨ brána8 ∨ brána7) ∧ (brána8) = 1
Jedním z možných uspokojivých přiřazení těchto proměnných je:
proměnná | hodnota |
---|---|
brána2 | 0 |
brána3 | 1 |
brána1 | 1 |
brána6 | 1 |
brána7 | 0 |
brána4 | 0 |
brána5 | 1 |
brána8 | 1 |
x2 | 0 |
x3 | 1 |
x1 | 0 |
Hodnoty zavedených proměnných jsou obvykle zahozeny, ale lze je použít ke sledování logické cesty v původním obvodu. Zde (x1, x2, x3) = (0,0,1) skutečně splňuje kritéria pro výstup původního obvodu true. Chcete-li najít jinou odpověď, doložku (x1 ∨ x2 ∨ x3) lze připojit a SAT řešič znovu spustit.
Derivace
Prezentována je jedna možná derivace CNF dílčí výraz pro vybrané brány:
NEBO brána
Brána OR se dvěma vstupy A a B a jeden výstup C splňuje následující podmínky:
- pokud je výstup C je true, pak alespoň jeden z jeho vstupů A nebo B je pravda,
- pokud je výstup C je false, pak oba jeho vstupy A a B jsou falešné.
Tyto dvě podmínky můžeme vyjádřit jako spojení dvou implikací:
Nahrazení implikací ekvivalentními výrazy zahrnujícími pouze spojky, disjunkce a negace se získá
který je téměř v konjunktivní normální forma již. Distribuce klauzule úplně vpravo přináší dvakrát
a aplikace asociativity spojení dává vzorec CNF
NENÍ brána
Brána NOT funguje správně, když jsou její vstup a výstup proti sobě. To je:
- pokud je výstup C true, je vstup A false
- pokud je výstup C nepravdivý, je vstup A pravdivý
vyjádřit tyto podmínky jako výraz, který musí být splněn:
- ,
Brána NOR
Brána NOR funguje správně, pokud jsou splněny následující podmínky:
- pokud je výstup C pravdivý, pak ani A ani B nejsou pravdivé
- pokud je výstup C nepravdivý, pak alespoň jedna z A a B byla pravdivá
vyjádřit tyto podmínky jako výraz, který musí být splněn:
- , , , ,
Reference
- GS Tseytin: O složitosti derivace ve výrokovém počtu. In: Slisenko, A.O. (ed.) Studies in Constructive Mathematics and Mathematical Logic, Part II, Seminars in Mathematics, str. 115–125. Steklov Mathematical Institute (1970). Přeloženo z ruštiny: Zapiski Nauchnykh Seminarov LOMI 8 (1968), s. 234–259.
- GS Tseytin: O složitosti derivace ve výrokovém počtu. Prezentováno na Leningradském semináři o matematické logice, který se konal v září 1966.