Problema satisfacabilităţii formulelor booleene ( SAT , vyp ) este o problemă algoritmică importantă pentru teoria complexităţii computaţionale .
O instanță de activitate este o formulă booleană constând numai din nume de variabile, paranteze și operații ( ȘI ), ( SAU ) și ( HE ). Problema este: este posibil să se atribuie valori false și adevărate tuturor variabilelor care apar în formulă, astfel încât formula să devină adevărată.
Conform teoremei lui Cook , demonstrată de Stephen Cook în 1971, problema SAT pentru formulele booleene scrise în formă normală conjunctivă este NP-complet . Cerința scrierii în formă conjunctivă este esențială, întrucât, de exemplu, problema SAT pentru formulele prezentate în formă normală disjunctivă se rezolvă trivial în timp liniar în funcție de mărimea înregistrării formulei (pentru ca formula să fie satisfăcătoare, doar prezența este necesară cel puţin o conjuncţie care nu conţine simultan şi negaţie pentru o variabilă ).
Pentru a formula cu precizie problema recunoașterii , se fixează un alfabet finit, cu ajutorul căruia sunt specificate instanțe de limbaj. Hopcroft , Motwani și Ullman în cartea lor Introduction to Automata Theory , Languages, and Computation sugerează utilizarea următorului alfabet : .
Când se utilizează acest alfabet, parantezele și operatorii sunt scrise în mod natural, iar variabilele primesc următoarele nume: , în funcție de numerele lor în notație binară .
Să fie o formulă booleană , scrisă în notația matematică obișnuită, să aibă lungimea caracterelor. În ea, fiecare apariție a fiecărei variabile a fost descrisă de cel puțin un simbol, prin urmare, nu există mai mult decât variabile în această formulă. Aceasta înseamnă că în notația propusă mai sus, fiecare variabilă va fi scrisă folosind simboluri. În acest caz, întreaga formulă din noua notație va avea lungimea caracterelor, adică lungimea șirului va crește de un număr polinom de ori.
De exemplu, formula va lua forma .
Într-o lucrare din 1970 a lui Stephen Cook , termenul „ problema NP-completă ” a fost introdus pentru prima dată , iar problema SAT a fost prima problemă pentru care această proprietate a fost dovedită.
În demonstrarea teoremei lui Cook, fiecare problemă din clasa NP este redusă explicit la SAT. După apariția rezultatelor lui Cook, NP-completitudinea a fost dovedită pentru multe alte probleme. În acest caz, de cele mai multe ori, pentru a demonstra NP-completitudinea unei anumite probleme, se dă reducerea polinomială a problemei SAT la problema dată, eventual în mai multe etape, adică folosind mai multe probleme intermediare.
Cazuri speciale importante și interesante ale problemei SAT sunt:
Una dintre cele mai eficiente metode de paralelizare a sarcinilor SAT este solutoarele CDCL (CDCL, English conflict-driven clause learning ), bazate pe variante non-cronologice ale algoritmului DPLL [1] [2] .
Probleme NP-complete | |
---|---|
Problema de maximizare a stivuirii (ambalării) |
|
teoria grafurilor teoria multimelor | |
Probleme algoritmice | |
Jocuri de logică și puzzle-uri | |