È difficile trovare catene di addizione ottimali?


20

Una catena di addizione è una sequenza di numeri interi positivi dove e ogni indice , abbiamo per alcuni indici . La lunghezza della catena di addizione è ; il target della catena di addizione è .x 1 = 1 i 2 x i = x j + x k 1 j , k < i(x1,x2,,xn)x1=1i2xi=xj+xk1j,k<inxn

Cosa si sa della complessità del seguente problema: dato un numero intero , qual è la lunghezza della catena di addizione più corta il cui obiettivo è ? NP è difficile?NNN

Wikipedia indica un articolo del 1981 di Downey, Leong e Sethi che dimostra che il seguente problema correlato è NP-difficile: dato un insieme di numeri interi qual è la lunghezza minima di una catena di addizione che include l'intero insieme? A quanto pare diversi autori sostengono che questo documento dimostra che il problema del singolo bersaglio è NP-difficile, ma non lo è.


2
due domande: è dato in forma binaria, presumo, e e essere identici (in tal caso, allora c'è sempre una sequenza di log di lunghezza n tramite espansione binaria)j kNjk
Suresh Venkat

Supponiamo che sia dato in binario, anche se non conosco un algoritmo poly-time anche quando è unario. E sì, è permesso aggiungersi a te stesso, infatti, è necessario scendere da terra. La catena più corta per 128 è (1, 2, 4, 8, 16, 32, 64, 128). NNN
Jeffε

Risposte:


11

Il problema è menzionato come aperto nella tesi di dottorato di Eric Lehman "Algoritmi di approssimazione per la compressione dei dati basata sulla grammatica" nel 2002. Da p35 della tesi:

"Tuttavia, una soluzione esatta al problema della catena di addizione rimane stranamente sfuggente. Il metodo M-ary viene eseguito nel polilogo temporale (n) e fornisce un'approssimazione 1 + o (1). Tuttavia, anche se è consentito in modo esponenziale più tempo, poly ( n), non è noto alcun algoritmo esatto. "



1

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(mod  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 . 1inNiNnNi,j1i,jkPijQij

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 jN jPijNiPijNj

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 .TXtTdi1dlogt1iL(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).(XT11)(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)PQNi 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).Pij

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 impostaffNiNikNkik,jkik+jk=jf a uno (e Q i k j k a zero) e tutti (PikjkQikjk 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)iikjjki+j=kfQijPijki,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!


1
Se funziona, sembra che sarebbe ancora tempo esponenziale (quando N è espresso in binario) perché il numero di variabili è proporzionale a N ^ 2 anziché a polilogo (N).
David Eppstein,

Ah sì, avrei dovuto sottolinearlo. Stavo pensando a in modo unario dopo l'osservazione di @ JeffE che anche questo non è chiaro. Ho intenzione di pensare a ridurre ulteriormente le dimensioni dell'istanza, ma al momento sono più interessato a garantire che vada bene. Se lo è, penso che ci sia molto spazio per miglioramenti. Per inciso, troveresti l'approccio promettente? N
Neeldhara,

Non vedo come i vincoli che descrivi impongano che una soluzione sia valida. Cosa ti impedisce di impostare P_ij = 0 e Q_ij = 1 per tutti i + j = n e P_ij = Q_ij = 0 per tutti gli altri i, j?
David Eppstein,

Grazie per averci superato! E sì, hai perfettamente ragione; Volevo aggiungere un vincolo che ha detto una delle 's implica uno del relativo P i j ' s, ma capito che fa esplodere la complessità dell'istanza nel Colpire Set dominio, e mentre io intendevo per risolvere il problema, Penso di essermene dimenticato invece. Ho aggiornato la risposta con una possibile soluzione, è solo una costruzione leggermente noiosa (ma semplice). NiPij
Neeldhara,
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.