Python 中的 XOR 线性方程组求解器
XOR linear equation system solver in Python
我有n行n+1列的矩阵,需要构建这样的系统
例如矩阵是
x4 x3 x2 x1 result
1 1 0 1 0
1 0 1 0 1
0 1 0 1 1
1 0 1 1 0
那么等式就是(+是XOR)
x4+x3+x1=0
x4+x2=1
x3+x1=1
x4+x2+x1=0
我需要 return 回答 x1 的列表,.....
我们如何才能在 python 中做到这一点?
学习高斯,也可以用于异或。然后写一个高斯python程序
您可以使用 Microsoft 的 Z3 求解器的 Python 接口 pyz3:
from z3 import *
def xor2(a, b):
return Xor(a, b)
def xor3(a, b, c):
return Xor(a, Xor(b, c))
# define Boolean variables
x1 = Bool('x1')
x2 = Bool('x2')
x3 = Bool('x3')
x4 = Bool('x4')
s = Solver()
# every equation is expressed as one constraint
s.add(Not(xor3(x4, x3, x1)))
s.add(xor2(x4, x2))
s.add(xor2(x3, x1))
s.add(Not(xor3(x4, x2, x1)))
# solve and output results
print(s.check())
print(s.model())
结果:
sat
[x3 = False, x2 = False, x1 = True, x4 = True]
我有n行n+1列的矩阵,需要构建这样的系统 例如矩阵是
x4 x3 x2 x1 result
1 1 0 1 0
1 0 1 0 1
0 1 0 1 1
1 0 1 1 0
那么等式就是(+是XOR)
x4+x3+x1=0
x4+x2=1
x3+x1=1
x4+x2+x1=0
我需要 return 回答 x1 的列表,..... 我们如何才能在 python 中做到这一点?
学习高斯,也可以用于异或。然后写一个高斯python程序
您可以使用 Microsoft 的 Z3 求解器的 Python 接口 pyz3:
from z3 import *
def xor2(a, b):
return Xor(a, b)
def xor3(a, b, c):
return Xor(a, Xor(b, c))
# define Boolean variables
x1 = Bool('x1')
x2 = Bool('x2')
x3 = Bool('x3')
x4 = Bool('x4')
s = Solver()
# every equation is expressed as one constraint
s.add(Not(xor3(x4, x3, x1)))
s.add(xor2(x4, x2))
s.add(xor2(x3, x1))
s.add(Not(xor3(x4, x2, x1)))
# solve and output results
print(s.check())
print(s.model())
结果:
sat
[x3 = False, x2 = False, x1 = True, x4 = True]