¿Cómo puedo reducir Subset Sum a Partition?


20

Tal vez esto sea bastante simple, pero tengo algunos problemas para obtener esta reducción. ¡Quiero reducir Subset Sum a Partition pero en este momento no veo la relación!

¿Es posible reducir este problema usando una reducción de Levin?

¡Si no entiendes, escribe para aclarar!

Respuestas:


19

Sea una instancia de suma de subconjuntos, donde L es una lista (conjunto múltiple) de números y B es la suma objetivo. Deje que S = Σ L . Let L ' ser la lista formada por la adición de S + B , 2 S - B a L .(L,si)LsiS=LLS+si,2S-siL

(1) Si hay una sublista suma a B , entonces L ' se puede dividir en dos partes iguales: M { 2 S - B } y L M { S + B } . De hecho, la primera parte suma a B + ( 2 S - B ) = 2 S , y la segunda a ( S - B ) + ( S + BMETROLsiLMETRO{2S-si}LMETRO{S+si}si+(2S-si)=2S .(S-si)+(S+si)=2S

(2) Si se puede dividir en dos partes iguales P 1 , P 2 , entonces hay una lista secundaria de L sumando a B . De hecho, como ( S + B ) + ( 2 S - B ) = 3 S y cada parte suma a 2 S , los dos elementos pertenecen a partes diferentes. Sin pérdida de generalidad, 2 S - B P 1 . El resto de los elementos en P 1 pertenecen aLPAG1,PAG2Lsi(S+si)+(2S-si)=3S2S2S-siPAG1P1 y la suma de B .Lsi


2
Pero el problema estándar de la suma de subconjuntos usa todos los enteros, y el problema de la partición usa solo enteros no negativos ...
gukoff

SUBSET-SUM es NP-completo incluso con enteros no negativos, por ejemplo, la reducción de 3SAT termina con enteros no negativos. Además, probablemente haya una reducción directa del entero SUBSET-SUM al entero no negativo SUBSET-SUM.
Yuval Filmus

1
Sí, lo sé, y esta reducción es muy fácil. Simplemente observando que no es la suma del subconjunto en su forma "predeterminada". :)
gukoff

¿Funcionaría también si EsL{B,S-B}? como| {B,S-B}| =B, como| L| =BLL{si,S-si}El |{si,S-si}El |=siEl |LEl |=si
Curioso

1
@Issam No lo haría, esta instancia de PARTITION siempre tendría la solución . L,{si,S-si}
Yuval Filmus

1

La respuesta mencionada por @Yuval Filmus es incorrecta (es correcta SOLAMENTE si no hay enteros negativos). Considere el siguiente conjunto múltiple:

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

y la suma objetivo es . Sabemos que no hay subconjunto. Ahora, construimos la instancia para el problema de partición. Los dos nuevos elementos agregados son 2 σ - t = 12 y σ + t = 3 . El conjunto múltiple ahora es: { - 5 , 2 , 2 , 2 , 2 , 2 , 3 , 12 } y la suma total es 20 .-22σt=12σ+t=3

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

El problema de partición resuelve la respuesta dando el subconjunto

{2,2,2,2,2}
Aquí, los 2 elementos nuevos están en el mismo subconjunto (no hay otra forma de particionar en la mitad de la suma). Por lo tanto, este es un contraejemplo. La respuesta correcta es la siguiente:

Agregue un elemento cuyo valor sea . La suma total del multiset ahora es 22tσ . Resuelva el problema de partición que dará 2 subconjuntos de suma t . Solo una de las particiones contendrá el nuevo elemento. Elegimos la otra partición cuya suma es t y hemos resuelto el problema del subconjunto reduciéndolo a un problema de partición. Esto es lo queexplicaelenlace.2ttt


1
Pero, como dice Yuval en un comentario a su respuesta, la suma del subconjunto es NP -completo incluso si restringimos a enteros positivos. Entonces podemos suponer que no hay números negativos.
David Richerby

1
Sí, estoy de acuerdo, la suma del subconjunto está completa NP incluso en el caso de enteros positivos. Solo estaba proporcionando una prueba más completa para cualquier número entero.
Rohit Kumar Jena

1
"Solo proporciona una prueba más completa" y también afirma erróneamente que una respuesta existente es incorrecta.
David Richerby

1
Es incorrecto en el sentido de que no funciona para enteros negativos. :) Paz :)
Rohit Kumar Jena

1

Aquí hay una prueba directa:

Es fácil ver que SET-PARTITION puede verificarse en tiempo polinómico; dada una partición P1,P2 solo suma los dos y verifica que sus sumas sean iguales entre sí, lo que obviamente es una verificación de tiempo polinomial (porque la suma es una operación polinómica y solo estamos realizando a lo sumo |X| muchas sumas).

El núcleo de la prueba está en reducir SUBSETSUM a PARTITION; para ese fin dado el conjunto X y un valor t (la consulta de suma de subconjuntos) formamos un nuevo conjunto X=X{s2t} donde s=xXx . Para ver que esto es una reducción:

  • (SXt=xSx

    st=xS{s2t}x,
    st=xX(S{s2t})x
    S{s2t}X(S{s2t}) form a partition of X

  • () Suppose that there is a partition P1,P2 of X such that xP1x=xP2x. Notice that this induces a natural partition P1 and P2 of X such that WLOG we have that

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

Hence from a solution t=xSx we can form a parition P1=S{s2t}, P2=X(S{s2t}) and conversely from a partition P1,P2 we can form a soltuion t=xP1{s2t}x and therefore the mapping f:(X,t)X is a reduction (because (X,t) is in the language/set SUBSETSUM X=f(X,t) is in the language/set PARTITION) and it is clear to see that the transformation was done in polynomial time.


0

Subset Sum:

Input: {a1,a2,...,am} s.t M={1..m} and ai are non negative integer and S⊆{1..k} and Σai(i∈S) = t

Partition:

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

Partition Np Proof: if prover provides a partitions(P1,P2) for verifier, verifier can easily calculate the sum of P1 and P2 and check if the result is 0 in linear time.

NP_Hard: SubsetSum ≤p PARTITION

Let x be input of SubsetSum and x=〈a1,a2,...,am,t〉 and Σai(i from 1 to m) = a

Case1: 2t >= a:

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

We want to show that x∈SubsetSum ⇔ f(x)∈PARTITION

so there exist S⊆ {1,...,m} s.t T = {1..m} - S and Σai(i∈T) = a-t

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

which is exactly Σai(i∈S)= t and it shows f(x)∈PARTITION

now We also will show that f(x)∈PARTITION ⇔ x∈SubsetSum

so there exist S⊆ {1,...,m,m+1} s.t T = {1,...,m,m+1} - S and Σai (i∈T)= [a+(2t-a)-t]=t

and it shows Σai(i∈T) = Σaj(j∈S) so m+1∈T and S⊆ {1,· · ·,m} and Σai(i∈S)= t

so x∈SubsetSum

Case 2: 2t =< a :

we can check same but just this time am+1 is a−2t


-3

Este enlace tiene una buena descripción de ambas reducciones, partición a subconjunto-suma y subconjunto-suma a partición. Creo que es más obvio que la respuesta de YUVAL . enlace útil


4
No publique respuestas de solo enlace. Si el contenido del enlace cambia o deja de estar disponible, su respuesta será inútil. Modifique su respuesta para que sea útil, incluso si el enlace no está disponible (por ejemplo, reformulando el contenido en sus propias palabras y proporcionando el enlace como referencia y fuente).
Tom van der Zanden
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.