Esiste un algoritmo di tempo lineare non deterministico per CNF-SAT?


19

Il problema decisionale CNF-SAT può essere descritto come segue:

Input: una formula booleana in forma normale congiuntiva.ϕ

Domanda: esiste un'assegnazione variabile che soddisfa ?ϕ

Sto prendendo in considerazione diversi approcci per risolvere CNF-SAT con una macchina di Turing a due nastri non deterministica .

Credo che esista un NTM che risolve CNF-SAT nei passaggi .npoly(log(n))

Domanda: Esiste un NTM che risolve CNF-SAT nei passaggi ?O(n)

Eventuali riferimenti rilevanti sono apprezzati anche se forniscono solo approcci non deterministici nel tempo quasi lineare.


5
Nel 2001 Santhanam scrisse: "SAT NTIME ( polilogo ), un risultato che deriva dai fatti che SAT può essere accettato in polilogo tempo su un NRAM e che esiste una simulazione efficiente di NRAM da NTM, a causa di Gurevich e Shelah ". Quindi mi sembra improbabile che SAT NTIME ( ) sia noto. (Il riferimento è a LNCS 363 del 1989.)n ( n ) n ( n ) nn(n)n(n)n
András Salamon,

5
@Boson, supponi che ti venga assegnato non solo un compito soddisfacente, ma anche un calcolo completo della formula. Come verifichi se si tratta di un calcolo valido in tempo lineare? Non è chiaro neanche tu puoi farlo per 3CNF-SAT perché devi saltare per cercare l'assegnazione alle variabili.
Kaveh,

4
@Boson Non è chiaro se è possibile verificare che l'assegnazione soddisfi la formula in tempo lineare con una TM a due nastri. Probabilmente dovresti spostare la testina avanti e indietro più volte. Se hai un approccio efficiente per questa verifica, per favore fatemelo sapere. :)
Michael Wehar,

5
Solo una nota: se le variabili sono rappresentate in unario (SAT è ancora NPC), allora c'è un NTM a due nastri che riconosce una formula unaria soddisfacente in 2 | φ | passiφ2|φ|
Marzio De Biasi il

3
@MichaelWehar se si utilizza un ordinamento di conteggio, è possibile ordinare n chiavi nell'intervallo [0, k] nel tempo O (n + k) in un modello di accesso casuale ragionevole (ad esempio macchina di Turing ad accesso casuale, dove è possibile prendere O (registro n) tempo di scrivere un indice, quindi saltare a quell'indice del nastro in 1 passaggio). Se si codifica ogni letterale come una stringa di bit (log n + 1), il numero totale di clausole e variabili è al massimo O (n / log n), nel qual caso O (log n) -time operazioni su tutti i letterali stanno bene. L'estensione a due nastri TM non è semplice, almeno con il conteggio degli ordinamenti.
Ryan Williams,

Risposte:


5

Questo è solo un commento esteso. Qualche volta fa mi sono chiesto (me stesso :-) quanto velocemente può essere un NTM multitape che accetta un linguaggio NP completo (ragionevolmente codificato). Mi è venuta questa idea:

3-SAT rimane NP-completo anche se le variabili sono rappresentate in modo unario. In particolare possiamo convertire una clausola - supponiamo - di una formula 3-SAT arbitraria φ su n variabili e clausole m in una sequenza di caratteri sull'alfabeto Σ = { + , - , 1 } in cui ogni occorrenza variabile è rappresentata in unario:(xi¬xjxk)φnmΣ={+,,1}

+1i0,1j,+1k

Ad esempio, può essere convertito in:(x2x3+4)

+110-1110+11110

Quindi possiamo convertire una formula 3-SAT in una stringa equivalente U ( φ i ) concatenando le sue clausole. La lingua L U = { U ( φ i ) φ i3 - S A T } è NP-completa.φiU(φi)LU={U(φi)φi3SAT}

Un NTM a 2 nastri può decidere se una stringa nel tempo 2 | x | in questo modo.xLU2|x|

  • la prima testa analizza l'input da sinistra a destra e con la logica interna tiene traccia quando entra o esce da una clausola o raggiunge la fine della formula. Ogni volta che trova un o - , la seconda testa inizia a spostarsi a destra con essa sull'1 i che rappresenta x i . Alla fine di 1 i , se la seconda testa è su uno 0, allora indovina un valore di verità + o - (fa un incarico) e lo scrive sul secondo nastro; se trova un + o - allora a quella variabile è già stato assegnato un valore;+1ixi1i0++
  • in entrambi i casi, usando la logica interna, l'NTM abbina il valore di verità sotto la seconda testa (l'assegnazione) con l'ultimo visto o - ; se corrispondono, la clausola è soddisfatta;+
  • quindi la seconda testa può tornare alla cella più a destra;
  • con la logica interna, NTM può tenere traccia se tutte le clausole sono soddisfatte mentre la prima testa si sposta verso la fine dell'ingresso.

Esempio:

Tape 1 (formula)    Tape 2 (variable assignments)
+110-1110+11110...  0000000000000...
^                   ^
+110-1110+11110...  0000000000000...
 ^                  ^
+110-1110+11110...  0000000000000...
  ^                  ^
+110-1110+11110...  0+00000000000... first guess set x2=T; matches +
  ^                  ^               so remember that current clause is satisfied
+110-1110+11110...  0+00000000000... 
  ^                  ^
...
+110-1110+11110...  0+00000000000... 
    ^               ^
...
+110-1110+11110...  0++0000000000... second guess set x3=T
       ^              ^              don't reject because current
                                     clause is satisfied (and in every
                                     case another literal must be parsed)

Il tempo può essere ridotto a se aggiungiamo alcuni simboli ridondanti alla rappresentazione della clausola:|x|

+1i0i,1j0j,+1k0k...+++

( segna la fine della formula)+++

In questo modo la seconda testa può tornare alla cella più a sinistra mentre la prima esegue la scansione della parte . Usando ++ come delimitatore di clausole e +++ come marker per la fine della formula, possiamo usare la stessa rappresentazione per le formule CNF con un numero arbitrario di letterali per clausola.0i+++++


1
La rappresentazione unaria è inequivocabile, quindi si può usare 0/1 per +/-, dando 011011110111110 per il primo esempio. 00 quindi funge da marker di fine clausola, poiché 000 non può altrimenti verificarsi (se si verifica 00, allora è il marker di fine di una variabile e il segno successivo, quindi il simbolo successivo deve essere 1). Il singolo worktape contiene l' assegnazione -bit indovinata alle variabili v . Quando viene letta una variabile, la testa del worktape si sposta in avanti e quindi torna all'inizio quando viene visualizzato lo 0, quindi al massimo 2 passaggi per ciascun bit dell'ingresso. vv2
András Salamon,

2
In altre parole, anche un NDTM con un nastro di input unidirezionale e un singolo worktape utilizza al massimo passaggi per Unary SAT codificato con un alfabeto booleano. 2n
András Salamon,

1
Per rendere le cose ancora più ordinate, si può inoltre richiedere che l'input contenga prima un prefisso con il numero di variabili specificato in unario. Ciò consente di ipotizzare di essere costruito durante la lettura del prefisso. Questa è quindi una sorta di codifica "unaria SATLIB", di dimensioni al massimo quadratiche in un'istanza SAT standard, purché ogni variabile appaia almeno una volta nella formula e le variabili siano numerate da 0 a v - 1 . Questi sembrano essere requisiti ragionevoli. vv1
András Salamon,

1
@ AndrásSalamon: bene! Riparando la codifica e il modello (nastro di lettura unidirezionale + nastro di lavoro bidirezionale) otteniamo un peggior runtime di su input di dimensione n , dove c può essere reso arbitrariamente grande incorporando un po 'di memoria fissa nella logica interna TM . Potrebbe essere interessante indagare se qualcosa può essere provato usando l'unicità del nastro di input e un argomento di sezione trasversale. 2ncnc
Marzio De Biasi,

1
Sì, per quanto ne so, il prodotto spazio-tempo per Unary SAT è qualcosa come da un argomento standard. La rappresentazione unaria delle variabili evita il divario tra illimite inferioreΩ(n2/(logn) 1 + ε )piùnotoe un limite superioreO(n3/(logn) ε ) sempliceper CNF-SAT (sebbene un algoritmo migliore in tal caso potrebbe quindi ridurre anche il divario). Θ(nn)Ω(n2/(logn)1+ε)O(n3/(logn)ε')
András Salamon,

2

Non esattamente quello che stai cercando, ma per NTM a 1 nastro, la risposta sembra essere negativa: SAT non è risolvibile da un NTM a 1 nastro in tempo lineare non deterministico.

Secondo questo articolo (Teorema 4.1), la classe di lingue regolari è esattamente la classe di lingue riconosciuta da un NTM a 1 nastro nel tempo o ( n log ( n ) ) . Quindi, se esistesse un NTM a 1 nastro che risolve SAT nel tempo o ( n log ( n ) ) , allora SAT (più precisamente, l'insieme di formule soddisfacenti in CNF) sarebbe un linguaggio regolare, quindi risolvibile in uno spazio costante deterministico.REG o(nlog(n))o(nlog(n))


5
Quel teorema riguarda solo le macchine di Turing a una testa .(Ad esempio, le macchine Turing a due teste possono facilmente decidere il linguaggio palindromo in tempo lineare e spazio costante.)

Questo è fantastico! Grazie mille. Ma sono molto interessato alla custodia a due nastri. :)
Michael Wehar,

2
Come ha scritto @Ricky. AFAIK è ancora coerente con ciò che sappiamo che SAT è in tempo lineare deterministico. Per provare il contrario, avresti bisogno di un tempo superlineare inferiore per SAT e non ne abbiamo uno (non sembra essere vicino ad uno).
Kaveh,
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.