Esiste un algoritmo a volte efficiente per risolvere #SAT?


24

Sia una formula booleana composta dai soliti operatori AND, OR e NOT e da alcune variabili. Vorrei contare il numero di soddisfare le assegnazioni per . Cioè, voglio trovare il numero di diverse assegnazioni di valori di verità alle variabili di per le quali assume un valore vero. Ad esempio, la formula ha tre compiti soddisfacenti; ha quattro. Questo è il problema #SAT .BBBBab(ab)(c¬b)

Ovviamente una soluzione efficiente a questo problema implicherebbe una soluzione efficiente a SAT, che è improbabile, e in realtà questo problema è # P-completo, e quindi potrebbe essere strettamente più difficile di SAT. Quindi non mi aspetto una soluzione garantita ed efficiente.

Ma è risaputo che esistono relativamente pochi casi davvero difficili della SAT stessa. (Vedi ad esempio Cheeseman 1991, "Dove sono i problemi davvero difficili" .) La ricerca ordinaria potata, sebbene esponenziale nel caso peggiore, può risolvere molti casi in modo efficiente; i metodi di risoluzione, sebbene esponenziali nel peggiore dei casi, sono ancora più efficienti nella pratica.

La mia domanda è:

Sono noti algoritmi che possono contare rapidamente il numero di assegnazioni soddisfacenti di una tipica formula booleana, anche se tali algoritmi richiedono tempo esponenziale nell'istanza generale? C'è qualcosa di sensibilmente migliore che elencare ogni possibile incarico?


1
Ho provato ad aggiungere un tag per # p-completezza, ma al software Stack Exchange non piace il segno #.
Mark Dominus,

Starei attento a sostenere che "ci sono relativamente pochi casi davvero difficili di SAT stesso". Credo che l'articolo che colleghi in realtà parli di -SAT casuale . Inoltre, il fenomeno della transizione di fase si applica solo alle istanze casuali. Ci sono molti casi difficili di artigianato, industriale ecc. Di SAT. K
Juho,

Grazie. Pensi che questo tende a rendere meno chiara la mia domanda? Capisci cosa sto chiedendo?
Mark Dominus,

Per me è chiaro. È solo importante ricordare quali esempi mostrano la transizione di fase :)
Juho

Risposte:


21

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.


8

Oltre agli articoli elencati da Juho, eccone alcuni altri che descrivono il lavoro su questo argomento, in particolare sull'approssimazione del numero di soluzioni:

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.