解决具有不同模的联系方程组

时间:2017-02-04 19:46:19

标签: algorithm math modulo equation-solving linear-equation

是否有任何算法可以解决以不同模数空间表示的方程组? 例如,考虑这个方程组:

(x1 + x2     ) % 2 = 0
(     x2 + x3) % 2 = 0
(x1 + x2 + x3) % 3 = 2

该系统的解决方案之一是:

x1 = 0
x2 = 2
x3 = 0

我怎么能算术地找到这个解决方案(不使用暴力算法)?

谢谢

3 个答案:

答案 0 :(得分:3)

您可以将这些等式重写为

x1 + x2 = 2*n1
x2 + x3 = 2*n2
x1 + x2 + x3 = 3*n3 + 2

现在,这是一个线性丢番图方程问题,文献中有解决方案。

示例:http://www.wikihow.com/Solve-a-Linear-Diophantine-Equation

另见:https://www.math.uwaterloo.ca/~wgilbert/Research/GilbertPathria.pdf

算法:

将xi写为nks的函数

在这种情况下:

x3 = 3*n3 + 2 - 2*n1
x2 = 2*n2 - (3*n3 + 2 - 2*n1)
x1 = 2*n1 - (2*n2 - (3*n3 + 2 - 2*n1))

由于右侧没有分割,选择任何一个(n1,n2,n3),你应该得到一个解决方案。

答案 1 :(得分:0)

第一行与x1相同,x2是偶数或全部奇数。 第二行与说x2相同,x3是偶数或全部奇数。 因此x1,x2,x3都是偶数或全部奇数。 从第三行开始,我们可以将问题替换为“累积到3k + 2的3个奇数或3个偶数”。

答案 2 :(得分:0)

您可以将系统转换为模数LCM(最小公倍数)。只需找到所有等式的模数的LCM,并适当地乘以每个等式。