有没有算法来解决在不同模空间中表达的方程组?例如,考虑这个方程组:
(x1 + x2 ) % 2 = 0 ( x2 + x3) % 2 = 0 (x1 + x2 + x3) % 3 = 2
该系统的解决方案之一是:
x1 = 0 x2 = 2 x3 = 0
我怎么能算术地找到这个解决方案(不使用暴力算法)?
谢谢
您可以将系统转换为模数LCM(最小公倍数) . 只需找到所有方程模的LCM,并适当地乘以每个方程 .
您可以将这些等式重写为
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),你应该得到一个解决方案 .
第一行与说x1相同,x2是偶数或全部奇数 . 第二行与说x2相同,x3是偶数或全部奇数 . 因此x1,x2,x3都是偶数或全部奇数 . 从第三行开始,我们可以将问题替换为“累积到3k 2的3个奇数或3个偶数” .
3 回答
您可以将系统转换为模数LCM(最小公倍数) . 只需找到所有方程模的LCM,并适当地乘以每个方程 .
您可以将这些等式重写为
现在,这是一个线性丢番图方程问题,文献中有解决方案 .
示例:http://www.wikihow.com/Solve-a-Linear-Diophantine-Equation
另见:https://www.math.uwaterloo.ca/~wgilbert/Research/GilbertPathria.pdf
算法:
写xi作为nks的函数
在这种情况下:
由于右侧没有划分,所以选择任何一个(n1,n2,n3),你应该得到一个解决方案 .
第一行与说x1相同,x2是偶数或全部奇数 . 第二行与说x2相同,x3是偶数或全部奇数 . 因此x1,x2,x3都是偶数或全部奇数 . 从第三行开始,我们可以将问题替换为“累积到3k 2的3个奇数或3个偶数” .