Conteggio nel caso generale
Il problema che ti interessa è noto come #SAT o conteggio dei modelli. In un certo senso, è il classico problema # P-completo. Il conteggio dei modelli è difficile, anche per -SAT! Non sorprende che i metodi esatti possano gestire solo istanze con circa centinaia di variabili. Esistono anche metodi approssimativi e potrebbero essere in grado di gestire istanze con circa 1000 variabili.2
I metodi di conteggio esatti si basano spesso sulla ricerca esaustiva in stile DPLL o su una sorta di raccolta di conoscenze. I metodi approssimativi sono generalmente classificati come metodi che forniscono stime rapide senza garanzie e metodi che forniscono limiti inferiori o superiori con una garanzia di correttezza. Esistono anche altri metodi che potrebbero non rientrare nelle categorie, come la scoperta di backdoor o metodi che insistono su determinate proprietà strutturali da conservare sulle formule (o sul loro grafico dei vincoli).
Ci sono implementazioni pratiche là fuori. Alcuni contatori di modello esatti sono CDP, Relsat, Cachet, sharpSAT e c2d. Il tipo di tecniche principali utilizzate dai solutori esatti sono conteggi parziali, analisi dei componenti (del grafico dei vincoli sottostanti), memorizzazione nella cache di formula e componenti e ragionamento intelligente su ciascun nodo. Un altro metodo basato sulla compilazione della conoscenza converte la formula di input CNF in un'altra forma logica. Da questo modulo è possibile dedurre facilmente il conteggio dei modelli (tempo polinomiale delle dimensioni della formula appena prodotta). Ad esempio, si potrebbe convertire la formula in un diagramma di decisione binario (BDD). Si potrebbe quindi attraversare il BDD dalla foglia "1" alla radice. O per un altro esempio, il c2d impiega un compilatore che trasforma le formule CNF in forma normale di negazione determinabile decomposibile (d-DNNF).
Se le tue istanze diventano più grandi o non ti interessa essere esatte, esistono anche metodi approssimativi. Con metodi approssimativi, ci preoccupiamo e consideriamo la qualità della stima e la correttezza della fiducia associate alla stima riportata dal nostro algoritmo. Un approccio di Wei e Selman [2] utilizza il campionamento MCMC per calcolare un'approssimazione del conteggio dei modelli reali per la formula di input. Il metodo si basa sul fatto che se si può campionare (quasi) in modo uniforme dall'insieme di soluzione di una formula , si può calcolare una buona stima del numero di soluzioni di .φφ
Gogate e Dechter [3] usano una tecnica di conteggio dei modelli nota come SampleMinisat. Si basa sul campionamento dallo spazio di ricerca senza backtrack di una formula booleana. La tecnica si basa sull'idea di ricampionamento di importanza, utilizzando solutori SAT basati su DPLL per costruire lo spazio di ricerca senza backtrack. Questo potrebbe essere fatto completamente o fino a una approssimazione. È anche possibile il campionamento per stime con garanzie. Basandosi su [2], Gomes et al. [4] ha dimostrato che utilizzando il campionamento con una strategia randomizzata modificata, si possono ottenere limiti inferiori dimostrabili sul conteggio totale dei modelli con garanzie di correttezza probabilistica elevata.
C'è anche un lavoro che si basa sulla propagazione delle credenze (BP). Vedi Kroc et al. [5] e il BPCount introducono. Nello stesso articolo, gli autori forniscono un secondo metodo chiamato MiniCount, per fornire limiti superiori al conteggio dei modelli. Esiste anche un quadro statistico che consente di calcolare limiti superiori in base a determinati presupposti statistici.
Algoritmi per # 2-SAT e # 3-SAT
Se limiti la tua attenzione a # 2-SAT o # 3-SAT, ci sono algoritmi che funzionano rispettivamente in e per questi problemi [1]. Vi sono lievi miglioramenti per questi algoritmi. Ad esempio, Kutzkov [6] è migliorato sul limite superiore di [1] per # 3-SAT con un algoritmo in esecuzione nel tempo .O ( 1.3247n)O ( 1.6894n)O ( 1.6423n)
Come nella natura del problema, se si desidera risolvere le istanze in pratica, molto dipende dalle dimensioni e dalla struttura delle istanze. Più sai, più sei capace nella scelta del metodo giusto.
[1] Vilhelm Dahllöf, Peter Jonsson e Magnus Wahlström. Conteggio delle assegnazioni soddisfacenti in 2-SAT e 3-SAT. In Atti dell'ottava conferenza internazionale annuale di informatica e combinatoria (COCOON-2002), 535-543, 2002.
[2] W. Wei e B. Selman. Un nuovo approccio al conteggio dei modelli. In Atti del SAT05: 8ª Conferenza internazionale sulla teoria e le applicazioni dei test di soddisfazione, volume 3569 di Lecture Notes in Computer Science, 324-339, 2005.
[3] R. Gogate e R. Dechter. Conteggio approssimativo campionando lo spazio di ricerca senza backtrack. In Atti di AAAI-07: 22ª Conferenza nazionale sull'intelligenza artificiale, 198–203, Vancouver, 2007.
[4] CP Gomes, J. Hoffmann, A. Sabharwal e B. Selman. Dal campionamento al conteggio dei modelli. In Atti di IJCAI-07: XX Conferenza congiunta internazionale sull'intelligenza artificiale, 2293–2299, 2007.
[5] L. Kroc, A. Sabharwal e B. Selman. Sfruttando la propagazione delle credenze, la ricerca di backtrack e le statistiche per il conteggio dei modelli. In CPAIOR-08: 5ª Conferenza internazionale sull'integrazione di AI e tecniche OR nella programmazione dei vincoli, volume 5015 di Lecture Notes in Computer Science, 127–141, 2008.
[6] K. Kutzkov. Nuovo limite superiore per il problema # 3-SAT. Lettere di elaborazione delle informazioni 105 (1), 1-5, 2007.