设x(i,j)为变量。所有变量和常量的值只能为0或1。另外,两个变量x(i,j)和x(k,l)之和等于(x(i,j)+x(k,l)) % 2
对于以下格式的给定方程,可以使用什么算法来找到所有x(i,j)的解,从而使所有x(i,j)的和最小化:
x(0,0) +x(0,1) +x(0,2) +x(1,0) +0 +0 +x(2,0) +0 +0 = 0
x(0,0) +x(0,1) +x(0,2) +0 +x(1,1) +0 +0 +x(2,1) +0 = 0
x(0,0) +x(0,1) +x(0,2) +0 +0 +x(1,2) +0 +0 +x(2,2) = 1
x(0,0) +0 +0 +x(1,0) +x(1,1) +x(1,2) +x(2,0) +0 +0 = 0
0 +x(0,1) +0 +x(1,0) +x(1,1) +x(1,2) +0 +x(2,1) +0 = 0
0 +0 +x(0,2) +x(1,0) +x(1,1) +x(1,2) +0 +0 +x(2,2) = 1
x(0,0) +0 +0 +x(1,0) +0 +0 +x(2,0) +x(2,1) +x(2,2) = 1
0 +x(0,1) +0 +0 +x(1,1) +0 +x(2,0) +x(2,1) +x(2,2) = 1
0 +0 +x(0,2) +0 +0 +x(1,2) +x(2,0) +x(2,1) +x(2,2) = 1
上述方程也可以看作:
^{pr2}$例如,给定方程可以有以下两个解:
什么算法可以用来找到以后的解。我试过用高斯消去法,但结果并不一致。在
更多说明: 关于方程是如何得到的更多解释:https://math.stackexchange.com/a/441588/299278
重新标记,基础是
我们可以删除相同的子短语来找到
^{pr2}$如果我们对所有的基本规则求和并reduce-记住,
^{3}$XOR(a, a) = 0
-我们发现也就是说,任何解都必须包含1的奇数:1、3、5或7(我们可以简单地丢弃9,因为它必须与导致0的所有基本规则相冲突)。在
让我们试着找到一个只包含一个1的解决方案:
更一般地说,如果我们假设a、b、c、d、e的值是给定的:
这使我们能够轻松地生成所有可能的解决方案:
这给了
请注意,生成的解决方案中正好有一半通过了测试;这强烈地表明,应该可以使一个更依赖于变量,但我还没有找到一种方法。在
编辑:进一步阅读后,我们可以将我们的基础表示为一个增广矩阵
在进行高斯约化后,我们得到
^{8}$如果我们将任意值赋给
a..e
,我们将得到这正是我之前得出的结论,但它是以一种更普遍适用的方式实现的。在
从这一点开始,您可以插入
a..e
的每一个组合,然后再次使用高斯约化来找到f..i
的解决方案,或者象征性地解决问题over约束在这里实际上很有用;注意
b ^ (1-d) == a ^ (1-e)
soe
可以作为a, b, d
的函数来找到。所以:产生
相关问题 更多 >
编程相关推荐