Conversione da DNF a CNF: facile o difficile


10

In relazione al thread Dimostrando che la conversione da CNF a DNF è NP-Hard (e un thread matematico correlato ):

Che ne dici dell'altra direzione, da DNF a CNF? È facile o difficile?

A pagina 2 di questo articolo , sembrano suggerire che entrambe le direzioni sono ugualmente difficili quando dicono " Siamo interessati al massimo ingrandimento delle dimensioni quando si passa dalla rappresentazione CNF alla rappresentazione DNF (o viceversa) ".

Ma DNF-SAT è in P e CNF-SAT è NP- completo. Quindi, data un'espressione DNF , dovrebbe esserci un'espressione CNF equi soddisfacente ϕ 2 la cui lunghezza è polinomiale nella lunghezza di ϕ 1 . E la conversione ϕ 1ϕ 2 può essere eseguita in poli-tempo. È corretto?ϕ1ϕ2ϕ1ϕ1ϕ2

Modifica: modificato in modo equivalente a non soddisfacente (ovvero, sono consentite variabili aggiuntive in ).ϕ2


Puoi passare da qualsiasi formula a un CNF che è soddisfacente esattamente quando la formula originale è in tempo polinomiale. Questo è il motivo per cui CNF-SAT è NP-completo. Qualsiasi istanza SAT (un problema NP completo) può essere ridotta a CNF-SAT in tempo polinomiale. Penso che tradurlo esattamente, non solo preservare la soddisfacibilità a volte produrrà sempre un'esplosione esponenziale, ma non posso dirlo con certezza.
Jake,

Vedi en.wikipedia.org/wiki/Tseitin_transformation . In sostanza, se si consente l'introduzione di variabili ausiliarie, è possibile eseguire questa trasformazione in poli-tempo (aumentando la dimensione della formula al massimo in modo lineare).
jschnei,

Dovrai decidere se consentire alla conversione di introdurre nuove variabili o se la formula convertita deve fare riferimento allo stesso insieme di variabili (nessuna nuova variabile). Questo è un punto sottile che ha un effetto drammatico sulla risposta. Quindi, di cosa vuoi chiedere?
DW

@Jake Puoi passare da qualsiasi formula a un CNF equi soddisfacente perché CNF-SAT è NP-completo. Non è proprio "perché" CNF-SAT è NP-completo: la solita prova che CNF-SAT è NP-completo non implica la traduzione di formule arbitrarie in CNF; piuttosto, traduce le macchine di Turing in formule CNF.
David Richerby,

Per DW e altri - avevo in mente l' idoneità . In questo senso, sembra che l'equisoddisfazione sia solo una riduzione (in questo caso, a un'altra formula booleana).
Martin Seymour,

Risposte:


14

Se si desidera introdurre ulteriori variabili, è possibile convertire da DNF a CNF in tempo polinomiale utilizzando la trasformazione di Tseitin . La formula CNF risultante sarà soddisfacente con la formula DNF originale: la formula CNF sarà soddisfacente se e solo se la formula DNF originale fosse soddisfacente. Vedi anche https://en.wikipedia.org/wiki/Conjunctive_normal_form#Conversion_into_CNF .

Se non si desidera consentire l'introduzione di variabili aggiuntive, la conversione da DNF a CNF è co-NP-hard. In particolare, verificare se una formula DNF è una tautologia è co-NP-difficile. Tuttavia, testare se una formula CNF è una tautologia può essere eseguito in tempi polinomiali (è sufficiente verificare separatamente se ogni clausola è una tautologia, il che è facile in quanto ogni clausola è una disgiunzione di valori letterali). Pertanto, se si potesse convertire dalla forma DNF alla forma CNF in tempo polinomiale, senza introdurre nuove variabili, si otterrebbe un algoritmo del tempo polinomiale per testare se una formula DNF è una tautologia - qualcosa che sembra improbabile, dato che ci aspettiamo P non è uguale a co-NP. Oppure, per dirla in altro modo, la conversione da DNF a CNF senza introdurre ulteriori variabili è co-NP-difficile.

Questa è la differenza tra equivalenza e equità . L'equivalenza richiede che le due formule abbiano lo stesso insieme di soluzioni (e quindi non consente l'introduzione di variabili aggiuntive). L'equisoddisfacibilità richiede solo che entrambe le formule siano soddisfacenti o entrambe insoddisfacenti (e quindi consentano l'introduzione di variabili aggiuntive).


@Mehrdad, per favore non usare i commenti per fare nuove domande. Abbiamo una "Poni domanda" in alto a destra se hai una nuova domanda che vuoi porre. Ma, solo un piccolo suggerimento ... potresti voler leggere la domanda nella parte superiore di questa pagina prima di porre una nuova domanda ... o, del resto, pubblicare questo commento. Non posso fare a meno di notare che hai posto una domanda in cui la risposta si trova sulla stessa pagina della tua domanda.
DW

@DW: Whoops, in realtà ho visto l'altro post un po 'più tardi e ho dimenticato di rimuovere il mio commento qui, scusa. Rimosso ora.
user541686
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.