Enumera tutte le soluzioni di un problema SAT


11

Tutti i solutori #SAT che conosco, ad esempio RelSat, C2D, restituiscono solo il numero di istanze soddisfacenti. Ma voglio sapere ognuno di quei casi?

Esiste un tale solutore #SAT o come dovrei modificare un solutore #SAT disponibile per farlo?

Grazie.


7
Questo è spesso chiamato "solutore SAT per tutte le soluzioni", ma non sembra essere disponibile immediatamente. I riferimenti che posso trovare parlano di modifiche a MiniSAT e altri risolutori, di solito aggiungendo clausole di blocco per escludere una soluzione quando viene trovata. D'altra parte, la maggior parte dei risolutori di vincoli supporta la generazione standard di tutte le soluzioni.
András Salamon,

un approccio è una conversione CNF → DNF per la quale c'è molta letteratura
vzn

Risposte:


13

Stai cercando un solutore SAT ALL-SAT o di tutte le soluzioni. Questo è un problema diverso da #SAT. Non è necessario enumerare tutte le soluzioni per contarle.

Non conosco uno strumento che risolva il tuo problema perché le persone aggiungono questi algoritmi ai solutori SAT esistenti ma raramente sembrano rilasciare queste estensioni. Di seguito sono riportati due documenti che dovrebbero aiutarti a modificare un risolutore CDCL per implementare ALL-SAT.

Risolutore satellitare All-Solutions efficiente in memoria e sua applicazione alla raggiungibilità , O. Grumberg, A. Schuster, A. Yadgar, FMCAD 2004

Ecco un recente articolo pubblicato su arXiv.

Estensione di solutori SAT moderni per l'enumerazione di tutti i modelli , Said Jabbour, Lakhdar Sais, Yakoub Salhi, 2013

Potresti provare a contattare questi autori per la loro implementazione.


Per il secondo documento è sufficiente fare clic sulla prima versione v1 per vederlo.
Tayfun paga il

Questo recente documento sembra correlato: homes.cs.washington.edu/~sudeepa/UAI2013-ModelCounting.pdf
Kaveh,

1
@Kaveh, credo che l'OP chieda un risolutore ALLSAT o un modo per trasformare un risolutore #SAT in un risolutore ALLSAT. Questo è un documento con limiti inferiori per #SAT. Non sono sicuro che aiuti l'OP.
Vijay D,

2

Ho trovato un documento più recente (2014) su All-SAT in una conferenza VLSI, quindi è decisamente orientato verso il lato pratico (che sembra in sintonia con la domanda del PO qui, anche se meno con cstheory.SE in generale):

  • "Tutte le SAT utilizzando clausole di blocco minime" di Yinlei Yu, Pramod Subramanyan, Nestan Tsiskaridze, Sharad Malik, VLSI Design 2014. doi: 10.1109 / VLSID.2014.22 .

Per quelli senza abbonamento IEEE, c'è una copia gratuita sulla pagina web di Princeton di Subramanyan . (Utilizza un servizio di condivisione file per archiviare / distribuire copie dei suoi documenti e non sono sicuro di quanto siano stabili quegli URL, quindi questo link di rotonda.)

L'essenza di questo documento sembra essere:

Il nostro contributo, l'algoritmo Non-Disjoint-Dec, genera clausole di blocco estremamente brevi che non contengono alcuna delle variabili implicite nel solutore. Si noti che in genere la maggior parte delle variabili in un minterm soddisfacente sono implicite. Le clausole di blocco brevi sono molto utili per le prestazioni del risolutore, come dimostrato dalla valutazione.

La loro implementazione si basa su MiniSat. Il codice sorgente per la loro estensione non sembra essere disponibile al pubblico però. Purtroppo questa sembra essere un'abitudine nel campo di All-SAT, quindi i documenti in quest'area che contengono risultati sperimentali impostano semplicemente un algoritmo più o meno semplice da battere e raramente possono essere confrontati direttamente (in termini di sperimentazione risultati) con qualsiasi altro algoritmo pubblicato per All-SAT. L'articolo di Jabbour et al. anche menzionato da Vijay D è di questo tipo.

Poiché non lo vedo menzionato nell'altra risposta (ma solo nel commento di András Salamon), la tecnica [piuttosto popolare] delle clausole di blocco è stata introdotta in:

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.