Dimostrare che DOUBLE-SAT è NP-completo


13

Il noto problema SAT è definito qui per amor di riferimento.

Il problema DOUBLE-SAT è definito come

DOUBLE-SAT={ϕϕ has at least two satisfying assignments}

Come possiamo dimostrarlo NP-completo?

Sarà apprezzato più di un modo per dimostrarlo.

Risposte:


26

Ecco una soluzione:

Chiaramente Double-SAT appartiene a , poiché un NTM può decidere Double-SAT come segue: su una formula di input booleana ϕ ( x 1 , , x n ) , indeterminatamente indovinare 2 assegnazioni e verificare se entrambe soddisfano ϕ .NPϕ(x1,,xn)ϕ

Per mostrare che Double-SAT è Complete, diamo una riduzione da SAT a Double-SAT, come segue:NP

All'ingresso :ϕ(x1,,xn)

  1. Introdurre una nuova variabile .y
  2. Formula di output .ϕ(x1,,xn,y)=ϕ(x1,,xn)(yy¯)

Se appartiene a SAT, allora ϕ ha almeno 1 incarico soddisfacente, e quindi ϕ ( x 1 , , x n , y ) ha almeno 2 incarichi soddisfacenti in quanto possiamo soddisfare il nuova clausola ( y ˉ y ) assegnando y = 1 o y = 0 alla nuova variabile y , quindi ϕ ( xϕ(x1,,xn)ϕϕ(x1,,xn,y)yy¯y=1y=0yϕ , ..., x n , y ) Double-SAT.x1xny

D'altra parte, se , allora chiaramente ϕ ( x 1 , , x n , y ) = ϕ ( x 1 , , x n ) ( y ˉ y ) non ha neppure un compito soddisfacente, quindi ϕ ( x 1 , , xϕ(x1,,xn)SATϕ(x1,,xn,y)=ϕ(x1,,xn)(yy¯) .ϕ(x1,,xn,y)Double-SAT

Pertanto, , e quindi Double-SAT è N P- Complete.SATpDouble-SATNP


È più bello della mia proposta.
Raffaello

10

SATSATDOUBLE-SAT

φφf(φ)φf

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.