Dado um por matriz binária (as entradas são ou ), o problema é determinar se existem dois vetores binários tais que (todas as operações executadas em ). Este problema é NP-difícil? M v 1 = M v 2 Z
Está claramente em NP, pois você pode dar dois vetores como testemunhas.
Equivalentemente: Dado , existe um vetor diferente de zero tal que ? M v = 0
Equivalentemente: dados vetores acima de , existem dois subconjuntos diferentes tais que ?
cc.complexity-theory
np-hardness
linear-algebra
Mohammad Al-Turkistany
fonte
fonte
Respostas:
Eu uso a formulação equivalente user17410:
Entrada: vetores over , faz parte da entrada Pergunta: Existem dois subconjuntos diferentes tais quen X={x1,…,xm} {0,1}n n
A , B ⊆ X
A prova de dureza envolve muitas reduções intermediárias que seguem a mesma "cadeia" usada para provar a dureza do problema padrão EQUAL SUBSET SUM:
X3C SUBSET SUM PARTITION par-ímpar PARTITION EQUAL SUBSET SUM≤ ≤ ≤ ≤
(Ainda estou verificando para que possa estar errado :)
PASSO 1
O seguinte problema ( 0-1 VETOR SUBSET SUM ) é NP-complete: dado , vetores sobre e um vetor de soma alvo , decida se houver tal que Prova : Redução direta da TAMPA EXATA POR 3 SETS (X3C): dado um conjunto de elementos e uma coleção de três subconjuntos de elementos criamos a configuração de instância 0-1 VECTOR SUM correspondente se e somente se o elementox i { 0 , 1 } n t Um ⊆ X Σ x ∈ Um x = t n Y = { y 1 , . . . , Y n } C m C = { C 1 , . . . , C m } x iX={x1,…,xm} xi {0,1}n t A⊆X
PASSO 2 Encontrar dois subconjuntos de somas iguais entre 0-1 vetores acima de , é equivalente a encontrar dois subconjuntos de somas iguais de vetores com elemento de tamanho delimitado onde para fixo .m { 0 , 1 } n A , B x 1 . . . x m m a x { x i } = O ( ( m n ) k ) kA,B m {0,1}n A,B x1...xm max{xi}=O((mn)k) k
Por exemplo, o conjunto de vetores:
É equivalente aos vetores 0-1:
Informalmente, os vetores 0-1 são agrupados (se você selecionar um vetor do grupo x2 e adicioná-lo ao subconjunto , será forçado a incluir em os outros dois e colocar o último no subconjunto ) e as somas serão feitas em unário (esta é a razão pela qual os vetores não binários correspondentes devem conter elementos que são polinomialmente limitados em relação a ).A B m nA A B mn
Portanto, o seguinte problema é NP-completo.
ETAPA 3
O seguinte problema ( 0-1 PARCÇÃO DO VETOR ) é NP-completo: dado , vetores sobre decidem se pode ser particionado em dois subconjuntos modo que x i { 0 , 1 } n X B 1 , B 2 Σ x ∈ B 1 x = Σ x ∈ B 2 xB={x1,…,xm} xi {0,1}n X B1,B2
t S = ∑ x i b ″ = t + SX={x1,…,xm} t S=∑xi X b′=−t+2S b′′=t+S B=X∪{b′,b′′}
( ) Suponha que exista tal que ; definimos e ; temos Um ⊆ X Σ x ∈ Um x = t B 1 = Uma ∪ { b ' } B 2 = B ∖ B 1 = X ∖ { A } ∪ { b " } Σ x ∈ B 1 = b ' + Σ x ∈ A x = t - t + S = 2 S⇒ A⊆X ∑x∈Ax=t B1=A∪{b′} B2= B ∖ B1=X∖{A}∪{b′′}
( ) Suponha que e tenham soma igual. não podem pertencer ao mesmo conjunto (caso contrário, sua soma é e não podem ser "equilibrados" pelos elementos do outro conjunto). Suponha que ; temos:B 1 B 2 b ′ , b ″ ≥ 3 S b ′ = - t + 2 S ∈ B 1⇐ B1 B2 b′,b′′ ≥3S b′=−t+2S∈B1
Por isso temos de ter e é uma solução válida para o 0-1 VETOR SUM.B 1 ∖ { b ′ }∑x∈B1∖{b′}x=t B1∖{b′}
Nós permitimos apenas 0-1 vetores no conjunto ; portanto, os vetores devem ser "representados em unário", como mostrado na ETAPA 2.b ′ , b ″B b′,b′′
ETAPA 3
O problema ainda é NP-completo se os vetores são numerados de e os dois subconjuntos devem ter tamanho igual e exigimos que contenha exatamente um de para (portanto, pela restrição de tamanho igual, o outro elemento do par deve ser incluído em ) ( 0-1 PARTIÇÃO MESMO DE VETOR DO VETOR ).X 1 , X 2 X 1 x 2 i - 1 , x 2 i 1 ≤ i ≤ n X 2x1,...,x2n X1,X2 X1 x2i−1,x2i 1≤i≤n X2
Prova:: A redução é de 0-1 PARTIÇÃO DE VETOR e é semelhante à redução de PARTIÇÃO para PARTIÇÃO MESMO. Se são vectores sobre substitua cada vector com dois vectores de mais de :m { 0 , 1 } n { 0 , 1 } 2 n + 2 mX={x1,...,xm} m {0,1}n { 0 , 1 }2 n + 2 m
Devido ao elemento , os vetores e não podem estar contidos no mesmo subconjunto; e uma solução válida para a PARTIÇÃO MESMO VECTOR 0-1 VETOR corresponde a uma solução válida da PARTIÇÃO VETORIAL 0-1 original (basta escolher os elementos 2m + 1..2m + n de cada vetor da solução descartando vetores que contenham todos zeros nessas posições).x ′ 2 i - 1 x ′ 2 i2i x′2i−1 x′2i
PASSO 4
Soma de subconjunto igual a 0-1 de VETOR (o problema na questão) é NP-completa: redução de PARTIÇÃO MÉDIA DE VETOR DE 0-1 semelhante à redução de PARTIÇÃO MÉDIA DE VETOR A PARTIDO DE SOMA IGUAL, como provado em Gerhard J. Woeginger , Zhongliang Yu, No problema de soma de subconjuntos iguais : dado um conjunto ordenado de vetores acima de , construímos um defina de vetores sobre .2 m { 0 , 1 } n Y 3 m { 0 , 1 } 2 m + nA={x1,...,x2m} 2m {0,1}n Y 3m {0,1}2m+n
Para cada vetor , construímos um vetor sobre desta maneira:y 2 i - 1 { 0 , 1 } 2 m + nx2i−1,1≤i≤m y2i−1 {0,1}2m+n
Para cada vetor , construímos um vetor sobre desta maneira:y 2 i { 0 , 1 } 2 m + nx2i,1≤i≤m−1 y2i {0,1}2m+n
elemento parax2m
Finalmente, adicionamos elementos fictícios:m
Observe novamente que vetores contendo valores podem ser representados em "unário" usando um grupo de 0-1 vetores, como mostrado no PASSO 2.>1
Y 1 , Y 2 XY tem dois subconjuntos disjuntos com soma igual se e somente se tiver uma partição ímpar. Y1,Y2 X
fonte
EDIT: Minha prova original teve um bug. Agora acredito que está consertado.
Reduzimos o problema de EQUAL SUM SUBSETS para esse problema. EQUAL SUM SUBSETS é o problema de: dado um conjunto de números inteiros, encontre dois subconjuntos separados que tenham a mesma soma. Sabe-se que IGUAL SUM SUBSETS é completo em NP.m
Suponha que essas cadeias de bits não fossem vetores, mas representações de números de bits em binário. Em seguida, o problema seria NP-completo com uma redução de EQUAL SUM SUBSETS. Vou mostrar como fazer com que esses vetores se comportem como se fossem números binários. O que precisamos é ser capaz de fazer carrega; isto é, para cada par de coordenadas adjacentes, precisamos ser capazes de substituir o vetor ..02 .. por ..10 ...n
Como podemos fazer isso? Precisamos de um gadget que nos permita fazer isso. Em particular, precisamos de dois subconjuntos cujas somas são 0,02 .. x e ..10 .. x, em que x é uma string de bits usando novas coordenadas (isto é, coordenadas que não são nenhuma das coordenadas que compõem o binário). representações) e onde existe apenas uma maneira de criar dois subconjuntos com a mesma soma nas novas posições de bits correspondentes a x.n
Isso é bastante fácil de fazer. Para cada par de posições de bits adjacentes, adicione três vetores da seguinte forma. Aqui, os dois últimos bits são coordenadas que são diferentes de zero apenas nesses três vetores, e todo bit não explicitamente indicado abaixo é 0.
Deixe-me fazer um exemplo. Queremos mostrar como 5 + 3 = 8 funciona.
Aqui está 8 = 5 + 3 em binário:
=
Essas cadeias de bits fornecem a mesma soma em binário, mas não na adição de vetor.
Agora, temos carregamentos nos lugares 1, 2, 4, portanto, precisamos adicionar três conjuntos de três vetores à equação para executar esses carregamentos.
=
Esses conjuntos agora têm a mesma soma na adição de vetores. As somas são:
em ambos os casos.
Essa construção funciona bem se houver apenas um transporte por posição, mas pode haver potencialmente carregamentos por posição, e você precisa garantir que sua construção possa suportar até n carregamentos e que os diferentes carregamentos não interfiram um com o outro. Por exemplo, se você adicionou dois conjuntos diferentes de três vetores para o mesmo par de posições adjacentes (que é o que propus na minha prova original):n n
você tem o problema de obter dois conjuntos diferentes de vetores, dando a mesma soma:
=
Como consertar isto? Adicione um conjunto de vetores que permite transportar 1, um conjunto que permite transportar 2 e um conjunto para 4, 8, , 2 ⌊ log n ⌋ . Não vou detalhar os detalhes dessa construção agora, mas deve ser bem direto. Como cada número tem uma representação binária exclusiva, isso permitirá que você carregue qualquer número até n . Para transportar 4, por exemplo, você precisa encontrar quatro vetores com a mesma soma que dois vetores e para os quais essa é a única relação linear entre os dois conjuntos. Por exemplo, o conjunto… ⌊logn⌋ n
trabalho. Você pode verificar facilmente se a relação
=
é a única relação possível entre esses seis vetores, porque a matriz formada por essas seis linhas tem classificação 5.
fonte
Isso não responde à pergunta, mas pode conter algumas observações úteis. Eu não queria colocá-lo como um comentário, porque acho comentários longos e fragmentados incomodantes de ler
A reformulação do problema, como indicado no meu comentário à pergunta:
Proponho chamar esse problema de 2SUBSET-BINARY-VECTOR-SUM devido ao fato de estarmos procurando por 2 subconjuntos de vetores binários.
Algumas observações:
fonte