C ++有效地检验线性方程组的正整数解的存在性

时间:2014-11-30 01:27:27

标签: c++ linear diophantine

我遇到了一个问题,这个问题超出了我有限的才能和我找到能够做到这一点的图书馆的能力(而且我能理解文档)。基本上,给定矩阵A,我需要检查系统AX = 0是否存在正整数解,对于X a向量。

更具体一些:A中的系数总是-1,0,1或2(并且大多数为零,每个方程中至多有三个非零系数),系统几乎总是被指定。系统将很小 - 可能不超过20个方程,可能有30个未知数,但代码将被称为很多次,因此解决小型系统的速度比大型矩阵的缩放更重要。

对我来说,非常感觉应该有一种非常快速的检查方式,考虑到问题的限制,但我完全没有找到。 Eigen和Lapack缺乏适当的功能(我可以找到 - 他们似乎只对欠指定系统做最小二乘解,而我需要一个正解)。像MATLAB中的lsqnonneg之类的东西可以用,但是我不知道如何在C ++中实现类似的东西。

0 个答案:

没有答案