È possibile incorporare una soluzione per SAT?


10

Sono interessato a singoli casi "difficili" di problemi NP-completi.

Ryan Williams ha discusso del problema SAT0 sul blog di Richard Lipton . SAT0 chiede se un'istanza SAT ha la soluzione specifica composta da tutti gli 0. Questo mi ha fatto pensare di costruire istanze SAT che probabilmente saranno "difficili".

Considera un'istanza SAT con clausole e variabili, dove è "abbastanza grande", nel senso che rientra nella regione oltre la transizione di fase, dove quasi tutte le istanze sono insoddisfacenti. Lascia che sia un'assegnazione casuale ai valori di .φmnα=m/nXφ

È possibile modificare per ottenere una nuova istanza , in modo che sia "in gran parte simile" a , ma che sia un'affermazione soddisfacente per ?φφ|Xφ|XφXφ|X

Ad esempio, si potrebbe provare ad aggiungere a ciascuna clausola un letterale scelto casualmente dalla soluzione, che non si verifica già nella clausola. Ciò garantirà che sia una soluzione.X

O questo è senza speranza, portando a un algoritmo veloce per trovare la soluzione "nascosta", sulla falsariga del seguente recente documento?

Sono a conoscenza della discussione di Cook e Mitchell e del lavoro cui fanno riferimento. Tuttavia, non sono riuscito a trovare nulla su ciò che accade alla struttura di una formula quando si cerca di incorporare esplicitamente un compito soddisfacente in essa. Se questo è folklore, i suggerimenti sarebbero i benvenuti!

  • Stephen A. Cook e David G. Mitchell, Trovare casi difficili del problema della soddisfazione: un'indagine , serie DIMACS in matematica discreta e informatica teorica 35 1–17, AMS, ISBN 0-8218-0479-0, 1997. ( PS )

Risposte:


13

Puoi prendere qualsiasi formula e cambiarla nella formula dove è un'istanza SAT "difficile" la cui unica soluzione è . Un modo per costruire una formula del genere è usare la crittografia: se è una permutazione unidirezionale e scegliamo a caso e impostiamo , quindi si può convertire in una formula SAT in modo tale che sia la sua unica soluzione e quindi trovare corrisponda all'inversione di . (Abbiamo bisogno che questa sia casuale, ma si presume comunque qualcosa di simile se pensiamo di trovarlaφ ψ x ψ x x f : { 0 , 1 } n{ 0 , 1 } n x y = f ( x ) y x x f x xφφψXψXXf:{0,1}n{0,1}nXy=f(X)yXXfXX dovrebbe essere difficile.)


Ah, ha dimensioni polinomiali in e . Grazie! ϕ ψ xφψXφψX
András Salamon,

6

Se capisco correttamente il nocciolo della tua domanda, vuoi prendere un'istanza relativamente semplice (dal momento che ti metti in un'area in cui ) e trasformarla in una difficile inserendo un soluzione. Dubito che questo avrebbe funzionato.mn>4.3

Dati sperimentali suggeriscono che, quando si costruisce un'istanza casuale "attorno" a una soluzione predefinita , tale istanza sarà più semplice del solito (rispetto alle istanze simili che hanno gli stessi e ). È come se la soluzione nascosta aiuti il ​​solutore SAT, guidandolo attraverso lo spazio di ricerca. Normalmente, per costruire un esempio del genere, generiamo clausole casuali come al solito (ad es. Scegliendo letterali a caso e negandone ciascuno con probabilità ) ma scartiamo quelle clausole che non sono soddisfatte dal nostro soluzione nascosta . Per quanto riguarda il tuo approccio alla costruzione di da e istanza difficilen m k p = 1XnmKp=12Xφ|Xφ: Non l'ho mai provato, ma "sento" che diventerà più facile, se non banale. Credo che ciò aumenterebbe il numero di hit dei letterali di (il numero di hit di una letterale è il numero di occorrenze di in una data formula) e che ciò spingerebbe il solutore SAT al bersaglio. Forse gli spazi di soluzione di e sarebbero simili (se non quasi identici), come accade nell'esempio di SAT0 di Ryan Williams (spazi di soluzione quasi identici, ma durezza completamente diversa). Hai provato il tuo approccio in pratica? Sarebbe interessante vedere come si comporta lo stesso solutore SAT su e su .φ|XXllφφ|Xφφ|X

EDIT 1 (23 set 2010): dopo aver pensato un po 'di più, sento che lo spazio della soluzione sarebbe in realtà molto diverso da quello di . Stai aggiungendo un valore letterale a ciascuna clausola, quindi stai dando più grado di libertà a tali clausole (cioè ogni clausola ha più possibilità di essere soddisfatta): probabilmente lo spazio della soluzione risultante verrebbe trasformato in modo massiccio.φ|Xφ

EDIT 2 (1 ottobre 2010): ho pensato alla seguente idea molto semplice e non originale. Data un'istanza iniziale e un'assegnazione :φX

  1. Rimuovi da tutte quelle clausole non soddisfatte da x . Ciò allargherà lo spazio della soluzione e dovrebbe incorporare x in esso.φXX

  2. Supponiamo di aver rimosso le clausole . Ora aggiungi in modo casuale m x nuove clausole, facendo attenzione che non siano insoddisfatte di x (questo restringerà nuovamente lo spazio della soluzione, ma senza estrarre x da esso).mXmXXX

Non so se funzionerà o meno. Non l'ho ancora provato. Più precisamente, non sono sicuro che il Passaggio 1 riesca sempre a incorporare nello spazio della soluzione (forse x è escluso da una combinazione di clausole, anche se ognuna di esse non è insoddisfatta di x ?).XXX


Grazie per i commenti, sono d'accordo che lo spazio della soluzione sarebbe cambiato. Come indicato nella domanda, voglio sapere se esiste un modo per modificare la formula per nascondere una soluzione. L'aggiunta dei letterali a ciascuna clausola è una prova dell'esistenza che si può aggiungere la soluzione alla formula. Non intendevo suggerire che questo è l'unico, il migliore o addirittura un buon metodo.
András Salamon,

Prego, Andras. Sì, la soluzione può sicuramente essere aggiunta usando il tuo metodo. Se lo vuoi ϕ | Lo spazio della soluzione di x è esattamente uguale allo ϕ spazio della soluzione più solo quella soluzione x , penso che sia difficile da ottenere. D'altra parte, se sei disposto ad accettare che verranno aggiunte molte altre soluzioni, la tua strategia è OK. Xφ|XφX
Giorgio Camerani,

Idealmente si vuole un metodo calcolabile in tempo di tempo che non cambi "troppo" lo spazio della soluzione ...
András Salamon,

Sarebbe interessante verificare se l' algoritmo menzionato da Feige per le cricche piantate funziona ancora per una di queste soluzioni piantate. n3log n
András Salamon,

@Walter: il motivo per cui dico che sarebbe interessante studiare il semplice algoritmo "trova un -clique", è che la riduzione più semplice di SAT a CLIQUE richiede un n -clique in un grafico con 2 n vertici. Sarebbe interessante colmare questo divario tra n e 3 log n , oppure mostrare che non può essere colmato. 3lognn2nn3logn
András Salamon,

4

Il modo migliore per generare istanze difficili di problemi NP completi di cui sono a conoscenza è utilizzare la mappatura Cook per ridurre le istanze accuratamente selezionate di alcuni altri problemi NP difficili (come il problema del logaritmo discreto o la fattorizzazione a numeri interi) a SAT. Questi sono gli stessi "problemi difficili" che vengono utilizzati dai matematici per garantire la sicurezza crittografica in protocolli come RSA e Diffie-Hellman.


Riferimenti, per favore?
gphilip,

non so perché il downvote di questa risposta. chiunque lo abbia fatto dovrebbe spiegare.
Suresh Venkat,
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.