Il problema di trovare operatori per soddisfare un elenco di variabili booleane NP è completo?


11

Questo è simile a SAT, tranne per il fatto che conosciamo l'assegnazione di ciascuna variabile, ma non conosciamo l'assegnazione di alcun operatore booleano. In tal caso, trovare l'assegnazione di ciascun operatore in modo che l'espressione valuti un determinato valore booleano sia un problema NPC?

In realtà, mi chiedevo se trovare l'assegnazione di operatori aritmetici per soddisfare un'espressione aritmetica intera (es. 1 op1 3 op2 7 op3 op4 = 10) NP è completa?


2
Quindi, se ho capito bene, sai che la formula è soddisfacente e vuoi conoscere un incarico degli operatori booleani. Basta assegnare l' operatore a tutte le "variabili dell'operatore" e il gioco è fatto. Non conosco il secondo problema, ma sembra interessante.
George,

3
@ GeorgeB: non penso che la soluzione sia corretta. Cosa succede se tutti i valori booleani sono impostati su false? Questa domanda è interessante, ma potrebbe aver bisogno di un po 'di lavoro. Quale set di operatori booleani stiamo scegliendo? Presumibilmente si intende un sottoinsieme interessante di operatori binari booleani come {,,} . Se includi tutti gli operatori binari booleani, il problema è banale: seleziona la mappa costante su "true".
Huck Bennett,

1
Come ha detto Huck, scegli per tutti i . Tuttavia, se si limitano gli operatori a un determinato insieme, la domanda sarebbe più interessante. Allo stesso modo per il caso aritmetico. xopiy=1i
Kaveh,

sembra che potrebbe avere qualche connessione con QBF o eventualmente ridotta ad esso. probabilmente può essere costruito un QBF che, una volta risolto, dà agli operatori. destra? ad ispezione veloce sembra che potrebbe essere Pspace completo ... inoltre devi definire la precedenza se non ci sono parentesi. E superiore a OR? il problema sembra più naturale forse quando si possono definire parentesi / raggruppamenti.
vzn,

@GeorgeB. Mi dispiace di non averlo chiarito. La valutazione di un'espressione booleana può essere qualsiasi valore booleano dato, 0 o 1.
DSounders

Risposte:


10

Con addizione e sottrazione, penso che il problema della partizione , che è NP-difficile, si riduce al tuo secondo problema.

Dato un set creiamo il problemaS={s1,s2,,sn}

o p 1 s 2 o p 2 s 3 o p 3o p n - 1 s n = 0 . s1 op1 s2 op2 s3 op3 opn1 sn=0

Se esiste una soluzione, creiamo due set:

S1={s1}{si|opi1=+}

S2={si|opi1=}

Questi due set devono avere la stessa somma dall'impostazione del nostro problema originale, quindi il problema di partizione è risolto. Ciò dimostra che non solo è difficile trovare la soluzione effettiva a questo problema, ma in realtà NP è difficile determinare se esiste una soluzione (almeno per addizione e sottrazione).

Per un insieme di operazioni che non consente la creazione di numeri interi negativi, diciamo moltiplicazione e addizione, non è così chiaro. Inoltre, questo dimostra solo che il problema è debolmente NP-difficile; potrebbe esserci una riduzione che dà un risultato più forte di questo.


1
Penso che la tua prova possa essere adattata abbastanza facilmente al caso , basta impostare il problema target su s 1s n = 1 . Quindi una soluzione implica che il denominatore è uguale al numeratore (assumendo s i > 0 per tutti i ). Naturalmente questo non dà il caso di quattro operatori, ma poi dovremmo anche gestire l'ordine delle operazioni. ×/÷s1sn=1si>0i
Luke Mathieson,

Grazie @ Sam e Luke. E se mescolassimo tutti e quattro gli operatori? Avere intuitivamente più operatori renderà il problema solo più complesso, ma non vedo una prova diretta.
DSounders,

Sto ancora pensando a tutti e quattro. Possiamo anche ottenere facilmente, ma sono ancora solo due alla volta. +/÷
Luke Mathieson,

1
Inoltre, un riferimento per la (forte) -completeness di PARTITION PRODOTTO: "‘partizione del prodotto’e relativi problemi di programmazione e sistemi affidabilità: complessità computazionale e approssimazione" sciencedirect.com/science/article/pii/S0377221710003905NP
Luca Mathieson

4

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 Cn2GCG 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 nCxn1n; 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))
GGG{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

  1. 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

  2. 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 .GORGGG(x,y)OR(x,y)ORCORx0GG{G,OR}ORGNANDG

  3. 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)=¬xy(x,y)=(1,0)G(x,y)=x¬y

    x{0,1}nx0xwj=10wjG0wjx 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=01Gwj1wj0m1mm1001m2GGm=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 formax10

    x=10G100GHGH(1,0)=1{G,H}HGH(1,1)=0110alle 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.(10)Hxx10

    G

  4. 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)n1n2n1¬π11(0|1)n1n3n2¬π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

  5. 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)(¬xy)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)=¬(xy)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=¬xyx(11)0G0101xPARITYPARITYG10=x¬yx0(11)PARITYG01G10x0x=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)x0G0110

    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

  6. 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π2x0nGG(0,0)=1x
    • Se con o , possiamo simulare o un gate simile all'implicazione per input fissi; OPSAT è risolto per entrambi questi casi.π1NORG01=¬xyOR
    • 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π1Gπ2G

  7. 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)=¬xyAND1EQUALπ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)n111n2G10(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 .1ZG10x1(0|10|11)(0|1)

  8. 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 .


1
@DSounders: rispetto alla recente revisione del problema per determinare se esiste un circuito che mappa con un valore target , anziché solo il caso speciale , lo stesso l'analisi come nella mia presente risposta è ancora sufficiente per dimostrare che il problema è in P ; cambiano solo i ruoli delle porte. Ad esempio, nello scambiare i risultati desiderati e , scambiamo efficacemente i ruoli di AND e OR , NAND e NOR , le porte simili a implicazioni con le altre funzioni delta, ecc.Cx b{0,1}b=101
Niel de Beaudrap il
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.