Vincolo del problema di soddisfazione (CSP) vs. soddisfacibilità modulo modulo (SMT); con una coda sulla programmazione dei vincoli


30

Qualcuno osa tentare di chiarire qual è la relazione tra questi campi di studio o forse dare una risposta più concreta a livello di problemi? Come quale include quale assumendo alcune formulazioni ampiamente accettate. Se ho capito bene, quando passi da SAT a SMT stai praticamente entrando nel campo del CSP; viceversa, se limiti CSP ai booleani, stai fondamentalmente parlando di SAT e forse di alcuni problemi correlati come #SAT. Penso che sia molto chiaro (ad esempio, cfr. Il capitolo "Un approccio logico alla soddisfazione dei vincoli" di Kolaitis e Vardi nella teoria dei modelli finiti e nelle sue applicazionidi Grädel et al.), ma ciò che è meno chiaro per me è quando i vincoli "modulo a teoria" e quando non lo sono? SMT implica sempre che la teoria utilizza solo i vincoli di uguaglianza e disuguaglianza sono sempre nel campo più ampio di CSP? Per quanto ne so, puoi spesso introdurre variabili allentate , quindi la distinzione [se esiste] è meno che ovvia.

Il relativamente recente "Manuale di soddisfazione" (IOP Press 2009) raccoglie i problemi di SMT e CSP sotto il suo ampio ombrello di "soddisfacibilità", ma dato il modo in cui è strutturato (capitoli scritti da vari autori) non mi aiuta davvero a capire questo .

Spero che la terminologia diventi meno confusa quando parli di programmazione di vincoli , che (per analogia con il termine "programmazione matematica") spero coinvolga minimizzare / massimizzare alcune funzioni oggettive. L'articolo di Wikipedia sulla programmazione dei vincoli è purtroppo così vago che non posso davvero dire se questo inquadramento si verifica però. Quello che posso trarre da Essentials of Constraint Programming di Frühwirth e Abdennadher (p. 56) è che un "risolutore di vincoli" di solito fornisce più di un semplice verificatore di soddisfacibilità, con la semplificazione ecc. Importante nella pratica.

Sebbene questa non sia una vera domanda di ricerca sulla teoria CS, non mi aspetto buone risposte a questo sul sito CS.SE degli studenti dato quello che ho visto su https://cs.stackexchange.com/questions/14946/distinguish- decisione-procedura-vs-smt-solver-vs-teorema-prover-vs-vincolo-sol (che contiene molte parole ma non quella che considererei una vera risposta, ahimè).


aggiungi a questo ASP. SMT / ASP sviluppi relativamente recenti. i campi precedentemente separati si stanno fondendo. vedi ad esempio strumenti di ragionamento automatico ibrido: da Black-box a Clear-box Integration / Balduccini, Lierler come recente recente sondaggio.
venerdì

Risposte:


47

SAT, CP, SMT, (gran parte) di ASP affrontano tutti lo stesso insieme di problemi di ottimizzazione combinatoria. Tuttavia, vengono a questi problemi da diverse angolazioni e con diverse cassette degli attrezzi. Queste differenze sono in gran parte nel modo in cui ciascun approccio struttura le informazioni sull'esplorazione dello spazio di ricerca. La mia analogia di lavoro è che SAT è il codice macchina, mentre gli altri sono linguaggi di livello superiore.

X1X2¯X3{(X1,0),(X2,1),(X3,0)}X1X3X2X1X2¯X3X4X1X2¯X3X4¯X5

Viene mantenuta un'approssimazione della struttura della clausola per restringere il set di soluzioni e per aiutare a determinare se questo set è vuoto. Durante la ricerca alcuni incarichi parziali potrebbero non essere contenuti in alcuna soluzione (anche se soddisfano individualmente ciascuno dei vincoli nell'istanza). Questi sono conosciuti come nogoods , un termine introdotto da ("Mr GNU") Stallman e SussmanX5X=5. Quindi non esiste una singola struttura generale della clausola, ma una associata a ciascuna scelta di rappresentazione, a seconda di ciò che rappresentano i singoli (letterali) della struttura della clausola.

La programmazione dei vincoli (CP) era tradizionalmente una disciplina di intelligenza artificiale, con particolare attenzione alla programmazione, all'orario e ai problemi combinatori, e quindi ha un ruolo centrale per le variabili che possono assumere più di due soli valori (ma di solito solo finitamente molti). CP ha sottolineato la ricerca efficiente e, motivato dalle applicazioni tradizionali, ha dato un ruolo centrale al all-differentvincolo (iniettività), ma ha anche sviluppato propagatori efficienti per molti altri tipi di vincoli. Le definizioni formali di CP esistono da almeno le reti di vincoli di Montanari del 1974, con i precursori che risalgono anche prima. Questo peso della storia potrebbe aver contribuito a ritardare il CP rispetto ad altri approcci nelle prestazioni allo scoperto nell'ultimo decennio. CP mantiene classicamente un'approssimazione del complemento della struttura della clausola, tramite un insieme di domini attivi per le variabili. Lo scopo è quello di eliminare i valori dai domini attivi, esplorando la struttura della clausola cercando di assegnare valori candidati alle variabili e backtracking quando necessario.

Le teorie sul modulo di soddisfazione (SMT) sono emerse dalla comunità di verifica. Ogni teoria in un risolutore SMT forma una rappresentazione implicita di potenzialmente infinite clausole SAT. Le teorie utilizzate con SMT e i vincoli utilizzati nel CP riflettono le loro diverse applicazioni storiche. La maggior parte delle teorie che SMT considera hanno a che fare con array indicizzati in numeri interi, campi reali chiusi, ordini lineari e simili; questi derivano dall'analisi statica dei programmi (nella verifica assistita da calcolatore) o durante la formalizzazione di prove matematiche (nel ragionamento automatizzato). Al contrario, nell'orario e nella pianificazione il vincolo di iniettività è centrale, e sebbene il linguaggio SMTLIB standard abbia avuto un vincolo di iniettività sin dal suo inizio nel 2003 (tramite ildistinct simbolo ), fino al 2010 i solutori SMT sono stati implementatidistinct tramite un algoritmo ingenuo. A quel punto la tecnica di abbinamento del propagatore CP standard per è all-differentstata trasferita, con grande effetto se applicata a grandi elenchi di variabili; vedi Un risolutore di vincoli Alldifferent in SMT di Banković e Marić, SMT 2010. Inoltre, la maggior parte dei propagatori di CP sono progettati per problemi con domini finiti, mentre le teorie SMT standard si occupano di domini infiniti (numeri interi e reals più recenti) pronti all'uso. SMT utilizza un'istanza SAT come approssimazione della struttura della clausola, estraendo le clausole nogood dalle teorie appropriate. Una bella panoramica è la Teoria del Modulo di Soddisfazione: Introduzione e Applicazioni di De Moura e Bjørner, doi: 10.1145 / 1995376.1995394.

La programmazione del set di risposte (ASP) è nata dalla programmazione logica. A causa della sua attenzione alla risoluzione del problema più generale della ricerca di un modello stabile, e anche perché consente la quantificazione universale oltre che esistenziale, ASP per molti anni non è stato competitivo con CP o SMT.

Formalmente, SAT è CSP su domini booleani, ma il focus su SAT sull'apprendimento delle clausole, una buona euristica per il rilevamento dei conflitti e modi rapidi per tornare indietro sono abbastanza diversi dal tradizionale focus CSP sui propagatori, stabilendo coerenza ed euristica per l'ordinamento variabile. SAT è di solito estremamente efficiente, ma per molti problemi è necessario un grande sforzo per esprimere prima il problema come istanza SAT. L'uso di un paradigma di livello superiore come CP può consentire un'espressione più naturale del problema, quindi l'istanza CP può essere tradotta in SAT a mano o uno strumento può occuparsi della traduzione. Una bella panoramica dei principi fondamentali di SAT è Sui moderni risolutori della soddisfazione dell'apprendimento delle clausole di Pipatsrisawat e Darwiche, doi: 10.1007 / s10817-009-9156-3 .

Passiamo ora dalle generalità ai dettagli di oggi.

Nell'ultimo decennio alcune persone in CP hanno iniziato a concentrarsi sulla generazione di clausole pigre (LCG). Questo è essenzialmente un modo per riunire i propagatori CP usando tecniche più flessibili simili a quelle delle SMT piuttosto che l'astrazione piuttosto rigida dei domini attivi. Ciò è utile perché esiste una lunga storia di propagatori di CP pubblicati per rappresentare e risolvere efficacemente molti tipi di problemi. (Naturalmente, un effetto simile si otterrebbe con uno sforzo concertato per implementare nuove teorie per i risolutori di SMT.) LCG ha prestazioni spesso competitive con SMT e per alcuni problemi potrebbe essere superiore. Una rapida panoramica è il documento CPAIOR 2010 di Stuckey Lazy Clause Generation: combinare la potenza della risoluzione SAT e CP (e MIP?) , Doi: 10.1007 / 978-3-642-13520-0_3. Vale anche la pena leggere il position paper di Garcia de la Banda, Stuckey, Van Hentenryck e Wallace, che dipinge una visione incentrata sul CP di The Future of Optimization Technology , doi: 10.1007 / s10601-013-9149-z .

Per quanto ne so, gran parte dell'attenzione della recente ricerca SMT sembra essersi spostata verso applicazioni in metodi formali e matematica formalizzata. Un esempio è la ricostruzione delle prove trovate dai risolutori SMT all'interno di sistemi di prova come Isabelle / HOL, costruendo tattiche Isabelle / HOL per riflettere le regole di inferenza nelle tracce di prove SMT; vedi Ricostruzione rapida delle prove in stile LCF per Z3 di Böhmer e Weber a ITP 2010.

I migliori solutori ASP sono stati sviluppati negli ultimi anni per diventare competitivi con solutori solo CP, SMT e SAT. Ho solo vagamente familiarità con i dettagli dell'implementazione che hanno permesso ai risolutori come claspessere competitivi, quindi non posso davvero confrontarli con SMT e CP, ma Clasp pubblicizza esplicitamente la sua attenzione sull'apprendimento dei nogood.

Attraversare i confini tradizionali tra questi formalismi è la traduzione da rappresentazioni di problemi più astratti in formalismi di livello inferiore implementabili in modo efficiente. Molti dei migliori risolutori di ASP e CP ora traducono esplicitamente il loro input in un'istanza SAT, che viene quindi risolta utilizzando un solutore SAT standard. In CP, l' assistente alla modellazione dei vincoli di Savile Row utilizza tecniche di progettazione del compilatore per tradurre i problemi espressi nel linguaggio di medio livello Essence in un formalismo di livello inferiore, adatto per l'input ai solutori di CP come Minion o MiniZinc . Originariamente Savile Row ha lavorato con una rappresentazione CP come formalismo di basso livello, ma ha introdotto SAT come obiettivo nella versione 1.6.2. Inoltre, l' Essenza linguistica di livello ancora superioreora può essere automaticamente tradotto in Essence 'dallo strumento Conjure . Allo stesso tempo, i solutori di basso livello solo SAT come Lingeling continuano ad essere perfezionati ogni anno, più recentemente alternando fasi di apprendimento e elaborazione delle clausole; guarda la breve panoramica Novità delle competizioni SAT e ASP di Heule e Schaub nell'AAAI 2015.

L'analogia con la storia dei linguaggi di programmazione sembra quindi appropriata. SAT sta diventando una sorta di "codice macchina", indirizzato a un modello di basso livello di esplorazione delle clausole nella struttura delle clausole. I paradigmi astratti stanno diventando più simili ai linguaggi informatici di livello superiore, con le loro metodologie e applicazioni distinte sono bravi ad affrontare. Infine, la raccolta sempre più densa di collegamenti tra questi diversi livelli sta iniziando a somigliare all'ecosistema di ottimizzazione del compilatore.


Grazie per questa risposta molto utile.
Xavier Labouze,

2
Nota: nella comunità FOCS / STOC viene utilizzata una definizione più ristretta di CSP. Questi CSP sono nella forma CSP (L), "tutte le istanze CSP che possono essere espresse usando un insieme fisso L di relazioni di vincolo". Il vincolo completamente diverso non rientra in questo framework, né problemi che hanno una struttura ad albero.
András Salamon,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.