Vorrei documentare alcuni progressi parziali - apparentemente promettenti finora - verso un algoritmo temporale polinomiale. AGGIORNAMENTO : Aggiunti alcuni dettagli per tenere conto di un problema tecnico segnalato da @David (grazie!).
L'approccio è quello di ridurlo a un'istanza di CSP MIN-ONES EVEN-3 (MOEC), che risulta essere un problema risolvibile nel tempo polinomiale. La prova della riduzione è un po 'sfocata, ma spero che esista!
Un'istanza di MOEC è una famiglia di sottoinsiemi di dimensioni di un universo di variabili e un intero k . La domanda è se al massimo k esiste un'assegnazione soddisfacente di peso , in cui un'assegnazione è una funzione dall'universo a { 0 , 1 } , il peso di un'assegnazione è il numero di variabili che ne assegna una e un'assegnazione è soddisfacente se, per ogni sottoinsieme di variabili { x , y , z } , l'assegnazione (diciamo f ) ha la proprietà che:3KK{ 0 , 1 }{ x , y, z}f
.f( x ) + f( y) + f( z) = 0 ( m o d 2 )
Puoi visualizzarlo come 3-SAT con una diversa nozione di soddisfacibilità: scegli nessuno o scegli due. Sarò un po 'rilassato sull'istanza di MOEC in quanto consentirò, a parte i soliti sub-set, implicazioni, disgiunzioni di lunghezza due e il vincolo ( x = 1 ) . Credo che queste semplici aggiunte manterranno il problema polinomiale.3(x=1)
Supponiamo di ridurre il problema della catena di addizione per il numero . La variabile impostata per questa riduzione è la seguente:n
Per ogni , la variabile N i . Io riscrivere la variabile N n come N . Per ogni coppia i , j tale che 1 ≤ i , j ≤ k , introdurre le variabili P i j e Q i j . 1≤i≤nNiNnNi,j1≤i,j≤kPijQij
Introdurre i seguenti sottoinsiemi, per ogni tale che k = i + j :i,j,kk=i+j
{Pij,Qij,Nk}
e le seguenti implicazioni:
e
P i j ⇒ N jPij⇒NiPij⇒Nj
e i seguenti vincoli:
.(N1=1),(N=1)
Infine, dobbiamo aggiungere dei vincoli che assicurino che almeno una delle variabili venga scelta quando viene assegnata una variabile N corrispondente (perdona l'abuso della notazione). Questo può essere fatto aggiungendo la solita OR vincolo su tutta P i j tale che i + j somma alla N -variable in questione. Dobbiamo, tuttavia, trovare un modo per ricodificare questo nel framework MOEC.PNPiji+jN
Vorrei quindi delineare un modo generale di dire, dato un insieme di variabili:
,(X,l1,l2,…,lt)
come il vincolo di "se un'assegnazione è soddisfacente e insiemi a uno, allora esattamente una delle l i s' deve essere impostato a uno per l'assegnazione", può essere codificato con la sintassi Moec. Nota che questo è sufficiente per i nostri requisiti, introduciamo semplicemente i vincoli:Xli
.(Nk,{Pij | i+j=k})
La codifica viene eseguita come segue. Lascia che sia l'albero binario completo con radice su t foglie. Introdurre una nuova variabile T d i per tutti 1 ≤ d ≤ log t e 1 ≤ i ≤ L ( d ) , dove L ( d ) indica il numero di nodi di T X a profondità d .TXtTdi1≤d≤logt1≤i≤L(d)L(d)TXd
Per ogni nodo , se p e q essere suoi figli nell'albero, introdurre EVEN 3-vincolo:Tdipq
{Tdi,p,q}
Ciò significa che se una variabile corrispondente a un nodo è impostata su true, anche uno dei suoi figli deve essere impostato su true. Ora aggiungi le implicazioni:
e
( d log t , j ) ⇒ l j (virgola per chiarezza).(X⇒T11)(dlogt,j)⇒lj
Questa combinazione di vincoli e implicazioni EVEN-3 equivale al vincolo che desideravamo codificare.
Intuitivamente, ciò che sta accadendo è che gli ultimi due vincoli innescano esattamente le reazioni richieste per costruire una catena di addizione. In particolare, diamo un'occhiata alle che sono assegnate a una da un compito soddisfacente - l'affermazione è che formeranno una catena di addizione per N : poiché il compito è costretto a impostare N su uno, ci deve essere almeno una P i j che era impostata su una e le implicazioni costringono N i e N jNiNNPijNiNjassegnarne uno, e questo va fino in fondo (sono sicuro che questo può essere formalizzato con l'induzione, anche se non ho ancora elaborato quel livello di dettaglio). Si noti che un incarico satsificante che è ottimale nel numero di quelli assegnati non imposterà true per due coppie ( r , s ) e ( r ′ , s ′ ) , per il motivo che le variabili P vengono fornite con l'aggiunta bagaglio delle implicazioni, e le variabili Q non lo fanno (sono lì per garantire la soddisfacibilità di EVEN-3 - su una clausola in cui N i è vero e PPij( r , s )( r', s')PQNio non è vero, abbiamo ancora bisogno di prendere qualcosa per soddisfare tale clausola, e per ragioni che sono facili da vedere, questo non può essere una variabile universale attraverso clausole).Pio j
Quindi credo che una catena di addizioni corrisponda a un incarico soddisfacente e viceversa. Consentitemi di descriverne una parte in qualche modo formale: data una catena di addizioni, costruiamo un incarico che è soddisfacente. Per cominciare, f insiemi tutte N i 's che caratteristica della catena per uno e l'altro N i ' s a zero. Inoltre, se k dispone nella catena aggiunta, allora per ogni N k , lasciare i k , j k sia gli elementi della catena tale che i k + j k = j . Quindi f impostaffNioNioKNKioK, jKioK+ jK= jf a uno (e Q i k j k a zero) e tutti (PioKjKQioKjK tali che i ≠ i k e j ≠ j k e i + j = k , f imposta Q i j su uno (e P i j a zero). Per tutti i k che non compaiono nella catena di addizioni, per tutti i , j tali che i( i , j )io ≠ ioKj ≠ jKi + j = kfQio jPio jki,j , imposta tutti Q i j e P i j su zero (nota che la coerenza deriva dal fatto che due numeri si sommano in un solo modo). Ogni clausola che coinvolge una N i nella catena è soddisfatta perché una variabile P o Q corrispondente ad essa è stata impostata su una (e nota che esattamente una di esse è impostata su una per ogni coppia ( i , j ) ). Per ogni altra clausola, tutto è impostato su zero. Che le implicazioni valgano è facile da verificare.i+j=kQijPijNi(i,j)
La parte che non è chiara è la seguente: poiché per ogni elemento scelto nella catena di addizione, l'assegnazione ha un peso di t (poiché tutte le variabili Q sono impostate su una). Quindi c'è la possibilità che una catena aggiuntiva più lunga corrisponda a un compito più economico, ma sono abbastanza sicuro che ciò non accada a causa di una prova secondo le seguenti linee: considerare una catena di addizione ottimale e supporre che ce ne sia una più lunga che abbia un compito soddisfacente di peso inferiore corrispondente ad esso. Chiaramente, gli elementi della catena più lunga ne escludono almeno uno da quello più corto - lascia che l'elemento sia x . Vorrei dire che il costo sostenuto con xttQxxviene comunque sostenuto nella catena più lunga e il resto viene confrontato favorevolmente. Tuttavia, devo scriverlo attentamente e potrei vedere le cose dalla sindrome post-mezzanotte!