Risposta breve. La versione operatore di SAT è efficacemente risolvibile - almeno, se assumiamo circuiti arbitrari di porte a due ingressi senza fan-out, rispetto a qualsiasi scelta desiderata di gate-set.
Risposta lunga.
Presumo la seguente forma del problema booleano:
x∈{0,1}nG C G x x x Cn⩾2GCG xxxC
In particolare, non imponiamo alcuna struttura particolare sui circuiti (oltre ad essere alberi binari), non consentiamo il fan-out (in modo che ogni bit di sia usato una sola volta) e le porte possano essere asimmetriche. Consentendo solo porte a due bit, escludo la porta NOT (ma che può essere simulata avendo più porte collegate tra loro da negazioni, come AND / NAND ; e escludo anche porte che semplicemente generano costanti senza input , in modo che il numero di gate nel circuito sarà in realtà sempre per un input bit. Per brevità, farò riferimento a 2-TREE-OPSAT di seguito semplicemente come OPSATx n - 1 nCxn−1n; sebbene l'analisi del problema possa diventare molto più difficile per i circuiti che consentono porte di ingresso k arbitrarie ( k-TREE-OPSAT ) o permettono il fan-out (che potremmo chiamare k-FANOUT-OPSAT ).
[ Modificato per aggiungere : possiamo facilmente adattare questo per considerare il problema più generale dell'attuale revisione della tua domanda, in cui tentiamo di mappare un dato a un valore target , scambiando i ruoli di e nell'analisi seguente; questo ha l'effetto di scambiare i ruoli di AND e OR , NAND e NOR , ecc. ]
b ∈ { 0 , 1 } 0 1x∈{0,1}∗b∈{0,1}01
Per una scelta fissa di , il problema di scegliere un albero adatto con porte adatte non è diverso da una disgiunzione logica: usare equivalenze come
potremmo eseguire riduzioni tra collezioni che collegano set di gate più complicati a set di gate semplici (e potenti); a può parlare di un set di gate in grado di emulare altre porte non appartenenti al set, scegliendo saggiamente qualche elemento di che ha lo stesso effetto (quando presentato con un input particolare) di un gate . In particolare, alcune combinazioni di gate (come ) possono simulare la funzione costante che producex∈{0,1}n
OR(x,y)≡(AND(x,y)∨PARITY(x,y))
GG∉G{OR,NAND}1: diciamo che tali gate-set sono
tautologhi .
Procediamo considerando i set di gate che includono diversi tipi di gate , successivamente escludendo quei gate da casi successivi dell'analisi, per mostrare che i gate set che coinvolgono una sola delle porte portano a un problema trattabile. Procederemo nell'ordine del numero di stringhe a due bit che soddisfano il gate in questione, a partire dal gate costante fino al gate costante .G10
Per qualsiasi set di gate che contiene la costante gate , possiamo semplicemente costruire un circuito usando quel gate da solo, nel qual caso accetta qualsiasi .GG(x,y)=1CCx
OR e NAND. Per qualsiasi gate set che contiene : se tutte le altre porte soddisfano , allora non vi è alcun vantaggio nella scelta di qualsiasi altro gate ma nella costruzione del circuito . Un circuito di solo gate accetta qualsiasi stringa tranne . Altrimenti, esiste un gate tale che è tautologo. Quindi qualsiasi istanza di OPSAT con è facile; e considerazioni analoghe si applicano per .GORG∈GG(x,y)⟹OR(x,y)ORCORx∈0∗G∈G{G,OR}OR∈GNAND∈G
Cancelli simili a implicazioni. Considera il gate , che restituisce zero solo se . Per quanto segue, si applicherà un'analisi simile per il gate .
Considera qualsiasi stringa . Se termina con , decomponi in sottostringhe del modulo ; su ciascuno di questi , ricorsivamente applichiamo da destra a sinistra, che produce output per ogni . (Per una sottostringa di lunghezza 1, usiamo il circuito banale, cioè lasciamo da solo quell'ingresso.) Allo stesso modo, seG(x,y)=¬x∨y(x,y)=(1,0)G′(x,y)=x∨¬y
x∈{0,1}nx0xwj=1∗0wjG0wjx termina con , decompone in sottostringhe del formato e applica ricorsivamente da sinistra a destra su ogni , che produce l'output per ogni . Possiamo quindi ridurre il problema alla costruzione di circuiti che sono soddisfatte mediante o , dove è il numero di sottostringhe o . Per , possiamo accettare l'uso di gates applicando ricorsivamente da sinistra a destra. Questo lascia il caso1xwj=0∗1Gwj1wj0m1mm1∗00∗1m⩾2GGm=1 , per cui il caso problematico sono input . Per , qualsiasi circuito costituito solo da porte produrrà solo stringhe più brevi della forma , producendo infine la stringa a bit singolo : in modo che nessun circuito di porte possa essere soddisfatto da questo input. Se esiste anche un gate per il quale , allora è tautologo; oppure, se esiste un gate per il quale , possiamo ridurre le stringhe della formax∈1∗0
x=1∗0G1∗00GH∈GH(1,0)=1{G,H}H∈GH(1,1)=011∗0alle stringhe della forma , applicando ai primi due bit di . Altrimenti, nessun circuito può essere costruito che accetta .
Pertanto, per qualsiasi gate-set che contiene un gate simile all'implicazione , OPSAT è facile.(1∗0)∗Hxx∈1∗0
G
Negazioni delle proiezioni. Considera le porte e . Consideriamo , l'analisi con è simile. Da solo, può accettare qualsiasi stringa in per riducendo gli ultimi bit a un singolo bit, quindi applicando ; e può allo stesso modo accettare per riducendo gli ultimi bit a un singolo bit, quindi applicando il circuito¬π1(x,y)=¬x¬π2(x,y)=¬y¬π1¬π2¬π10(0|1)n−1n⩾2n−1¬π11(0|1)n−1n⩾3n−2¬π1(¬π1(x1,x2),x3). Gli unici input che i circuiti non possono accettare sono quindi o ; determinare se un cancello supplementare li accetta è banale. Pertanto, OPSAT è facile per le negazioni delle proiezioni.¬π11011
PARITÀ E UGUAGLIANZA . Considera il gate . Il set di gate ovviamente può essere soddisfatto solo con precisione dalle stringhe con un numero dispari di 1s; consideriamo il vantaggio di aggiungere qualsiasi altro gate.PARITY(x,y)=(x∨¬y)∧(¬x∨y)G={PARITY}x∈{0,1}n
- Qualsiasi gate-set che contiene sia sia o
può simulare circuiti che contengono
porte o (rispettivamente) per input fissi, che sono facili casi di OPSAT .PARITYANDNOR(x,y)=¬(x∨y)ORNAND
- Sia o può essere utilizzato per simulare sia o su sottostringhe due bit di parità pari, in modo da poter ridurre porta-set con questi gates e al caso precedente.π1(x,y)=xπ2(x,y)=yANDNORPARITY
- PARITY insieme a è tautologo.EQUAL=¬PARITY
- Se con il gate , possiamo accettare qualsiasi stringa di parità pari tranne applicando a un -substring di e quindi applicare un circuito al resto. Allo stesso modo, insieme a può accettare qualsiasi stringa tranne quelle della forma . L'integrazione di con e ci consente di costruire circuiti che accettano tutti gli input tranne ePARITYG01=¬x∧yx∈(11)∗0∗G0101xPARITYPARITYG10=x∧¬yx∈0∗(11)∗PARITYG01G10x∈0∗x=11 .
- Infine, se con il gate costante , possiamo accettare qualsiasi input tranne o applicando un gate a una sottostringa o , che si riduce al caso di parità dispari.PARITYZ(x,y)=0x∈(11)∗x∈0∗G0110
Pertanto, OPSAT è facile per qualsiasi contenente . Un'analisi simile si applica per la porta come per la porta : perché , circuiti delle porte essenzialmente contano la parità del numero di s nell'input. Potremmo quindi ridurre l'analisi per a quella di scambiando e .GPARITY
EQUALPARITYEQUAL(x,y)=¬PARITY(x,y)=¬PARITY(¬x,¬y)EQUAL0EQUALPARITY01
Cancelli di proiezione. Le porte e , prese da sole, possono solo costruire circuiti che accettano stringhe che iniziano o finiscono in , rispettivamente. Considera l'effetto di aumentare il gate con qualsiasi altro gate (un'analisi simile vale per ):π1(x,y)=xπ2(x,y)=y1π1π2
- Consentire sia che consente la costruzione di un circuito di "selezione", che semplicemente emette un singolo bit dall'ingresso; questi possono accettare qualsiasi e integrandoli con qualsiasi gate per cui consente di costruire un circuito soddisfatto per qualsiasi .π1π2x≠0nGG(0,0)=1x
- Se con o , possiamo simulare o un gate simile all'implicazione per input fissi; OPSAT è risolto per entrambi questi casi.π1NORG01=¬x∧yOR
- Se con , , il gate costante o una qualsiasi combinazione di essi, non otteniamo alcun potere di accettazione aggiuntivo, in modo che può ancora accettare solo stringhe che iniziano con .π1ANDG10=x∧¬yZ(x,y)=01
Pertanto, per qualsiasi altro gate con cui possiamo integrare (o ), otteniamo un set tautologico, non otteniamo alcun potere di accettazione aggiuntivo solo su (o ) o possiamo ridurre a un semplice caso precedente di OPSAT . Quindi qualsiasi istanza di OPSAT con o è facile.π1π2π1π2π1∈Gπ2∈G
Cancelli con funzione Delta. Considera le porte a due bit per le quali esiste un solo input che le soddisfa: , , e . I circuiti realizzati solo con gates possono accettare solo la stringa : integrandoli con qualsiasi altro gate delta-funzione consente loro di simulare , o , che sono casi risolti; osservazioni simili si applicano a . Inoltre, il gate-set può essere utilizzato per simulare ancheANDNORG10(x,y)=x∧¬yG01(x,y)=¬x∧yAND1∗EQUALπ1π2NOR{G01,G10}PARITYcancello. Possiamo quindi concentrarci sul gate o , eventualmente integrato con il gate . Ci concentriamo su , con il caso in cui sia simile. I circuiti costituiti solo da possono essere costruiti per accettare , ad eccezione della stringa , applicando un circuito arbitrario ai bit finali e quindi applicando il circuito . Chiaramente, la stringa non può essere accettata da o da ; e possiamo dimostrare per induzione che qualsiasiG10G01Z(x,y)=0G10G01
G101(0|1)n−111n−2G10(x1,G10(x2,x3))11G10ZG10il circuito che accetta una stringa deve avere esiti intermedi delle porte nel ramo più a sinistra, tutte con , fino all'input più a sinistra stesso. Nessun ulteriore vantaggio si ottiene aggiungendo portePertanto, i circuiti possono accettare solo .1ZG10x∈1(0|10|11)(0|1)∗
Infine, i circuiti composti solo da porte non accettano ingressi.Z
Come ogni cancello dà luogo ad una classe ben definita e generalmente abbastanza grande di ingressi di accettazione, con cancelli aggiuntivi che tendono a banalizzare il problema, troviamo che 2-ALBERO-OPSAT è in P .