3 Výroková logika a SAT
- převést formuli Cejtinovou transformací
- provést jednotkovou propagaci a DPLL
- nakreslit implikační graf, najít první UIP a úroveň návratu
- zapsat jednoduchou úlohu jako SAT
Test 2 je za 15 bodů na 45 minut a píše se na papír bez pomůcek. Počítat budeš ručně, proto si postupy opravdu vyzkoušej tužkou.
3.1 Ukázka: co dělá SAT řešič
Máme .
Klauzule nedává na výběr: . Tím se změní na , takže , a stejně . Formule je vyřešená bez jediného tipu. To je jednotková propagace, základ všech řešičů.
3.2 Pojmy
Formule je splnitelná, pokud má model, pravdivá, pokud je splněná každým ohodnocením, a sporná, pokud nemá model. Rozhodnutí o splnitelnosti je problém SAT, který je NP-úplný.
Konjunkce klauzulí. Klauzule je disjunkce literálů a literál je proměnná nebo její negace.
Převod na ekvivalentní CNF může exponenciálně narůst. Formule dá klauzulí. Pro SAT ale stačí ekvisplnitelnost: nová formule je splnitelná právě tehdy, když původní.
3.3 Cejtinova transformace
Pro každý vnitřní uzel stromu formule zaveď pomocnou proměnnou, zapiš ekvivalenci a přidej kořen.
Zkus si to nejdřív sám: kolik pomocných proměnných a kolik klauzulí?
Řešení
Vnitřní uzly jsou dva: a . Kořen je .
Rozepsáno do klauzulí:
- : , ,
- : , ,
- kořen:
Celkem 7 klauzulí a délka roste lineárně. Ověřeno hrubou silou: modely po zúžení na odpovídají modelům původní formule.
| Podformule | Klauzule |
|---|---|
3.4 DPLL
Nerozhodnutá klauzule, jejíž všechny literály kromě jednoho jsou nesplněné. Ten poslední musí být pravdivý.
DPLL je backtracking s jednotkovou propagací a volitelně s pravidlem čisté proměnné: proměnná vyskytující se jen v jedné polaritě se dá rovnou ohodnotit. Čas je a paměť lineární.
Slabina: při konfliktu se vrací chronologicky a opakuje tytéž chyby v nesouvisející části formule.
3.5 CDCL
Tři věci navíc: implikační graf, učení klauzulí a skok zpět.
Acyklický graf ohodnocení. Vrchol je ohodnocená proměnná s úrovní rozhodnutí. Hrany vedou z literálů předchůdcovské klauzule do propagovaného literálu. Vrchol značí konflikt.
Unikátní implikační bod je vrchol na aktuální úrovni, kterým vedou všechny cesty z rozhodovacího vrcholu do . První UIP je ten nejblíž ke konfliktu.
Formule: , , , , .
Rozhodnutí: na úrovni 1, na úrovni 2. Najdi konflikt, první UIP, naučenou klauzuli a úroveň návratu.
Nápověda
Propaguj na úrovni 2. Pak rezolvuj konfliktní klauzuli s předchůdci, dokud v ní nezůstane jediný literál z úrovně 2.
Řešení
Propagace. dá . Pak dá a dá . Klauzule je nesplněná, konflikt.
Analýza rezolucí od konfliktu:
- a přes :
- výsledek a přes :
Teď je z úrovně 2 jediný literál, . První UIP je .
Naučená klauzule: .
Skok zpět: na druhou nejvyšší úroveň v klauzuli, tedy 1. Klauzule je tam jednotková a vynutí . Pak dá a dá .
Ne o jednu úroveň zpět, ale na druhou nejvyšší úroveň v naučené klauzuli. Klauzule musí být po návratu vynucující.
3.6 Další techniky
- 2 sledované literály: klauzule se kontroluje, jen když se změní jeden ze dvou sledovaných literálů, což výrazně zrychlí propagaci.
- GSAT a WalkSAT: lokální hledání, flipuje proměnné. Není úplné, nesplnitelnost nedokáže.
- Fázový přechod: u náhodného 3-SAT je nejtěžší poměr klauzulí k proměnným kolem 4,26.
3.7 Modelování
Hamiltonovská kružnice a kódování jsou stejné jako v kapitole ICC Modelování. U 8-puzzle se používá časová expanze: proměnná pro každé políčko, hodnotu a čas.
3.8 Typické chyby
- Záměna ekvivalence a ekvisplnitelnosti.
- U Cejtina chybí klauzule kořene.
- Skok o jednu úroveň místo na druhou nejvyšší.
- UIP hledaný na jiné než aktuální úrovni.
- Tvrzení, že WalkSAT dokáže nesplnitelnost.
3.9 Kvíz
3.10 Příklady na procvičení
Převeď Cejtinem .
Řešení
: , , . Dále : , . Kořen .
Rozhodni, zda je formule pravdivá: .
Řešení
Ano. Je-li , platí první člen. Je-li , platí druhý. Žádné ohodnocení ji nezfalzifikuje.
3.11 Tahák
- CNF: klauzule = OR literálů, formule = AND klauzulí.
- Cejtin: proměnná na vnitřní uzel, ekvivalence na klauzule, přidej kořen.
- Jednotková klauzule vynutí poslední literál.
- DPLL = backtracking + UP + čisté proměnné.
- CDCL: konflikt → rezoluce s předchůdci → jediný literál z aktuální úrovně = první UIP.
- Skok na druhou nejvyšší úroveň v naučené klauzuli.
- WalkSAT neúplný, CDCL úplný.