线性代数包整数

时间:2010-11-12 00:20:11

标签: optimization math linear-algebra scientific-computing mathematical-optimization

我最近遇到了以下问题。给定一个向量列表(这里我指的是元组)都有整数条目,是否有一个包(语言不是太大的问题,越快越好,所以我猜C)很快就能确定何时有另一个整数向量原始列表的跨度?我需要对整数进行这种算术运算(没有除法)。我确信有一个,但想绕开漫长的文献综述。

5 个答案:

答案 0 :(得分:2)

您可以使用PARI中的mathnf函数计算包含生成向量作为列的矩阵的Hermite normal form。 HNF矩阵的列跨越相同的晶格,检查矢量是否在该晶格中是微不足道的。还有更多的图书馆能够计算出HNF - 谷歌是你的朋友。

答案 1 :(得分:2)

CVXOPT可能是一种选择。特别是,看看这个函数:

cvxopt.glpk.ilp = ilp(...)  
Solves a mixed integer linear program using GLPK.

(status, x) = ilp(c, G, h, A, b, I, B)

PURPOSE
Solves the mixed integer linear programming problem

minimize    c'*x
subject to  G*x <= h
            A*x = b
            x[I] are all integer
            x[B] are all binary

还请看这篇文章:binary linear programming solver in Python

答案 2 :(得分:1)

或许LinBox就是您所需要的。

答案 3 :(得分:0)

LINPACK有什么用吗?

http://en.wikipedia.org/wiki/LINPACK

我们曾经在我的矢量/超级计算机时代经常使用它,并且通常有硬件特定的版本。

答案 4 :(得分:0)

我所知道的最好的图书馆是:

Pari(不是GP,但是Pari库本身):http://pari.math.u-bordeaux.fr/

NTL(C ++):http://www.shoup.net/ntl/

IML:http://www.cs.uwaterloo.ca/~astorjoh/iml.html

我们开始在flint2中添加这种功能(特别是在fmpz_mat模块中):

https://github.com/fredrik-johansson/flint2

燧石的目的是让它尽可能快地完成,尽管矩阵的东西仍在大力发展中。