Dada una matriz binaria por (las entradas son o ), el problema es determinar si existen dos vectores binarios modo que (todas las operaciones se realizan sobre ). ¿Es este problema NP-hard?
Está claramente en NP, ya que puede dar dos vectores como testigos.
Equivalente: dado , ¿hay un vector distinto de cero tal que ?
Equivalente: dados vectores sobre , ¿hay dos subconjuntos diferentes tales que ?
cc.complexity-theory
np-hardness
linear-algebra
Mohammad Al-Turkistany
fuente
fuente
Respuestas:
Yo uso la formulación equivalente user17410:
Entrada: vectores X = { x 1 , ... , x m } sobre { 0 , 1 } n , n es parte de la entrada Pregunta: ¿Hay dos subconjuntos diferentes A , B ⊆ X tales que ∑ x ∈ A x = ∑ x ∈ B xn X={x1,…,xm} {0,1}n n
A,B⊆X
La prueba de dureza involucra muchas reducciones intermedias que siguen la misma "cadena" utilizada para probar la dureza del problema estándar EQUAL SUBSET SUM:
X3c SUBSET SUM ≤ PARTITION ≤ PARTITION par-impar ≤ EQUAL SUBSET SUM≤ ≤ ≤ ≤
(Todavía lo estoy revisando, así que puede estar mal :)
PASO 1
El siguiente problema ( SUMA DEL SUBSETO DEL VECTOR 0-1 ) es NP-completo: dado , x i vectores sobre { 0 , 1 } ny un vector de suma objetivo t , decida si hay A ⊆ X tal que ∑ x ∈ A x = t Prueba : reducción directa de la CUBIERTA EXACTA POR 3-SETS (X3C): dado un conjunto de n elementos Y = { yX={x1,…,xm} xi {0,1}n t A⊆X
PASO 2 Encontrar dos subconjuntos de suma igual entre m 0-1 vectores sobre { 0 , 1 } n , es equivalente a encontrar dos subconjuntos de suma igual A , B de vectores con elemento de tamaño acotado x 1 . . . x m donde m a x { x i } = O ( ( m n ) k ) para k fijo .A,B m {0,1}n A,B x1...xm max{xi}=O((mn)k) k
Por ejemplo el conjunto de vectores:
Es equivalente a los vectores 0-1:
Informalmente, los vectores 0-1 se agrupan (si selecciona un vector del grupo x2 y lo agrega al subconjunto , entonces se ve obligado a incluir en A los otros dos y colocar el último en el subconjunto B ) y las sumas se hacen en unario (esta es la razón por la cual los vectores no binarios correspondientes deben contener elementos que están polinómicamente delimitados con respecto a m n ).A A B mn
Entonces, el siguiente problema es NP-completo.
PASO 3
El siguiente problema ( 0-1 PARTICIÓN VECTORIAL ) es NP-completo: dado , x i vectores sobre { 0 , 1 } n deciden si X puede dividirse en dos subconjuntos B 1 , B 2 tal que ∑ x ∈ B 1 x = ∑ x ∈ B 2 xB={x1,…,xm} xi {0,1}n X B1,B2
Prueba : Reducción de 0-1 SUMA DEL VECTOR: dado y el vector de suma objetivo t ; sea S = ∑ x i , agregamos a X los siguientes vectores: b ′ = - t + 2 S y b ″ = t + SX={x1,…,xm} t S=∑xi X b′=−t+2S b′′=t+S : .B=X∪{b′,b′′}
( ) Suponga que existe A ⊆ X tal que ∑ x ∈ A x = t ; establecemos B 1 = A ∪ { b ′ } y B 2 = B ∖ B 1 = X ∖ { A } ∪ { b ″ } ; tenemos ∑ x ∈ B 1 = b ′ + ∑ x ∈ A⇒ A⊆X ∑x∈Ax=t B1=A∪{b′} B2=B∖B1=X∖{A}∪{b′′} ∑ x ∈ B 2 = b ″ + ∑ x ∈ X ∖ A x = b ″ + S - ∑ x ∈ A x = 2 S
( ) Suponga que B 1 y B 2 tienen la misma suma. b ′ , b ″ no pueden pertenecer al mismo conjunto (de lo contrario, su suma es ≥ 3 S y los elementos del otro conjunto no pueden "equilibrarla"). Supongamos que b ′ = - t + 2 S ∈ B 1 ; tenemos:⇐ B1 B2 b′,b′′ ≥3S b′=−t+2S∈B1
Por lo tanto tenemos que tener y B 1 ∖ { b ' } es una solución válida para el 0-1 VECTOR SUM.∑x∈B1∖{b′}x=t B1∖{b′}
Solo permitimos 0-1 vectores en el conjunto , por lo que los vectores b ' , b ″ deben estar "representados en unario" como se muestra en el PASO 2.B b′,b′′
PASO 3
El problema es todavía NP-completo si los vectores se numeran de los dos subconjuntos X 1 , X 2 deben tener el mismo tamaño y se requiere que X 1 contenga exactamente uno de x 2 i - 1 , x 2 i para 1 ≤ i ≤ n (entonces, por la restricción de igual tamaño , el otro elemento del par debe incluirse en X 2 ) ( 0-1 VECTOR INCLUSO-PARTICIÓN ).x1,...,x2n X1,X2 X1 x2i−1,x2i 1≤i≤n X2
Prueba: La reducción es de 0-1 PARTICIÓN DE VECTOR y es similar a la reducción de PARTICIÓN a PARTICIÓN INCLUSO. Si son m vectores sobre { 0 , 1 } n reemplaza cada vector con dos vectores sobre { 0 , 1 } 2 n + 2 m :X={x1,...,xm} m {0,1}n {0,1}2n+2m
Debido al elemento , los vectores x ′ 2 i - 1 y x ′ 2 i no pueden estar contenidos en el mismo subconjunto; y una solución válida para la PARTICIÓN INCLUSIVA DEL VECTOR 0-1 corresponde a una solución válida de la PARTICIÓN DEL VECTOR 0-1 original (solo seleccione los elementos 2m + 1..2m + n de cada vector de la solución descartando los vectores que contienen todos ceros en esas posiciones).2i x′2i−1 x′2i
ETAPA 4
0-1 VECTOR IGUAL SUBSET SUM (el problema en la pregunta) es NP-complete: reducción de 0-1 VECTOR PARTICIÓN INCLUSIVA similar a la reducción de EVEN-ODD PARTITION a EQUAL SUM SUBSET, como se demostró en Gerhard J. Woeginger , Zhongliang Yu, sobre el problema de igual subconjunto de suma : dado un conjunto ordenado de 2 m vectores sobre { 0 , 1 } n , construimos un conjunto Y de 3 m vectores sobre { 0 ,A={x1,...,x2m} 2m {0,1}n Y 3m .{0,1}2m+n
Para cada vector construimos un vector y 2 i - 1 sobre { 0 , 1 } 2 m + n de esta manera:x2i−1,1≤i≤m y2i−1 {0,1}2m+n
Para cada vector construimos un vector y 2 i sobre { 0 , 1 } 2 m + n de esta manera:x2i,1≤i≤m−1 y2i {0,1}2m+n
Mapeamos el elemento parax2m
Finalmente agregamos elementos ficticios:m
Observe nuevamente que los vectores que contienen valores pueden representarse en "unario" usando un grupo de vectores 0-1 como se muestra en el PASO 2.>1
tiene dos subconjuntos disjuntos Y 1 , Y 2 que tienen la misma suma si y solo si X tiene una partición par-impar.Y Y1,Y2 X
fuente
EDITAR: Mi prueba original tenía un error. Ahora creo que está arreglado.
Reducimos el problema de los EQUIPOS DE SUMA IGUAL a este problema. El problema de: SUBSETOS DE SUMA IGUAL es: dado un conjunto de enteros, encontrar dos subconjuntos disjuntos que tengan la misma suma. Se sabe que los SUBSETOS DE IGUAL SUMA son NP completos.m
Supongamos que estas cadenas de bits no son vectores, sino representaciones de números de bits en binario. Entonces el problema sería NP-completo mediante una reducción de SUBSETES DE SUMA IGUAL. Mostraré cómo hacer que estos vectores se comporten como si fueran números binarios. Lo que necesitamos es poder hacer acarreos; es decir, para cada par de coordenadas adyacentes, necesitamos poder reemplazar el vector ..02 .. por ..10 ...n
¿Cómo podemos hacer eso? Necesitamos un gadget que nos permita hacer eso. En particular, necesitamos dos subconjuntos cuyas sumas son ..02 .. x y ..10 .. x, donde x es una cadena de bits que utiliza nuevas coordenadas (es decir, coordenadas que no son ninguna de las coordenadas que forman el binario representaciones), y donde solo hay una forma de crear dos subconjuntos con la misma suma en las nuevas posiciones de bit correspondientes a x.n
Esto es bastante fácil de hacer. Para cada par de posiciones de bits adyacentes, agregue tres vectores de la siguiente forma. Aquí los dos últimos bits son coordenadas que no son cero solo en estos tres vectores, y cada bit que no se proporciona explícitamente a continuación es 0.
Déjame hacer un ejemplo. Queremos mostrar cómo funciona 5 + 3 = 8.
Aquí hay 8 = 5 + 3 en binario:
=
Estas cadenas de bits dan la misma suma en binario, pero no en la suma de vectores.
Ahora, tenemos acarreos en los lugares 1, 2, 4, por lo que necesitamos agregar tres conjuntos de tres vectores a la ecuación para realizar estos acarreos.
=
Estos conjuntos ahora tienen la misma suma en la suma de vectores. Las sumas son:
en ambos casos.
tienes el problema de que obtienes dos conjuntos diferentes de vectores que dan la misma suma:
=
trabajos. Puede verificar fácilmente que la relación
=
es la única relación posible entre estos seis vectores porque la matriz formada por estas seis filas tiene rango 5.
fuente
Esto no responde la pregunta, pero puede contener algunas observaciones útiles. No quería ponerlo como un comentario porque los comentarios largos y fragmentados son molestos de leer
La reformulación del problema como se indica en mi comentario a la pregunta:
Propongo llamar a este problema 2SUBSET-BINARY-VECTOR-SUM debido al hecho de que estamos buscando 2 subconjuntos de vectores binarios.
Algunas observaciones
fuente