求解线性不等式系统的算法

时间:2012-03-01 00:20:21

标签: linear-algebra

我在n个变量中具有k个线性不等式(0 任何赋值是否满足系统。有人知道解决这个问题的方法吗?

谢谢!

5 个答案:

答案 0 :(得分:5)

这可以使用具有恒定目标函数的linear programming来完成。也就是说,只检查程序的可行性

答案 1 :(得分:2)

将SMT求解器用于线性算术理论(Yices,Z3,...)。这些程序旨在查找您指定的输入的模型。当然,您也可以通过其他方式从现有算法中受益。

答案 2 :(得分:2)

你可以使用傅里叶 - 莫兹金消除来解决不等式系统。您需要了解基本代数才能理解解决方案。

http://en.wikipedia.org/wiki/Fourier%E2%80%93Motzkin_elimination

答案 3 :(得分:1)

您只需要与范围相交。以下是伪代码的方法:

// An array that has the ranges (inequalities) to test:
fromToArray = [[0, 10], [5, 20], [-5, Infinity]] 

currentRange = [-Infinity, Infinity];
for each pair myRange in fromToArray
   if currentRange[0] < myRange[0] 
          then currentRange[0] = myRange[0]
   if currentRange[1] > myRange[1] 
         then currentRange[1] = myRange[1]
   if currentRange[0] >= currentRange[1]    // from greater than to, so set is empty.
         then return "NO SOLUTION"
end for each

return "Solution is: " + currentRange 

答案 4 :(得分:0)

计算相关矩阵的行列式;如果它不是零,那么就有一个独特的解决方案;如果它为零,则有无限多个解或无 - http://en.wikipedia.org/wiki/System_of_linear_equations

或者,使用高斯消元 - http://en.wikipedia.org/wiki/Gaussian_elimination