【发布时间】:2017-02-07 21:25:18
【问题描述】:
我有一个线性方程组,我已经使用 Gauss-Jordan 消元法将其简化为行梯形矩阵。我的具有 n 个变量 Xn(其中 Xn 在 N0(=正整数)中)的系统有多个解决方案,我想找到 所有 Xn 的总和最小的解决方案。
我如何以编程方式做到这一点?
例如考虑这个线性方程组:
x1 + + x5 + x6 = 2
x2 + x5 = 1
x3 + x6 = 1
x4 + x5 + x6 = 1
我想要获得的最小解决方案之一是:
x3 = x4 = x5 = 0
x1 = x2 = x6 = 1
另一个是
x2 = x4 = x6 = 0
x1 = x3 = x5 = 1
但我不想
x1 = 2
x2 = x3 = x4 = 1
x5 = x6 = 0
这也是这个系统的一个解决方案,但根据我的标准 x1 + x2 + x3 + x4 + x5 + x6 = 5(而前 2 个解决方案只有 3 个),这不是一个最小的解决方案
如果有多个最小解决方案(例如这里,解决方案 1 和 2 都是最小的),我不关心返回的最小解决方案,只要它是最小解决方案之一
【问题讨论】:
-
变量是否必须为非负数?由于存在具有不同总和的解决方案,因此可实现的总和不受以下限制。
-
是的,变量是非负数。它们属于正整数集合 {0,1,2,...}
-
那么您的实例中有多少变量?有多少个方程?
-
多达一百个变量和尽可能多的方程(但其中一些方程可能是相同的,所以我的方程可能比 Gauss-Jordan 消除过程后的变量略少)
标签: algorithm math logic constraints linear-equation