Somma del sottoinsieme vs. prodotto del sottoinsieme (durezza NP forte o debole)


15

Speravo che qualcuno potesse spiegarmi perché esattamente il problema del prodotto del sottoinsieme è fortemente NP-difficile mentre il problema della somma del sottoinsieme è debolmente NP-difficile.

Sottoinsieme Somma: Dato X={x1,...,xn} e , fa esiste un sottoinsieme tale che .X TXiXxi=T

Sottoinsieme del prodotto: Data e , fa esiste un sottoinsieme tale che .X={x1,...,xn}TXiXxi=T

Ho sempre pensato che i due problemi fossero equivalenti: un'istanza di SS poteva essere trasformata in un'istanza di SP tramite esponenziazione e un'istanza di SP in SS tramite logaritmi. Questo mi ha portato a concludere che entrambi appartenevano alla stessa classe di NP-hard - cioè erano entrambi debolmente NP-hard.

Inoltre, sembra che la stessa ricorrenza potrebbe essere usata per risolvere entrambi i problemi usando la programmazione dinamica con un cambiamento molto piccolo (sostituendo la sottrazione in SS con divisione in SP).

Questo fino a quando ho letto il capitolo 8 di "Teoria del calcolo" di Bernard Moret (per quelli senza il libro, ha una prova della durezza del prodotto del sottoinsieme via X3C - un problema fortemente NP-difficile).

Capisco la riduzione, ma non riesco a capire cosa non andava nella mia precedente conclusione (equivalenza dei due problemi).


AGGIORNAMENTO : Si scopre che il prodotto del sottoinsieme è solo debolmente NP-completo (il prodotto target è esponenziale in ). Gary e Johnson lo pubblicarono nella loro colonna di completezza NP nel 1981 , ma immagino che fosse meno visibile della loro precedente affermazione nel loro libro.Ω(n)


5
Probabilmente sarebbe bello immaginare come implementeresti il ​​tuo algoritmo di programmazione dinamica. Quindi, troverai ciò che non va.
Yoshio Okamoto,

@ MohammadAl-Turkistany: è nella sezione finale di questa colonna
RDN

Risposte:


5

Per quanto riguarda il problema dell'equivalenza della somma del sottoinsieme e del prodotto del sottoinsieme Esiste un aspetto tecnico relativo al prodotto del sottoinsieme. Il prodotto di x's = T è in realtà psuedopolinomiale se T non è esponenziale! Quindi le prove che il prodotto del sottoinsieme è NP Hard non sono (per motivi tecnici !!!) del tutto corrette!

Tuttavia, dato la promessa che T è grande, allora la riduzione tramite Logarithms alla somma dei sottoinsiemi dà una SOMMA DI SOTTOTETTI NON STANDARD che è al di sopra dei reali! Ciò significa che l'algoritmo psuedopolinomiale per la somma del sottoinsieme non si applica! Sebbene i logaritmi siano piccoli, le cifre decimali incasinano la programmazione dinamica psuedopolinomiale!

spero che questo possa essere d'aiuto

Zelah


2
Si scopre che hai sempre avuto ragione sulle riduzioni errate (cioè, sostenendo che mostrano una forte completezza NP, quando non lo fanno). Grazie!
RDN

8

In primo luogo, usare l'espiazione per passare dalle SS alle SP funziona (usando la base 2 anziché la base ), ma fa esplodere le dimensioni dei numeri coinvolti. Una debole durezza NP significa che se i numeri sono piccoli (o più precisamente, indicati in unario), il problema non è più difficile. Quindi, l'uso di esponenziazione crea istanze di SP di dimensioni esponenziali anche per le istanze facili di SS, in cui i numeri sono scritti in modo unario.e

In secondo luogo, l'utilizzo dei logaritmi per passare da SP a SS non funziona, poiché i logaritmi in genere generano valori non interi. SS e SP sono definiti usando numeri interi, e i logaritmi spesso portano a valori trascendentali, che sono difficili da rappresentare o fare matematica.

<edit>

Sia un numero intero, A > 0 , quindi il log 2 A è razionale se e solo se A è una potenza di 2, e altrimenti trascendentale. Innanzitutto, se il registro 2 A = pAA>0log2AA per numeri interi diversi da zeropeq, quindiA=2 plog2A=pqpq ,Aq=2p. Pertanto abbiamoA=2rper decomposizione primaria. InoltreArq=2p, quindi dato unApossiamo scegliereq=1ep=rper dimostrare che illog2Aè razionale.A=2pqAq=2pA=2rArq=2pAq=1p=rlog2A

Dobbiamo solo mostrare che il non è mai trascendentale altrimenti. Ciò deriva dal teorema di Gelfond-Schneider , poiché una formulazione equivalente (come si può trovare nella pagina Wiki) è "se α e γ sono numeri algebrici non zero e prendiamo qualsiasi logaritmo diverso da zero di α , quindi ( log γ ) / ( log α ) = log α γ è razionale o trascendentale. " È anche facile da verificare prendendo il contrario del teorema e impostando α β = γ e quindi βlog2Aαγα(logγ)/(logα)=logαγαβ=γ .β=logαγ

</edit>

Infine, considera cosa succede quando proviamo l'algoritmo di programmazione dinamica da SS su SP. Poiché utilizziamo i prodotti anziché le somme, i numeri coinvolti esplodono enormemente e la precisione matematica arbitraria richiesta diventa improvvisamente un fattore nel tempo di esecuzione. Questo è il motivo per cui l'algoritmo non è in grado di risolvere rapidamente le istanze SP anche se i numeri sono unari.


questo porta ad un caso speciale piuttosto interessante. per quale classe di numeri i log sono espressi come razionali e non richiedono una precisione infinita? in questo caso i problemi sarebbero effettivamente quasi equivalenti e riducibili l'uno all'altro. sembra anche condurre verso un algoritmo di approssimazione "naturale".
vzn

1
Grazie per la magnifica risposta! Ho solo un problema: capisco perché prendere i registri è illegale (tranne forse nel caso in cui i registri siano lunghi in poli - come sottolinea vzn), ma non sono ancora sicuro della legalità di andare da SS a SP tramite esponenziazione. Il WRT va da SS a SP come hai detto (tramite esponenziazione), non incontriamo il seguente problema: Il numero di bit nell'istanza di input di è O ( n log x ) e il numero di bit nel l'istanza di I S P è O ( n x ) . Questa è una esplosione esponenziale. Quindi è ancora legale? Se lo è, perché?ISSO(nlogx)ISPO(nx)
RDN

1
@vzn, RDN: ho modificato in una caratterizzazione quando il logaritmo è trascendentale. Per quanto riguarda l'esplosione della riduzione, dipende dalla tua definizione di "legale": la riduzione è corretta , tuttavia la sua efficienza non è polinomiale e quindi non dice nulla sulla durezza NP. Non è quindi una riduzione del poli-tempo corretta , ma è una riduzione corretta (senza qualificatori).
Alex ten Brink,

inoltre c'è un caso speciale in cui tutti i numeri sono nella forma , ciascuno n i razionale, per qualsiasi c , non solo c = 2 . l'algoritmo di approssimazione a cui stavo pensando potrebbe trovare una c tale che la conversione dei valori in quella "base" sia "vicina" agli originali. cninicc=2c
vzn,

1

La spiegazione letterale è che il problema del prodotto secondario è NP completo da una riduzione da un problema fortemente completo NP come la copertura esatta di 3 serie. In tale riduzione "forte", gli interi di input sono limitati da alcune funzioni polinomiali nel numero di interi nell'istanza risultante del problema del prodotto del sottoinsieme.

Tale riduzione "forte" è impossibile da qualunque problema fortemente NP-completo sottoinsieme Sum Problemi salvo . Abbiamo un algoritmo di programmazione dinamica a tempo polinomiale per risolvere il problema Somma sottoinsieme se gli interi di input sono limitati da un polinomio.P=NP


Sì, lo capisco. La mia domanda riguardava il motivo per cui la conclusione che avevo fatto in precedenza era errata (vale a dire, equivalenza di SS e SP).
RDN

@rdn Non ci sono equivalenti in questo senso a meno che P = NP.
Mohammad Al-Turkistany,

Sì, ho capito. Ma voglio sapere cosa c'era che non andava nelle mie riduzioni in entrambe le direzioni.
RDN

Puoi delineare le tue riduzioni?
Mohammad Al-Turkistany,

I(SS)=X,SI(SP)=Y,PI(SS)I(SP)P=eSYi=eXiSP=eSI(SP)I(SS)S=log(P)Xi=log(Yi)PS=log(P)
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.