Efektivní heuristika pro SAT založená na znalosti komponent souvislosti grafu problému Tomáš Balyo a Pavel Surynek Matematicko-fyzikální fakulta Univerzita Karlova v Praze
Problém booleovské splnitelnosti (Problém SAT) Dána booleovská formule Obsahuje výrokové proměnné, které mohou nabývat hodnot pravda/nepravda (True/False) Logické spojky: ¬, ∧, ∨, → (negace, konjunkce, disjunkce, implikace); závorky: (, ) Výroková proměnná je booleovská formule. Pokud A a B jsou formule, potom také ¬A, (A ∧ B), (A ∨ B), (A → B) jsou rovněž booleovské formule. Př.: (¬x → ¬y) → (y → x), kde x,y jsou výrokové proměnné Otázka: Lze formuli splnit? Pokud ano, jaké je ohodnocení proměnných, které splňuje formuli? Ohodnocení: přiřazení hodnot proměnným formule Používá se tvar CNF (konjunktivní normální tvar) konjunkce klauzulí, klauzule = disjunkce literálů, literál = proměnná nebo negace proměnné Př.: (x ∨ ¬y) ∧ (¬y) ∧ (x ∨ ¬y ∨ z) Znalosti 2009 Tomáš Balyo, Pavel Surynek
Motivace k problémům SAT Obecně: úlohy, kde je třeba současně splnit jisté podmínky Podmínky jsou modelovány jako klauzule Příklady Rozvrh služeb zdravotních sester (nurse scheduling) Chceme splnit podmínky: mohou pracovat maximálně H hodin týdně, některé nemohou mít noční služby, … Sestavování individuálního školního rozvrhu Podmínky: student chce navštěvovat matematiku a fyziku, nechce matematiku hned po fyzice, … Hry: Sudoku, N-královen Optimalizace dopravy Návrh hardwaru Znalosti 2009 Tomáš Balyo, Pavel Surynek
Složitost a řešení problému SAT Problém SAT je NP-úplný – není znám řešící algoritmus pracující v polynomiálním čase Všechny v současnosti známé algoritmy vyžadují v nejhorším případě exponenciální čas Existují různé řešící metody Úplné algoritmy – garantují nalezení řešení Prohledávání prostoru všech možných ohodnocení proměnných formule Bez použití vylepšujících technik malé šance na vyřešení v rozumném čase Dopředný pohled (look ahead) Propagace (jednotková propagace) Heuristiky (pro výběr proměnné k ohodnocení) Znalosti 2009 Tomáš Balyo, Pavel Surynek
Metoda DPLL (Davis, Putnam, Logemann & Loveland, 1962) Téměř všechny úplné řešící systémy pro SAT jsou založeny na DPLL Prohledávání prostoru všech možných ohodnocení proměnných do hloubky + propagace Výběr dosud neohodnocené proměnné (podle heuristiky) Otestování hodnot pravda/nepravda pro vybranou proměnnou Po přiřazení hodnoty proměnné: Provést jednotkovou propagaci Výsledná formule splněna konec Výsledná formule nesplnitelná návrat Znalosti 2009 Tomáš Balyo, Pavel Surynek
Jednotková propagace Pokud v dosud nesplněné klauzuli zbývá poslední neohodnocený literál, je nutné jej pravdivě ohodnotit (¬u ∨ w) ∧ (u ∨ v) ∧ (u) ∧ (¬w ∨ z) Jednotková klauzule u musí být ohodnoceno pravdivě (w) ∧ (¬w ∨ z) Splněné klauzule a nesplněné literály vyřadíme Jednotková klauzule w musí být ohodnoceno pravdivě (z) Splněné klauzule a nesplněné literály opět vyřadíme, Zbývá poslední jednotková klauzule z ohodnotíme pravdivě Splňující ohodnocení formule nalezeno jen s pomocí jednotkové propagace Znalosti 2009 Tomáš Balyo, Pavel Surynek
Nová heuristika pro výběr proměnné (1) Graf G=(V,E) odvozený z formule (dynamický) V = { x | x dosud neohodnocená proměnná } E = { {x,y}| existuje ještě nesplněná klauzule K taková, že xK ∧ yK} (x2 x4) (x2 ¬x1) (x3 ¬x1 ) (x3 ¬x6 x5) x4 x2 x1 x3 x5 x6 x4 x2 x3 x5 x6 (x2 x4) (x3 ¬x6 x5) Po provedení přiřazení x1=nepravda Komponenty souvislosti grafu lze řešit nezávisle Znalosti 2009 Tomáš Balyo, Pavel Surynek
Nová heuristika pro výběr proměnné (2) Chceme udržovat znalost o komponentách souvislosti odvozeného grafu Proměnné k ohodnocení budeme vybírat ze stejné komponenty souvislosti Prohledávání omezíme pouze na danou komponentu souvislosti Př.: dvě stejně velké komponenty … složitost 2|V| 2|V|/2 Explicitní udržování znalosti o komponentách je příliš časově náročné Vybíráme vždy neohodnocenou proměnnou z klauzule, kde naposledy proběhla jednotková propagace. Žádné navýšení času + jedna proměnná navíc. Znalosti 2009 Tomáš Balyo, Pavel Surynek
Experimentální řešící systém - Mei Nová heuristika zabudována do experimentálního systému pro řešení SAT problémů – SAT řešič Mei Implementováno v jazyce C Základem je DPLL Použito sledování dvou literálů Žádné další urychlující techniky Provedeno srovnání s řešícími systémy, které byly úspěšné v soutěžích SAT Competition a SAT Race MiniSAT, MiniSAT 2, PicoSAT, zChaff, RSat 2 Srovnání na náhodných 3-SAT a strukturovaných problémech Testy provedeny na CPU Intel Pentium M 1.7 GHz Znalosti 2009 Tomáš Balyo, Pavel Surynek
Experimenty náhodné 3-SAT problémy Problémy vybrány z oblasti fázového přechodu (zdroj: SATLIB) Náhodné 3-SAT Splnitelné Nesplnitelné Velikost prom/klauz 75 / /325 100 / / 430 125 / / 538 150 / /645 175 / / 753 / 325 / 645 Počet prob. 100 1000 MiniSat 1.17 11.59 2.05 3.32 9.18 0.95 11.85 2.45 6.07 15.80 MiniSat 2 0.70 7.26 1.47 2.79 7.19 0.45 7.78 1.91 5.10 14.04 PicoSat 1.02 10.92 1.98 3.89 10.96 0.84 11.95 2.93 7.27 22.39 zChaff 1.23 12.87 2.42 4.13 11.35 1.06 19.31 5.32 17.75 64.72 RSat 2 0.72 8.45 1.76 3.60 10.01 0.64 10.22 2.71 7.05 19.23 Mei 1.14 30.12 11.34 36.15 165.21 1.32 66.98 18.4 52.3 172.70 Znalosti 2009 Tomáš Balyo, Pavel Surynek
Experimenty strukturované problémy - holubi Dirichletův princip – N holubů do N-1 děr, v žádné díře není více než 1 holub (zdroj: SATLIB) NESPLNITELNÉ Dirichlet hole6 hole7 hole8 hole9 hole10 Velikost prom/klauz 42 / / 133 56 / / 204 72 / / 287 90 / / 415 110 / / 561 MiniSat 0.04 0.21 0.67 5.44 43.18 MiniSat 2 0.03 0.19 0.64 3.39 31.24 PicoSat 0.02 0.42 1.37 15.40 313.79 zChaff 0.12 0.32 1.47 6.93 RSat 2 0.01 0.09 0.35 37.72 326.23 Mei 0.10 0.27 0.55 1.08 Znalosti 2009 Tomáš Balyo, Pavel Surynek
Experimenty strukturované problémy - FPGA Problém směrování v FPGA, vytváření propojení pomocí přepínačů (zdroj: SATLIB) NESPLNITELNÉ FPGA chnl 10-11 10-12 10-13 11-12 11-13 11-20 Velikost prom/klauz 220 / / 1122 240 / / 1344 260 / / 1586 264 / / 1476 286 / / 1472 440 / / 4220 MiniSat 56.73 35.66 25.77 >180.00 MiniSat 2 25.75 75.31 161.28 PicoSat zChaff 6.88 8.27 9.73 30.58 156.80 RSat 2 Mei 4.24 4.82 5.62 8.60 10.11 23.59 Znalosti 2009 Tomáš Balyo, Pavel Surynek
Závěr a budoucí práce Nová heuristika pro výběr proměnné k ohodnocení Heuristika založena na implicitní znalosti komponent souvislosti odvozeného grafu Odvozený graf odráží strukturu problému Vybíráme proměnné ze stejné komponenty souvislosti Jednotlivé komponenty souvislosti řešeny nezávisle Odvozený graf není nutné udržovat explicitně Stačí vybírat proměnnou z klauzule, kde naposledy proběhla jednotková propagace Do budoucna plánujeme doplnit experimentální řešící systém o další urychlující techniky Znalosti 2009 Tomáš Balyo, Pavel Surynek