我想解一个方程组。每个方程式的形式如下:
v1异或v2异或…异或Vx=Sx
vx和sx是单位变量。
Sx是已知的,我需要找到所有Vx的值
前任:

V1 xor V2 xor V3 = 1
V1 xor V2 = 0
V2 xor V3 = 1

(解决方案v1=0,v2=0,v3=1)
实际上,我有数千个变量(每一个都是一位)和数千个方程(只有异或运算)。
我知道至少有一个解决方案,我只需要一个解决方案。
我知道如何手工解决这个小系统,但我不知道如何建立一个算法来解决这个问题。
你能帮我做这个吗?我是一名开发人员,我知道如何使用位、异或运算符和数据结构,但我在数学方面经验不足,我不知道使用哪种方程组求解方法我也不是很直观的矩阵运算,所以如果我需要它,请尝试解释它非常慢!:p页
谢谢!

最佳答案

你可以使用高斯消去法:https://en.wikipedia.org/wiki/Gaussian_elimination
对于取模2的整数,xor是加法(和减法——是一样的),所以很简单:
例如,找到一个包含v1的方程,并将其添加到包含v1的所有其他方程中,以从中删除v1

v1 XOR v2        = 1
      +
v1        XOR v3 = 0
--------------------
       v2 XOR v3 = 1

使用不同的方程式从所有其他方程式中移除v2,使用不同的方程式移除v3等,直到所有方程式只有一个变量。

关于algorithm - 哪种算法可以求解变量为位且运算为xor的方程组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55820570/

10-13 00:04