如何找到二元矩阵方程AX = B的解?

时间:2013-02-01 00:06:12

标签: matrix binary xor satisfiability finite-field

给定m * n二进制矩阵A,m * p二进制矩阵B,其中n> 1。 m什么是计算X的有效算法,使AX = B?

例如:

A = 
1  1  0  0  1  1  0  1  0  0  
1  1  0  0  1  0  1  0  0  1  
0  1  1  0  1  0  1  0  1  0  
1  1  1  1  1  0  0  1  1  0  
0  1  1  0  1  0  1  1  1  0 

B = 
0  1  0  1  1  0  1  1  0  1  0  0  1  0  
0  0  1  0  1  1  0  0  0  1  0  1  0  0  
0  1  1  0  0  0  1  1  0  0  1  1  0  0  
0  0  1  1  1  1  0  0  0  1  1  0  0  0  
1  0  0  1  0  0  1  0  1  0  0  1  1  0  

注意,当我说二进制矩阵时,我指的是在字段Z_2上定义的矩阵,也就是说,所有算术都是mod 2。

如果有任何意义,这是我在为随机纠错码生成合适的矩阵时遇到的问题。

1 个答案:

答案 0 :(得分:1)

你可以通过减少行来实现:将B放在A的右边,然后交换行(在整个事物中)得到行0,col 0的1;然后xor该行到第0列中有'1'的任何其他行,因此在第0列中只有一个1。然后移动到下一列;如果[1,1]为零,则将行1与后面的行交换为1,然后使用xor行使其成为列中的唯一行。假设'A'是一个方阵并且存在一个解,那么你最终将A转换为单位,并将B替换为Ax = B的解。 如果n> m,你有一个比方程更多未知数的系统,所以你可以解决一些未知数,并将其他未知数设置为零。在行减少期间,如果列中没有要使用“1”的值(在已经减少的行之下),则可以跳过该列并使相应的未知零(您可以在最多nm时间执行此操作)。