Comment puis-je réduire la somme des sous-ensembles à la partition?

20

C'est peut-être assez simple, mais j'ai du mal à obtenir cette réduction. Je veux réduire la somme des sous-ensembles à la partition, mais pour le moment je ne vois pas la relation!

Est-il possible de réduire ce problème en utilisant une réduction Levin?

Si vous ne comprenez pas, écrivez pour obtenir des éclaircissements!

dbonadiman
la source

Réponses:

19

Soit une instance de somme de sous-ensemble, où est une liste (multiset) de nombres, et est la somme cible. Laissez . Soit soit la liste formée par l' addition à .(L,B)LBS=LLS+B,2SBL

(1) S'il existe une sous-liste sommant à , alors peut être partitionné en deux parties égales: et . En effet, la première partie résume à , et la seconde à .MLBLM{2SB}LM{S+B}B+(2SB)=2S(SB)+(S+B)=2S

(2) peut être divisé en deux parties égales , alors il existe une sous - liste de sommation de . En effet, puisque et chaque partie résume à , les deux éléments appartiennent à des parties différentes. Sans perte de généralité, . Le reste des éléments dans appartiennent à et la somme de .P 1 , P 2 L B ( S + B ) + ( 2 S - B ) = 3 S 2 S 2 S - B P 1 P 1 L BLP1,P2LB(S+B)+(2SB)=3S2S2SBP1P1LB

Yuval Filmus
la source
2
Mais le problème de sous-ensemble standard utilise tous les entiers, et le problème de partition utilise uniquement des entiers non négatifs ...
gukoff
SUBSET-SUM est NP-complet même avec des entiers non négatifs, par exemple la réduction de 3SAT se retrouve avec des entiers non négatifs. De plus, il y a probablement une réduction directe de SUBSET-SUM entier à SUBSET-SUM entier non négatif.
Yuval Filmus
1
Oui, je sais, et cette réduction est très facile. Notant simplement que ce n'est pas la somme du sous-ensemble dans sa forme "par défaut". :)
gukoff
Cela fonctionnerait-il également si est ? comme , comme L{B,S-B}| {B,S-B}| =B| L| =BLL{B,SB}|{B,SB}|=B|L|=B
Curieux
1
@Issam Ce ne serait pas le cas, l'instance PARTITION aurait toujours la solution . L,{B,SB}
Yuval Filmus
1

La réponse mentionnée par @Yuval Filmus est incorrecte (elle est correcte UNIQUEMENT s'il n'y a pas d'entiers négatifs). Considérez le multiset suivant:

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

et la somme cible est . Nous savons qu'il n'y a pas de sous-ensemble. Maintenant, nous construisons l'instance pour le problème de partition. Les deux nouveaux éléments ajoutés sont et . Le multiset est maintenant: et la somme totale est de .2 σ - t = 12 σ + t = 3 { - 5 , 2 , 2 , 2 , 2 , 2 , 3 , 12 } 2022σt=12σ+t=3

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

Le problème de partition résout la réponse en donnant le sous-ensemble Ici, les 2 nouveaux éléments sont dans le même sous-ensemble (il n'y a pas d'autre moyen de partitionner la moitié de la somme). Par conséquent, ceci est un contre-exemple. La bonne réponse est la suivante:

{2,2,2,2,2}

Ajoutez un élément dont la valeur est . La somme totale du multiset est maintenant de . Résoudre le problème de partition qui donnera 2 sous-ensembles de somme . Une seule de la partition contiendra le nouvel élément. Nous choisissons l'autre partition dont la somme est et nous avons résolu le problème de sous-ensemble en le réduisant en un problème de partition. C'est ce que le lien explique.2 t t t2tσ2ttt

Rohit Kumar Jena
la source
1
Mais, comme Yuval le dit dans un commentaire à sa réponse, la somme des sous-ensembles est NP- complète même si nous nous limitons aux entiers positifs. On peut donc supposer qu'il n'y a pas de nombres négatifs.
David Richerby
1
Oui, je suis d'accord, la somme du sous-ensemble est NP-complète même en cas d'entiers positifs. Je fournissais juste une preuve plus complète pour n'importe quel entier.
Rohit Kumar Jena
1
"Fournir simplement une preuve plus complète" et prétendre également à tort qu'une réponse existante est incorrecte.
David Richerby
1
C'est incorrect dans le sens où cela ne fonctionne pas pour les entiers négatifs. :) Peace :)
Rohit Kumar Jena
1

Voici une preuve simple:

Il est facile de voir que SET-PARTITION peut être vérifié en temps polynomial; étant donné une partition P1,P2 additionne simplement les deux et vérifie que leurs sommes sont égales, ce qui est évidemment une vérification temporelle polynomiale (car la sommation est une opération polynomiale et nous effectuons seulement |X| plusieurs sommations au maximum).

XtX=X{s2t}s=xXx

  • (SXt=xSx

    st=xS{s2t}x,
    st=xX(S{s2t})x
    S{s2t}X(S{s2t})X

  • (P1,P2XxP1x=xP2xP1P2X

    s2t+xP1x=xP2x
    s2t+xP1x+xP1x=xP2x+xP1x=s
    s2t+2xP1x=s
    xP1x=t

t=xSxP1=S{s2t}P2=X(S{s2t})P1,P2t=xP1{s2t}xf:(X,t)X(X,t)X=f(X,t)

Pedrpan
la source
0

Somme de sous-ensemble:

Entrée: {a1, a2, ..., am} st M = {1..m} et ai sont des nombres entiers non négatifs et S⊆ {1..k} et Σai (i∈S) = t

Cloison:

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

Partition Np Proof: si le prouveur fournit des partitions (P1, P2) pour le vérificateur, le vérificateur peut facilement calculer la somme de P1 et P2 et vérifier si le résultat est 0 en temps linéaire.

NP_Hard: SubsetSum ≤p PARTITION

Soit x l'entrée de SubsetSum et x = 〈a1, a2, ..., am, t〉 et Σai (i de 1 à m) = a

Cas 1: 2t> = a:

Soit f (x) = 〈a1, a2, ..., am, am + 1〉 où am + 1 = 2t − a

Nous voulons montrer que x∈SubsetSum ⇔ f (x) ∈PARTITION

donc il existe S⊆ {1, ..., m} st T = {1..m} - S et Σai (i∈T) = at

et Soit T '= {1 ... m, m + 1} - S donc Σaj (j∈T') = a-t + 2t-a = t

qui est exactement Σai (i∈S) = t et il montre f (x) ∈PARTITION

maintenant, nous allons également montrer que f (x) ∈PARTITION ⇔ x∈SubsetSum

il existe donc S⊆ {1, ..., m, m + 1} st T = {1, ..., m, m + 1} - S et Σai (i∈T) = [a + (2t-a ) -t] = t

et il montre Σai (i∈T) = Σaj (j∈S) donc m + 1∈T et S⊆ {1, · · ·, m} et Σai (i∈S) = t

donc x∈SubsetSum

Cas 2: 2t = <a :

nous pouvons vérifier la même chose, mais cette fois-ci, am + 1 est a − 2t

Behrooz Tabesh
la source
-3

ce lien a une bonne description des deux réductions, partition à sous-ensemble-somme et sous-ensemble-somme à partitionner. Je pense que c'est plus évident que la réponse de YUVAL . lien utile

user44970
la source
4
Veuillez ne pas publier de réponses contenant uniquement des liens. Si le contenu du lien change ou devient indisponible, votre réponse deviendra inutile. Veuillez modifier votre réponse afin qu'elle soit utile, même si le lien n'est pas disponible (par exemple, reformuler le contenu dans vos propres mots et fournir le lien comme référence et source).
Tom van der Zanden