Boolen kaavojen ( SAT , vyp ) tyydyttävyysongelma on laskennallisen monimutkaisuuden teorialle tärkeä algoritminen ongelma .
Tehtäväilmentymä on Boolen kaava , joka koostuu vain muuttujien nimistä, suluista ja operaatioista ( AND ), ( OR ) ja ( HE ). Ongelmana on: onko mahdollista antaa vääriä ja tosi arvoja kaikille kaavassa esiintyville muuttujille niin, että kaavasta tulee tosi.
Stephen Cookin vuonna 1971 todistaman Cookin lauseen mukaan konjunktiiviseen normaalimuotoon kirjoitettujen Boolen kaavojen SAT-ongelma on NP-täydellinen . Konjunktiivimuodossa kirjoittamisen vaatimus on olennainen, sillä esimerkiksi disjunktiivisessa normaalimuodossa esitettyjen kaavojen SAT-ongelma ratkeaa triviaalisti lineaarisessa ajassa riippuen kaavatietueen koosta (jotta kaava olisi tyydyttävä, vain läsnäolo vaaditaan vähintään yksi konjunktio , joka ei sisällä samanaikaisesti ja negatiivista jollekin muuttujalle ).
Tunnistusongelman täsmällisen muotoilemiseksi kiinnitetään äärellinen aakkoset, joiden avulla määritellään kieliinstanssit. Hopcroft , Motwani ja Ullman kirjassaan Introduction to Automata Theory , Languages, and Computation ehdottavat seuraavan aakkoston käyttöä : .
Tätä aakkosta käytettäessä sulut ja operaattorit kirjoitetaan luonnollisesti, ja muuttujat saavat seuraavat nimet: , numeroidensa mukaan binäärimuodossa .
Olkoon jollain boolen kaavalla , joka on kirjoitettu tavallisella matemaattisella merkinnällä, merkkien pituus. Siinä kunkin muuttujan jokaista esiintymistä kuvattiin vähintään yhdellä symbolilla, joten tässä kaavassa ei ole enempää kuin muuttujia. Tämä tarkoittaa, että yllä ehdotetussa merkinnässä jokainen muuttuja kirjoitetaan symboleilla. Tässä tapauksessa koko kaava uudessa merkinnässä on merkkien pituinen, eli merkkijonon pituus kasvaa polynomimäärän kertoja.
Esimerkiksi kaava saa muotoa .
Stephen Cookin vuonna 1970 julkaisemassa artikkelissa termi " NP-täydellinen ongelma " esiteltiin ensimmäisen kerran , ja SAT-ongelma oli ensimmäinen ongelma, jolle tämä ominaisuus todistettiin.
Cookin lauseen todistuksessa jokainen luokan NP tehtävä pelkistetään eksplisiittisesti SAT:ksi. Cookin tulosten ilmestymisen jälkeen NP-täydellisyys todettiin moniin muihin ongelmiin. Tässä tapauksessa useimmiten tietyn tehtävän NP-täydellisyyden todistamiseksi annetaan SAT-tehtävän polynomipelkistys annettuun ongelmaan, mahdollisesti useassa vaiheessa, eli useaa välitehtävää käyttäen.
Mielenkiintoisia tärkeitä erityistapauksia SAT-ongelmasta ovat:
Yksi tehokkaimmista SAT-tehtävien rinnakkaismenetelmistä on CDCL-ratkaisijat (CDCL, englantilainen konfliktilähtöinen lauseoppiminen ), jotka perustuvat DPLL-algoritmin ei-kronologisiin muunnelmiin [1] [2] .
NP-täydellisiä ongelmia | |
---|---|
Pinoamisen (pakkauksen) maksimointiongelma |
|
graafiteorian joukkoteoria | |
Algoritmiset ongelmat | |
Logiikkapelejä ja pulmia | |