Qual è la complessità di Median-SAT?


14

Sia una formula CNF con variabili e clausole . Consenti a t \ in \ {0,1 \} ^ n di rappresentare un'assegnazione variabile e f _ {\ varphi} (t) \ in \ {0, \ ldots, m \} conteggi il numero di clausole soddisfatte da un'assegnazione variabile a \ varphi . Quindi definire Median-SAT come problema di calcolo del valore mediano di f _ {\ varphi} (t) su tutto t \ in \ {0,1 \} ^ n . Ad esempio, se \ varphi è una tautologia, la soluzione a Median-SAT sarà m poiché, indipendentemente dall'assegnazione, tutte le clausole saranno soddisfatte. Tuttavia, nel caso di \ overline {SAT}n m t { 0 , 1 } n f φ ( t ) { 0 , , m } φ f φ ( t )φnmt{0,1}nfφ(t){0,,m}φfφ(t)t{0,1}nφmSAT¯la soluzione a Median-SAT potrebbe essere ovunque tra 0 e m1 .

Questa domanda è nata quando stavo meditando su due estensioni naturali di SAT, MAX-SAT e #SAT, e quale sarebbe stata la difficoltà del problema risultante se fossero state messe insieme. Per MAX-SAT dobbiamo trovare una particolare assegnazione di variabili per massimizzare il numero di variabili soddisfatte da φ . Per #SAT dobbiamo contare quante assegnazioni soddisfano tutte le m clausole di φ . Questa variante finisce principalmente come un'estensione di #SAT (e in effetti di #WSAT ), ma conserva parte del sapore di MAX-SAT in quanto contiamo il numero di clausole soddisfatte piuttosto che decidere se sono tutte soddisfatte o non.

Questo problema sembra più difficile di #SAT o #WSAT. Per ogni assegnazione variabile #SAT decide il problema booleano se tale assegnazione soddisfa φ o meno mentre Median-SAT determina "in che misura" φ è soddisfatta in termini di numero di clausole soddisfatte da un'assegnazione.

Mi rendo conto che questo problema è in qualche modo arbitrario; calcolare la media o il numero di modalità delle clausole soddisfatte da ciascuna assegnazione di variabili sembra catturare la stessa qualità. Probabilmente lo fanno anche molti altri problemi.

Questo problema è stato studiato, forse sotto un'altra forma? Quanto è difficile rispetto a #SAT? Non mi è chiaro a priori che Median-SAT è persino contenuto in FPSPACE, sebbene sembri essere contenuto in FEXPTIME.


3
È in : per ogni possiamo contare il numero di incarichi che soddisfano almeno clausole usando un oracolo #P. k m kFP#PFPSPACEkmk
Colin McQuillan,

1
@Colin lo trasformi in una risposta?
Suresh Venkat,

Sì, questa sarebbe una buona risposta. Potresti approfondire come interrogare l'oracolo #P per verificare se le clausole sono soddisfatte? Non sono riuscito a capire come farlo in modo efficiente. km
Huck Bennett,

@Tsuyoshi, qual è la tua definizione di SAT? Stiamo permettendo la ripetizione di clausole? o valori letterali e / o variabili in una determinata clausola? Perché se non si consente la ripetizione di valori letterali e / o variabili in una determinata clausola non è possibile avere una formula CNF che sia una tautologia.
Tayfun Paga

@Tayfun - In realtà ho fatto questa domanda, Tsuyoshi mi ha aiutato con una modifica minore. Hai ragione su una tautologia in una formula CNF che richiede valori letterali ripetuti. Qualsiasi variante SAT sarebbe interessante, CNF-SAT senza ripetizione var nelle clausole (nel qual caso le tautologie sono impossibili), o forse CIRCUIT-SAT più in generale. Non credo che questa scelta cambi il sapore della domanda.
Huck Bennett,

Risposte:


13

Data un'istanza di SAT, un numero intero e un'assegnazione variabile, possiamo decidere in tempo polinomiale se sono soddisfatte esattamente le clausole k , semplicemente contando il numero di clausole soddisfatte e verificando se quel numero è uguale a k . Quindi possiamo calcolare il numero totale di assegnazioni variabili che soddisfano esattamente le clausole k usando un oracolo #P .kkkk

Quindi, come Max-SAT, Median-SAT può essere calcolato in tempo polinomiale usando un oracolo Questo dimostra che il problema è in F P # PF P S P A C E .#PFP#PFPSPACE


Hai assolutamente ragione. Questo è un argomento molto chiaro, e immagino abbastanza ovvio dalla definizione di #P. Ho imparato qualcosa
Huck Bennett,

1
k#P#PFP#P

3

lgm+1

M(φ)φkψkxxkφφkψk

ψkψkM(φ)kM(φ)k=m/2klgm+1M(φ). Ogni iterazione richiede una query al nostro oracolo per MAJSAT.

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.