确定矩阵的内核是否包含所有非零向量,且其所有项均为-1、0或1


27

给定一个 ×二进制矩阵(项为或),问题在于确定是否存在两个二进制向量,使得(所有操作都在)。NP这个问题难吗?n M 0 1 v 1v 2 M v 1 = M v 2 ZmnM01v1v2Mv1=Mv2Z

很明显,在NP中,您可以提供两个向量作为见证。


等效地:给定,是否有一个非零向量使得?v { - 1 0 1 } Ñ中号v = 0Mv{1,0,1}nMv=0

等效地:在给定向量,有两个不同的子集使得?X = { X 1... X Ñ } { 0 1 } X Σ X X = Σ X XnX={x1,,xn}{0,1}mA,BXxAx=xBx


除非我误解了这个问题,否则这是否等同于确定是否存在非零的使得?这不是通过确定的等级来解决吗?M v = 0 MvMv=0M
mhum

8
@mhum没有,它等同于确定是否存在一个非零v{1,0,1}n使得Mv=0
Sasho Nikolov

啊。我错过了vi也必须是二进制。我的错。
mhum

2
好像是0 / 1-整数编程的可行性问题。是在Z还是在运算Z2
卡夫(Kaveh),

3
问题的再形成:给定n矢量X={x1,,xn}{0,1}m。是否有两个不同的子集A,BX,使得xAx=xBx?我认为,如果将总和不取模2,即运算超过Z
John D

Answers:


7

我使用user17410等效公式:

输入:矢量X = { X 1... X }{ 0 1 } ÑÑ被输入的一部分 问题:是否存在两个不同的子集X,使得 Σ X X = Σ X XnX={x1,,xm}{0,1}nn
A,BX

xAx=xBx

硬度证明涉及许多中间减少,这些减少遵循用于证明标准“等值子集和”问题的硬度的同一“链”:

X3C 子集和 PARTITION 偶数-奇数PARTITION EQUAL子集和

(我仍在检查它,所以可能是错误的:)

步骤1

以下的问题(0-1 VECTOR SUBSET SUM)是一个NP完全:给定 X 矢量在{ 0 1 } Ñ和目标和向量,决定是否有X,使得 Σ X X = 证明:从EXACT COVER直接还原BY 3-SETS(X3C):给定一组的ñ元件ŷ = { ÿX={x1,,xm}xi{0,1}ntAX

xAx=t
n和收集 ç三个要素子集 c ^ = { Ç 1C m }当且仅当元素 j包含在 C i中时,我们才建立对应的0-1 VECTOR SUM实例设置 x i [ j ] = 1= [ 1 1 .1Y={y1,...,yn}CmC={C1,...,Cm}xi[j]=1jCit=[1,1,...1]

步骤2 查找两个相等的子集和之间 0-1矢量超过{ 0 1 } Ñ,等价于求两个相等的子集和一个具有有界尺寸的要素矢量的X 1x m其中,对于固定km a x { x i } = O m n kA,Bm{0,1}nA,Bx1...xmmax{xi}=O((mn)k)k

例如向量集:

x1 2 1 0 1
x2 1 2 3 1

等于0-1向量:

x1  1 1 0 1   1 0   0 0 0
    1 0 0 0   0 1   0 0 0 
    0 0 0 0   1 1   0 0 0 
              ^ ^
                +-- 0 elsewhere

x2  1 1 1 1   0 0   1 0 0
    0 1 1 0   0 0   0 1 0
    0 0 1 0   0 0   0 0 1
    0 0 0 0   0 0   1 1 1
                    ^ ^ ^
                      +-- 0 elsewhere

非正式地,将0-1个向量进行分组(如果选择x2组的一个向量并将其添加到子集,则您被迫将另外两个向量包括在A中,最后一个向量放入子集B),并且总和在一元(这就是为什么相应的非二进制向量必须包含相对于m n多项式有界的元素的原因)。AABmn

因此,以下问题是NP完全的。

步骤3

以下的问题(0-1 VECTOR PARTITION)是一个NP完全:给定的 X 矢量在{ 0 1 } Ñ决定是否X可以在两个子集被划分12使得 Σ X 1 X = Σ X 2 XB={x1,,xm}xi{0,1}nXB1,B2

xB1x=xB2x

证明:从0-1矢量和中减去:给定 和目标和向量t;令S = x i,我们向X添加以下向量:b ' = t + 2 Sb = t + SX={x1,,xm}tS=xiXb=t+2Sb=t+SB=X{b,b}

)假设存在X,使得Σ X X = ; 我们设置1 = { b ' }2 = 1 = X { } { b } ; 我们有 Σ X 1 = b ' + Σ X AXxAx=tB1=A{b}B2=BB1=X{A}{b}Σ X 2 = b + Σ X X X = b + 小号- Σ X X = 2 小号

xB1=b+xAx=tt+S=2S
xB2=b+xXAx=b+SxAx=2S

)假设B 1B 2具有相等的和。b 'b 不能同时属于相同的组(否则它们的总和是3 小号,不能“在另一组平衡”的要素)。假设b ' = - + 2 小号1 ; 我们有:B1B2b,b3Sb=t+2SB1

t+2S+xB1{b}x=t+S+xB2{b}x

因此,我们必须具有1{ b ' }是0-1 VECTOR SUM一个有效的解决方案。xB1{b}x=tB1{b}

我们只允许在集合使用0-1个向量,因此,向量b 'b 必须“表示为一元”,如步骤2所示。Bb,b

步骤3

x1,...,x2nX1,X2X1x2i1,x2i1inX2

证明::减少是从0-1矢量分区开始的,与减少从分区到偶数分区的过程类似。如果以上向量{ 0 1 } Ñ替换两个向量在每个矢量{ 0 1 } 2 Ñ + 2 X={x1,...,xm}m{0,1}n{0,1}2n+2m

       1   2       n
 --------------------
 x_i  b_1 b_2 ... b_n

 becomes:

           1 2 ... 2i ... 2m
  --------------------------
  x'_2i-1  0 0 ...  1 ...  0  b_1 b_2 ... b_n   0   0  ...  0  
  x'_2i    0 0 ...  1 ...  0   0   0  ...  0   b_1 b_2 ... b_n 

2ix2i1x2i

第四步

A={x1,...,x2m}2m{0,1}nY3m{0,1}2m+n

x2i1,1imy2i1{0,1}2m+n

  1 2 ... i i+1 ... m  m+1 m+2 ... m+i ... 2m  2m+1 ... 2m+n
  ------------------------------------------------------
  0 0 ... 2  0  ... 0   0   0       1       0  x_{2i-1}

x2i,1im1y2i{0,1}2m+n

  1 2 ... i i+1 ... m  m+1 m+2 ... m+i ... 2m  2m+1 ... 2m+n
  ------------------------------------------------------
  0 0 ... 0  2  ... 0   0   0       1       0  x_{2i}

x2m

  1 2 ...       ... m  m+1 m+2 ...  . 2m  2m+1 ... 2m+n
  ------------------------------------------------------
  2 0 ...       ... 0   0   0          1  x_{2m}

m

  1 2 ...       ... m  m+1 m+2 ...  ... 2m  2m+1 ... 2m+n
  ------------------------------------------------------
  4 0 ...       ... 0   0   0            0  0    ... 0
  0 4 ...       ... 0   0   0            0  0    ... 0
  ...
  0 0 ...       ... 4   0   0            0  0    ... 0

>1

YY1,Y2X


所谓的0-1向量分区等价于确定集合系统是否存在差异0的问题。这是NP难题,因为它捕获了2-2-集合分裂问题,请参见guruswami的本文第9章cs.cmu.edu/~venkatg/pubs/papers/ss-jl.ps ; 我的论文对差异的难度
Sasho Nikolov

|Xi{x2j1,x2j}|=1i{1,2}1jm

(x2i1,x2i)(x2i1,x2i)X1

8

编辑:我的原始证明有一个错误。我现在认为它是固定的。

m

n

n

这很容易做到。对于每对相邻的位位置,添加以下形式的三个向量。在这里,最后两位是仅在这三个向量中不为零的坐标,并且在下面未明确给出的每个位均为0。

..10 .. 11
..01 .. 10
..01 .. 01

让我举个例子。我们想展示5 + 3 = 8的工作原理。

这是8 = 5 + 3的二进制:

1000

=

0101
0011

这些位串以二进制形式给出相同的总和,但不以向量相加给出相同的总和。

现在,我们在1、2、4位有进位,因此我们需要在方程中添加三组三个向量,以执行这些进位。

1000 00 00 00
0001 00 00 01
0001 00 00 10
0010 00 01 00
0010 00 10 00
0100 01 00 00
0100 10 00 00

=

0101 00 00 00
0011 00 00 00
0010 00 00 11
0100 00 11 00
1000 11 00 00

这些集合现在在向量加法中具有相同的总和。总和为:

1222 11 11 11

在两种情况下。

nn

..01 .. 01 00
..01 .. 10 00
..10 .. 11 00
..01 .. 00 01
..01 .. 00 10
..10 .. 00 11

您遇到的问题是,您会得到两组具有相同总和的不同向量:

..01 .. 01 00
..01..10 00
..10 .. 00 11

=

..01 .. 00 01
..01 .. 00 10
..10 .. 11 00

lognn

..01 .. 11000
..01 .. 00100
..01 .. 00010
..01..00001
..10 .. 10001
..10..01110

作品。您可以轻松检查该关系

11000
00100
00010
00001

=

10001
01110

是这六个向量之间唯一可能的关系,因为这六行形成的矩阵的等级为5。


一个澄清,您说“现在,我们在1、2、4个地方都有携带”;但是在问题中,我们不知道选择了哪些向量,因此必须将进位小工具添加到每个相邻的位位置吗?在示例的第一个列表中有7个向量,对吗?
Marzio De Biasi 2013年

假设有一个解决子集和问题的方法。也就是说:我们有3 + 5 = 8。现在,我们可以看看这个见证人中的新增内容,并找出进位位置。这为我们提供了向量加法问题的解决方案。当且仅当另一个问题解决时,一个问题才有解决方案。
彼得·索尔

2,3,5,78

附注:我还发现了一个问题,证明问题是NP完全的,但比您的问题长得多,所以我试图理解它……越简单越好:-)
Marzio De Biasi

n1n1

3

这不能回答问题,但可能包含一些有用的观察结果。我不想把它作为评论,因为我发现冗长而零散的评论令人讨厌阅读

如我对问题的评论所述,该问题已重新制定:

nX={x1,,xn}{0,1}mm

A,BX

xAx=xBx

X,A,BN

由于我们正在寻找二进制矢量的2个子集,因此我建议将此问题称为2SUBSET-BINARY-VECTOR-SUM。

一些观察:

  • Xxi,xjXxi=xjA={xi},B={xj}

  • X0XAX{0}B=A{0}

  • ABBA

  • A,BABX

  • A,BAB

XAB=XABS(n,k)nkS(n,3)+S(n,2) 可能的解决方案,因此在这里暴力破解是不可行的。

Nmm=1A,B

{1,2,3,5}A={1,2},B={3}m>1A,B

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.