给定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。
如果有任何意义,这是我在为随机纠错码生成合适的矩阵时遇到的问题。
答案 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时间执行此操作)。