Come posso ridurre la somma del sottoinsieme in partizione?


Risposte:


19

Sia un'istanza della somma del sottoinsieme, in cui è un elenco (multiset) di numeri e è la somma target. Lasciate . Let essere la lista formata con l'aggiunta di a .L B S = ∑ L L ′ S + B , 2 S - B L(L,B)LBS=∑LL′S+B,2S−BL

(1) Se esiste un elenco secondario somma a , allora può essere suddiviso in due parti uguali: e . In effetti, la prima parte somma a e la seconda a .B L ′ M ∪ { 2 S - B } L ∖ M ∪ { S + B } B + ( 2 S - B ) = 2 S ( S - B ) + ( S + B ) = 2 SM⊆LBL′M∪{2S−B}L∖M∪{S+B}B+(2S−B)=2S(S−B)+(S+B)=2S

(2) Se può essere suddivisa in due parti uguali , allora v'è una lista parziale di sommando al . Infatti, poiché e ogni parte si somma a , i due elementi appartengono a parti diverse. Senza perdita di generalità, . Il resto degli elementi in appartengono a e somma a .P 1 , P 2 L B ( S + B ) + ( 2 S - B ) = 3 S 2 S 2 S - B ∈ P 1 P 1 L BL′P1,P2LB(S+B)+(2S−B)=3S2S2S−B∈P1P1LB


2
Ma il problema della somma
— parziale

SUBSET-SUM è NP-completo anche con numeri interi non negativi, ad esempio la riduzione da 3SAT finisce con numeri interi non negativi. Inoltre, c'è probabilmente una riduzione diretta da SUBSET-SUM intero a SUBSET-SUM intero non negativo.
— Yuval Filmus,

1
Sì, lo so, e questa riduzione è molto semplice. Solo notando che non è la somma del sottoinsieme nel suo modulo "predefinito". :)
— gukoff,

Funzionerebbe anche se ÈL⋃{B,S-B}? come| {B,S-B}| =B, come| L| =BL′L⋃{B,S−B}|{B,S−B}|=B|L|=B
— Curioso

1
@Issam Non sarebbe, questa istanza di PARTITION avrebbe sempre la soluzione . L,{B,S−B}
— Yuval Filmus,

1

La risposta menzionata da @Yuval Filmus è errata (è corretta SOLO se non ci sono numeri interi negativi). Considera il seguente multiset:

{−5,2,2,2,2,2}

e la somma target è . Sappiamo che non esiste un sottoinsieme. Ora costruiamo l'istanza per il problema di partizione. I due nuovi elementi aggiunti sono 2 σ - t = 12 e σ + t = 3 . Il multiset è ora: { - 5 , 2 , 2 , 2 , 2 , 2 , 3 , 12 } e la somma totale è 20 .−22σ−t=12σ+t=3

{−5,2,2,2,2,2,3,12}
20

Il problema della partizione risolve la risposta dando al sottoinsieme Qui, i 2 nuovi elementi sono nello stesso sottoinsieme (non c'è altro modo di dividere in metà della somma). Quindi, questo è un contro esempio. La risposta corretta è la seguente:

{2,2,2,2,2}

Aggiungi un elemento il cui valore è . La somma totale del multiset è ora di 2 t . Risolvi il problema della partizione che darà 2 sottogruppi di somma t . Solo una delle partizioni conterrà il nuovo elemento. Scegliamo l'altra partizione la cui somma è t e abbiamo risolto il problema del sottoinsieme riducendolo in un problema di partizione. Questo è ciò che spiega il link .2t−σ2ttt


1
Ma, come dice Yuval in un commento alla sua risposta, la somma dei sottogruppi è NP-completa anche se ci limitiamo a numeri interi positivi. Quindi possiamo presumere che non ci siano numeri negativi.
— David Richerby,

1
Sì, sono d'accordo, la somma del sottoinsieme è NP-completa anche in caso di numeri interi positivi. Stavo solo fornendo una prova più completa per qualsiasi numero intero.
— Rohit Kumar Jena,

1
"Basta fornire una prova più completa" e anche erroneamente affermare che una risposta esistente non è corretta.
— David Richerby,

1
Non è corretto nel senso che non funziona con numeri interi negativi. :) Pace :)
— Rohit Kumar Jena,

1

Ecco una prova semplice:

È facile vedere che SET-PARTITION può essere verificato in tempo polinomiale; data una partizione P1,P2 basta sommare i due e verificare che le loro somme siano uguali tra loro, il che è ovviamente una verifica del tempo polinomiale (perché la somma è un'operazione polinomiale e stiamo eseguendo al massimo |X| molte sommazioni).

Il nucleo della dimostrazione sta nel ridurre SUBSETSUM a PARTITION; a tal fine, dato l'insieme X e un valore t (la query della somma del sottoinsieme) formiamo un nuovo insieme X′=X∪{s−2t} dove s=∑x∈Xx . Per vedere che questa è una riduzione:

  • (⟹) supponiamo che esista qualche S⊂X tale che t=∑x∈Sx allora avremmo che

    s−t=∑x∈S∪{s−2t}x,
    s−t=∑x∈X′∖(S∪{s−2t})x
    e vorremmo che S∪{s−2t} eX′∖(S∪{s−2t}) formano una partizione diX′

  • (⟸P1′,P2′X′∑x∈P1′x=∑x∈P2′xP1P2X

    s−2t+∑x∈P1x=∑x∈P2x
    ⟹s−2t+∑x∈P1x+∑x∈P1x=∑x∈P2x+∑x∈P1x=s
    ⟹s−2t+2∑x∈P1x=s
    ⟹∑x∈P1x=t

t=∑x∈SxP1=S∪{s−2t}P2=X′∖(S∪{s−2t})P1′,P2′t=∑x∈P1′∖{s−2t}xf:(X,t)→X′(X,t)⇔X′=f(X,t)


0

Somma sottoinsieme:

Input: {a1, a2, ..., am} st M = {1..m} e ai sono numeri interi non negativi e S⊆ {1..k} e Σai (i∈S) = t

Partizione:

Input: {a1, a2, ..., am} e S⊆ {1, · · ·, m} st Σai (i∈S) = Σaj (j∉S)

Partizione Np Proof: se il prover fornisce una partizione (P1, P2) per il verificatore, il verificatore può facilmente calcolare la somma di P1 e P2 e verificare se il risultato è 0 in tempo lineare.

NP_Hard: SubsetSum ≤p PARTITION

Sia x l'input di SubsetSum e x = 〈a1, a2, ..., am, t〉 e Σai (i da 1 a m) = a

Caso 1: 2t> = a:

Sia f (x) = 〈a1, a2, ..., am, am + 1〉 dove am + 1 = 2t − a

Vogliamo mostrare che x∈SubsetSum ⇔ f (x) ∈PARTITION

quindi esistono S⊆ {1, ..., m} st T = {1..m} - S e Σai (i∈T) = at

e Let T '= {1 ... m, m + 1} - S così Σaj (j∈T') = a-t + 2t-a = t

che è esattamente Σai (i∈S) = t e mostra f (x) ∈PARTITION

ora mostreremo anche che f (x) ARTPARTITION ⇔ x∈SubsetSum

quindi esistono S⊆ {1, ..., m, m + 1} st T = {1, ..., m, m + 1} - S e Σai (i∈T) = [a + (2t-a ) -t] = t

e mostra Σai (i∈T) = Σaj (j∈S) quindi m + 1∈T e S⊆ {1, · · ·, m} e Σai (i∈S) = t

così x∈SubsetSum

Caso 2: 2t = <a :

possiamo controllare lo stesso ma proprio questa volta am + 1 è un − 2t


-3

questo link ha una buona descrizione di entrambe le riduzioni, partizione a subset-sum e subset-sum a partizione. Penso che sia più ovvio della risposta di YUVAL . link utile


4
Si prega di non pubblicare risposte solo link. Se il contenuto del link cambia o diventa non disponibile, la tua risposta diventerà inutile. Modifica la tua risposta in modo che sia utile, anche se il link non è disponibile (ad esempio, riformulando il contenuto con parole tue e fornendo il link come riferimento e fonte).
— Tom van der Zanden,
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.