Perché c'è un'enorme differenza tra i solutori SAT?


25

I solutori di SAT sono molto importanti negli attacchi algebrici , ad esempio walkingat e minisat .

Tuttavia, quando si risolvono i problemi di benchmark disponibili qui c'è un'enorme differenza di prestazioni tra i due: Walksat è molto più veloce di minisat per questi problemi. Perchè è questo?

Questa implementazione di walkingat sembra avere alcuni miglioramenti delle prestazioni - c'è qualche motivo per cui non è stata inclusa nelle competizioni internazionali SAT ?


La tua seconda domanda, sul perché un certo algoritmo è stato escluso da una certa concorrenza, è probabilmente fuori portata per questo sito. La tua prima domanda, su ciò che rende un algoritmo spesso più veloce di un altro, penso che sia un gioco corretto, ma potrebbe essere necessario riformulare per renderlo più favorevole alla teoria.
Lev Reyzin

Breve nota: Minisat è piuttosto vecchio, non sembra mantenuto e non ha nemmeno partecipato al concorso. Inoltre, cosa intendi con "enorme" e a quale traccia ti riferisci (random / crafted / application)?
Radu GRIGore,

5
@Radu: MiniSAT 2.2.0 è stato rilasciato nel luglio 2010. Non direi che non viene mantenuto. Inoltre, il codice è abbastanza stabile e pulito, quindi gli aggiornamenti rari potrebbero non essere un problema. Concordo però che i solutori più recenti riflettono meglio lo stato dell'arte.
Vijay D,

1
Domanda inviata in modo incrociato da Crypto.SE crypto.stackexchange.com/questions/153/… .
M. Alaggan,

Risposte:


33

Sì, c'è una grande differenza tra MiniSAT e WalkSAT. Innanzitutto, chiariamo: MiniSAT è un'implementazione specifica della classe generica di algoritmi DPLL / CDCL che utilizzano il backtracking e l'apprendimento delle clausole, mentre WalkSAT è il nome generale di un algoritmo che alterna passaggi avidi e passaggi casuali.

In generale DPLL / CDCL è molto più veloce su istanze SAT strutturate mentre WalkSAT è più veloce su k-SAT casuale . Le istanze SAT industriali e applicate tendono ad avere molta struttura, quindi DPLL / CDCL è dominante nella maggior parte dei solutori SAT moderni. Tuttavia, l'istanza all'istanza di una tecnica può essere vincente, motivo per cui i risolutori di portafoglio sono diventati popolari.

Ho molti problemi con la tua affermazione che WalkSAT è molto più veloce di MiniSAT nelle istanze di quella pagina. Per prima cosa, ci sono gigabyte di istanze SAT lì - su quanti hai provato a confrontarle? WalkSAT non è affatto competitivo nelle istanze più strutturate, motivo per cui non viene spesso visto nelle competizioni.

Nota a margine: Vijay ha ragione sul fatto che MiniSAT è ancora rilevante. In realtà, poiché è open source e ben scritto, MiniSAT è il risolutore da battere per dimostrare che una determinata ottimizzazione ha promesso. Molte persone modificano MiniSAT stesso per mostrare le proprie ottimizzazioni - dai un'occhiata alla categoria "MiniSAT hack" nelle recenti competizioni SAT.


17

AXYBYX

Un buon documento da leggere su questo argomento è questo di Nudelman et al . Lo scopo di questo articolo è determinare le caratteristiche facili da calcolare delle istanze SAT che possono dirti quali algoritmi potrebbero funzionare bene e quali no. Utilizzando questa tecnica è possibile creare un algoritmo basato su portfolio che analizzerà rapidamente un'istanza problematica, quindi risolverà l'istanza con l'algoritmo più appropriato. C'è una progressione di documenti che segue quella; gozling SATzilla presenterà un sacco di materiale di lettura.

AB

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.