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

Matrix 如何找到二元矩阵方程AX=B的解?,matrix,binary,xor,satisfiability,finite-field,Matrix,Binary,Xor,Satisfiability,Finite Field,给定一个m*n二元矩阵A,m*p二元矩阵B,其中n>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

给定一个m*n二元矩阵A,m*p二元矩阵B,其中n>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


如果有兴趣的话,这是我在为随机纠错码生成合适的矩阵时面临的问题。

您可以通过行缩减来实现:将B放置在a的右侧,然后交换行(在整个过程中)以获得行0中的1,列0;然后将该行异或到列0中有“1”的任何其他行,这样在列0中只有一个1。然后移到下一列;如果[1,1]为零,则将第1行与后面有1的行交换,然后对行进行异或,使其成为列中唯一的1。假设“A”是一个方阵,并且存在一个解,那么最终将A转换为unity,而B被替换为Ax=B的解。 如果n>m,则系统中的未知数比方程中的未知数多,因此可以求解一些未知数,并将其他未知数设置为零。在行缩减期间,如果列中没有可使用“1”的值(在已缩减的行下方),则可以跳过该列并将相应的未知值设为零(最多可以执行n-m次)