DPLL-algoritmi - DPLL algorithm
|
Vuonna CNF-SAT kaava: 1-Valitse kirjaimellisesti 2-Määritä totuusarvo sille 3-Yksinkertaista on kaava 4-Check satisfiablity; 5 - Jos et ole tyytyväinen, tee paluuta
| |
| Luokka | Boolen tyydyttävyysongelma |
|---|---|
| Tietorakenne | Binaarinen puu |
| Pahin mahdollinen suorituskyky | |
| Paras suorituskyky | (vakio) |
| Pahimmassa tapauksessa tilan monimutkaisuus | (perusalgoritmi) |
Vuonna logiikan ja tietojenkäsittelytieteen The Davis-Putnam-Logemann-Loveland ( DPLLään ) algoritmi on valmis , vetäytymistä -pohjainen hakualgoritmi varten päättää satisfiability on propositionaalinen logiikan kaavojen vuonna konjunktiivisessa normaalissa muodossa eli ratkaisemiseksi CNF-SAT ongelma.
Se otettiin käyttöön vuonna 1961 Martin Davis , George Logemann ja Donald W. Loveland ja on paranneltu aiemman Davis-Putnam algoritmi , joka on resoluutio -pohjaista menettelyä kehittämä Davis ja Hilary Putnam vuonna 1960. Varsinkin vanhemmissa julkaisuissa Davis – Logemann – Loveland-algoritmia kutsutaan usein "Davis-Putnam-menetelmäksi" tai "DP-algoritmiksi". Muita yleisiä nimiä, jotka säilyttävät eron, ovat DLL ja DPLL.
Yli 50 vuoden jälkeen DPLL-menettely muodostaa edelleen perustan tehokkaimmille täydellisille SAT-ratkaisijoille. Se on hiljattain laajennettu varten automatisoitu lause osoittautumassa varten fragmenttien ensimmäisen kertaluvun logiikan Poiketen DPLL (T) algoritmia.
Toteutukset ja sovellukset
SAT ongelma on tärkeä sekä teoreettisesta ja käytännön näkökulmasta. Vuonna vaativuusteoriassa se oli ensimmäinen ongelma osoittautui NP-täydellisiä , ja voi esiintyä monenlaisia sovelluksia, kuten malli tarkkailun , automatisoitu suunnittelu ja aikataulutus , ja diagnoosi tekoälyyn .
Sellaisena se on ollut kuuma tutkimuskohde monien vuosien ajan, ja SAT-ratkaisijoiden välisiä kilpailuja järjestetään säännöllisesti. DPLLään moderni toteutuksia kuten akanat ja zChaff , GRASP tai MiniSat ovat ensimmäisistä paikoista kilpailujen näihin viimeisiin vuosiin.
Toinen sovellus, johon liittyy usein DPLL, on automatisoitu lauseen todistaminen tai tyydyttävyysmoduliteoriat (SMT), joka on SAT-ongelma, jossa propositionaaliset muuttujat korvataan toisen matemaattisen teorian kaavoilla .
Algoritmi
Peruspalautusalgoritmi suoritetaan valitsemalla literaali, osoittamalla sille totuusarvo , yksinkertaistamalla kaavaa ja tarkistamalla sitten rekursiivisesti, onko yksinkertaistettu kaava tyydyttävä; jos näin on, alkuperäinen kaava on tyydyttävä; muuten sama rekursiivinen tarkistus tehdään olettaen päinvastainen totuusarvo. Tätä kutsutaan jakosäännöksi , koska se jakaa ongelman kahteen yksinkertaisempaan alaongelmaan. Yksinkertaistamisvaihe poistaa olennaisesti kaikki lauseesta totta tulevat lausekkeet kaavasta ja kaikki väärät literaalit muista lauseista.
DPLL-algoritmi parantaa backtrack-algoritmia hyödyntämällä innokkaasti seuraavia sääntöjä kussakin vaiheessa:
- Yksikön eteneminen
- Jos lauseke on yksikkölauseke eli se sisältää vain yhden määrittelemättömän literaalin, tämä lauseke voidaan tyydyttää vain osoittamalla tarvittava arvo tämän kirjaimen totta pitämiseksi. Siksi mitään valintaa ei tarvita. Yksikön eteneminen käsittää jokaisen yksikkölausekkeen kirjaimen sisältävän lauseen poistamisen ja yksikkölausekkeen kirjaimen täydennyksen hylkäämisen jokaisesta lausekkeesta, joka sisältää kyseisen täydennyksen. Käytännössä tämä johtaa usein deterministisiin yksiköiden kaskadeihin välttäen siten suuren osan naiivista hakutilasta.
- Puhdas kirjaimellinen eliminointi
- Jos propositiomuuttuja esiintyy kaavassa vain yhdellä napaisuudella, sitä kutsutaan puhtaaksi . Puhdas literaali voidaan aina osoittaa tavalla, joka tekee kaikista sen sisältävistä lausekkeista totta. Siten, kun sille määritetään näin, nämä lausekkeet eivät enää rajoita hakua, ja ne voidaan poistaa.
Tietyn osittaisen tehtävän epätyydyttävyys havaitaan, jos yksi lause tyhjennetään, ts. Jos kaikki sen muuttujat on osoitettu tavalla, joka tekee vastaavista literaaleista vääriä. Kaavan tyydyttävyys havaitaan joko silloin, kun kaikki muuttujat osoitetaan luomatta tyhjää lausetta, tai nykyaikaisissa toteutuksissa, jos kaikki lausekkeet täyttyvät. Koko kaavan epätyydyttävyys voidaan havaita vasta tyhjentävän haun jälkeen.
DPLL-algoritmi voidaan tiivistää seuraavaan pseudokoodiin, jossa Φ on CNF- kaava:
Algorithm DPLL
Input: A set of clauses Φ.
Output: A Truth Value.
function DPLL(Φ)
if Φ is a consistent set of literals then
return true;
if Φ contains an empty clause then
return false;
for every unit clause {l} in Φ do
Φ ← unit-propagate(l, Φ);
for every literal l that occurs pure in Φ do
Φ ← pure-literal-assign(l, Φ);
l ← choose-literal(Φ);
return DPLL(Φ ∧ {l}) or DPLL(Φ ∧ {not(l)});
- "←" tarkoittaa tehtävää . Esimerkiksi, " suurin ← erä " tarkoittaa, että arvo suurin muutokset arvoon kohteen .
- " return " lopettaa algoritmin ja antaa seuraavan arvon.
Tässä pseudokoodissa, unit-propagate(l, Φ)ja ne pure-literal-assign(l, Φ)ovat funktioita, jotka palauttavat tulosyksikön etenemisen ja puhtaan literaalisäännön soveltamisen seurauksena literaaliin lja kaavaan Φ. Toisin sanoen ne korvaavat kaavassa jokaisen esiintymän lsanalla "tosi" ja jokaisen not l"väärän" esiintymisen Φja yksinkertaistavat tuloksena olevaa kaavaa. orEttä returnselvitys on oikosulkuaika operaattori . tarkoittaa yksinkertaistettua tulosta, kun "true" korvataan in .
Φ ∧ {l}lΦ
Algoritmi päättyy yhdessä kahdesta tapauksesta. Joko CNF kaava Φon todettu käsittää yhdenmukaisia literaalien -se on, ei ole lja ¬lmitään kirjaimellisesti lkaavassa (on vain puhdasta literaaleja). Jos näin on, muuttujat voidaan triviaalisesti tyydyttää asettamalla ne arvonmäärityksen sisältävän kirjaimen vastaavaan napaisuuteen. Muussa tapauksessa, kun kaava sisältää tyhjän lausekkeen, lauseke on epätosi väärä, koska disjunktio vaatii ainakin yhden jäsenen, joka on tosi, jotta kokonaisuus olisi totta. Tällöin tällaisen lausekkeen olemassaolo tarkoittaa, että kaava (jota arvioidaan kaikkien lausekkeiden yhteyteen ) ei voi arvioida totta ja sen on oltava tyytymätön.
Näennäiskoodin DPLL-funktio palauttaa vain, täyttääkö lopullinen tehtävä kaavan vai ei. Todellisessa toteutuksessa osittain tyydyttävä tehtävä palautetaan tyypillisesti myös onnistumisen yhteydessä; tämä voidaan johtaa iffunktion ensimmäisen lauseen yhdenmukaisesta literaalisarjasta .
Davis – Logemann – Loveland-algoritmi riippuu haarautuvan literaalin valinnasta , joka on kirjain , jota tarkastellaan takaisinkytkentävaiheessa. Tämän seurauksena tämä ei ole tarkalleen algoritmi, vaan pikemminkin algoritmien perhe, yksi jokaiselle mahdolliselle tavalle valita haarautuva literaali. Haarautuvan literaalin valinta vaikuttaa voimakkaasti tehokkuuteen: on tapauksia, joissa ajoaika on vakio tai eksponentiaalinen haarautuvien literaalien valinnasta riippuen. Tällaisia valintatoimintoja kutsutaan myös heuristisiksi funktioksi tai haarautuvaksi heuristikoksi.
Visualisointi
Davis, Logemann, Loveland (1961) oli kehittänyt tämän algoritmin. Jotkut tämän alkuperäisen algoritmin ominaisuudet ovat:
- Se perustuu hakuun.
- Se on perusta melkein kaikille moderneille SAT-ratkaisijoille.
- Siinä ei käytetä oppimista tai ei-kronologista takaisinkytkentää (käyttöön otettu vuonna 1996).
Esimerkki DPLL-algoritmin visualisoinnista, jolla on aikajärjestys:
Tehtyämme useita päätöksiä löydämme implikaatiokaavion, joka johtaa konfliktiin.
Tämänhetkinen työ
2010-luvulla työtä algoritmin parantamiseksi on tehty kolmeen suuntaan:
- Eri käytäntöjen määrittäminen haarautuvien literaalien valitsemiseksi.
- Uusien tietorakenteiden määrittely algoritmin nopeuttamiseksi, erityisesti yksikön etenemistä koskeva osa .
- Peruspalautusalgoritmin muunnokset. Jälkimmäinen suunta sisältävät ei-kronologista vetäytymistä (aka backjumping ) ja lauseke oppimista . Nämä tarkennukset kuvaavat takaisinkelausmenetelmää konfliktilausekkeen saavuttamisen jälkeen, joka "oppii" konfliktin perimmäiset syyt (muuttujille osoitukset) välttääkseen samaan konfliktiin pääsemisen uudelleen. Tuloksena olevat konfliktien ohjaamat lausekkeet oppivat SAT-ratkaisijat ovat huipputasoa vuonna 2014.
Uudempi algoritmi vuodelta 1990 on Stålmarckin menetelmä . Myös vuodesta 1986 lähtien (pienennetty järjestetty) binäärisiä päätöskaavioita on käytetty SAT-ratkaisuun.
Suhde muihin käsitteisiin
DPLL-pohjaisten algoritmien suorittaminen epätyydyttävissä esiintymissä vastaavat puun tarkkuuden kumoamisnäyttöjä.
Katso myös
Viitteet
Kenraali
- Davis, Martin ; Putnam, Hilary (1960). "Kvantifiointiteorian laskentamenetelmä" . ACM: n lehti . 7 (3): 201–215. doi : 10.1145 / 321033.321034 .
- Davis, Martin; Logemann, George; Loveland, Donald (1961). "Koneohjelma lauseen osoittamiseksi" . ACM: n viestintä . 5 (7): 394–397. doi : 10.1145 / 368273.368557 . HDL : 2027 / mdp.39015095248095 .
- Ouyang, Ming (1998). "Kuinka hyviä haarautumissäännöt ovat DPLL: ssä?" . Diskreetti sovellettu matematiikka . 89 (1–3): 281–286. doi : 10.1016 / S0166-218X (98) 00045-6 .
- John Harrison (2009). Käytännön logiikan ja automatisoidun päättelyn käsikirja . Cambridge University Press. s. 79–90. ISBN 978-0-521-89957-4.
Erityinen
Lisälukemista
- Malaiji Ganai; Aarti Gupta; Tohtori Aarti Gupta (2007). SAT-pohjaiset skaalattavat muodolliset todentamisratkaisut . Springer. s. 23–32. ISBN 978-0-387-69166-4.
- Gomes, Carla P .; Kautz, Henry; Sabharwal, Ashish; Selman, Bart (2008). "Tyydyttävyyden ratkaisijat". Julkaisussa Van Harmelen, Frank; Lifschitz, Vladimir; Porter, Bruce (toim.). Tietojen edustamisen käsikirja . Tekoälyn perusteet. 3 . Elsevier. s. 89–134. doi : 10.1016 / S1574-6526 (07) 03002-7 . ISBN 978-0-444-52211-5.