【发布时间】:2016-01-02 23:53:24
【问题描述】:
设 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
上式也可以看成:
x(0,0) +x(0,1) +x(0,2) +x(1,0) +x(2,0) = 0
x(0,0) +x(0,1) +x(0,2) +x(1,1) +x(2,1) = 0
x(0,0) +x(0,1) +x(0,2) +x(1,2) +x(2,2) = 1
x(0,0) +x(1,0) +x(1,1) +x(1,2) +x(2,0) = 0
x(0,1) +x(1,0) +x(1,1) +x(1,2) +x(2,1) = 0
x(0,2) +x(1,0) +x(1,1) +x(1,2) +x(2,2) = 1
x(0,0) +x(1,0) +x(2,0) +x(2,1) +x(2,2) = 1
x(0,1) +x(1,1) +x(2,0) +x(2,1) +x(2,2) = 1
x(0,2) +x(1,2) +x(2,0) +x(2,1) +x(2,2) = 1
例如,给定的方程可以有以下两个解:
- x(0,2)=x(1,0)=x(1,1)=1 并且所有 x(i,j) = 0。在这种情况下,所有 x(i,j) 的总和 = 3
- x(2,2)=1 且所有 x(i,j)=0。在这种情况下,所有 x(i,j) 的总和为 1
可以使用什么算法来找到以后的解决方案。我曾尝试使用高斯消元法,但结果并不一致。
更多解释: 关于如何获得方程的更多解释:https://math.stackexchange.com/a/441588/299278
【问题讨论】:
-
我投票决定将此问题作为离题结束,因为它属于另一个 Stack Exchange 站点,可能是数学(您首先获得方程式的地方)。
-
但这不是算法问题吗?
-
你的“sum”相当于异或运算。因此,对于未知变量的所有可能值,您可以简单地使用嵌套循环来检查方程是否全部为真(对变量使用布尔类型)。
-
您不希望我们为您完成作业或竞赛项目吗?
-
@salvador dali 不,我不想代表我做任何事情。
标签: python algorithm optimization linear-algebra