Quanto sono efficienti i solutori SAT basati su DPLL su casi soddisfacenti di PHP?


15

Sappiamo che i risolutori SAT basati su DPLL non rispondono correttamente alle istanze insoddisfacenti di (principio del buco del piccione), ad esempio su "esiste una mappatura iniettiva da a ": n + 1 nPHPn+1n

PHPnn+1:=(i[n+1] j[n] pi,j)(ii[n+1] j[n] (¬pi,j¬pi,j))

Sto cercando risultati su come si comportano in casi soddisfacenti di , ad esempio su "esiste una mappatura iniettiva da a ".PHPnn

Trovano rapidamente un compito soddisfacente in tali casi?


1
Per "non rispondere correttamente" intendi "esaurire le risorse su valori sufficientemente grandi di n"?
Vijay D,

@Kaveh Stai permettendo la ripetizione di clausole e / o la ripetizione di variabili nella stessa clausola? Grazie
Tayfun paga il

@VijayD, intendo l'algoritmo non restituisce una risposta corretta in tempo polinomiale per abbastanza grande . Spero che si possa dimostrare in modo dimostrabile che un algoritmo basato su DPLL funzionerebbe in tempi polinomiali su questa famiglia. n
Kaveh,

@Geekster, non sono sicuro di cosa intendi. Ho una particolare famiglia di formule. Stai chiedendo se c'è una ripetizione in quella formula?
Kaveh,

Risposte:


14

In casi soddisfacenti di , i solutori SAT basati su DPLL forniranno un compito soddisfacente in tempo lineare.PHP

Per capire perché, osserva come la codifica CNF di un'istanza insoddisfacente di con n buchi e n + 1 piccioni è sintatticamente identica a un'istanza di k = n Colorazione del grafico, in cui il grafico di input è una cricca di n + 1 vertici .PHPnn+1k=nn+1

Analogamente, la codifica CNF di un'istanza soddisfacente di con n buchi e n piccioni è sintatticamente identica a un'istanza di k = n Colorazione del grafico, in cui il grafico di input è una cricca di n vertici.PHPnnK=nn

Ora, colorare una cricca di vertici con n colori è semplice: scansiona i vertici e assegna a ciascuno di essi uno dei colori rimanenti (i colori già assegnati sono automaticamente esclusi dalla cricca del grafico, usando la propagazione dell'unità) . Qualunque dei colori rimanenti che scegli, sarà buono e ti porterà ad un compito soddisfacente.nn

Dal punto di vista del risolutore DPLL: ogni volta che proverà a indovinare il valore booleano di una variabile , tale valore sarà corretto (qualunque esso sia), perché ci sarà sicuramente un compito soddisfacente in quale variabile v ho il valore indovinato. La propagazione dell'unità farà il resto del lavoro, guidando il risolutore lungo il percorso soddisfacente (in altre parole: impedendogli di indovinare valori errati).viovio

La ricerca procede quindi una variabile dopo l'altra, in modo lineare, ogni volta facendo l'ipotesi corretta.


Grazie, questo è quello che mi aspettavo. A proposito, conosci un riferimento che afferma questo (cioè "l'algoritmo DPLL risolve le istanze soddisfacenti di PHP / GC in tempo lineare")?
Kaveh,

1
Prego. Non conosco alcun riferimento che lo affermi, l'ho appena derivato da me stesso attraverso un ragionamento grezzo. Non dovrebbe essere difficile dimostrarlo formalmente, basandosi sul fatto che ogni risolutore SAT utilizza una ragionevole euristica sia per scegliere la variabile successiva sia per indovinarne il valore booleano. Va osservato, infatti, che esiste almeno un euristico irragionevole che ci impedisce di raggiungere una soluzione in tempo lineare (un euristico così irragionevole significherebbe impostare su false ogni variabile, per quanto possibile). Mentre con un ragionevole euristico, il tempo lineare è assicurato.
Giorgio Camerani,

Sono d'accordo. Spero che qualcuno possa averlo dichiarato da qualche parte in modo da poter citare quando ne ho bisogno. Vorrei aspettare ancora qualche giorno e se nessuno fornisce un riferimento accetterò questa risposta. Grazie ancora. :)
Kaveh,

Piacere mio ;-) Cin cin!
Giorgio Camerani,
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.