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)∧(y∨y¯)

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)y∨y¯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)∧(y∨y¯) .ϕ′(x1,…,xn,y)∉Double-SAT

Pertanto, , e quindi Double-SAT è N P- Complete.SAT≤pDouble-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.