查找具有给定 A 长度的所有二进制向量

计算科学 线性代数 矩阵 表现
2021-12-16 04:01:03

我得到一个n×n矩阵A使用真实条目并定义内积

x,y=xTAy.

我也得到一个整数k并且需要找到所有二进制向量x这样x,x=k.

二进制向量是指一个向量,其条目在{0,1}.为了n小 解决这个问题并不难 - 只需测试所有可能的2n向量。在实践中n可以很大,只有一小部分向量满足这个条件。因此我想知道

有没有更有效的方法来计算所有满足的二进制向量x,x=k?

我很确定这个问题一般来说很难,但我想知道是否有任何方法可以避免必须测试所有2n载体?

编辑。矩阵A是形式(λIB)1在哪里λ是一个整数并且B是二元对称矩阵。λ不是的特征值B.

1个回答

您的条目是否A矩阵实际上是实数还是整数?如果它们是实数,您需要多精确地满足约束?的条目是A所有非负数,或者某些条目是否为负数?

您的问题通常是 NP-Hard,因此您不应该期望找到多项式时间算法。你可能会发现你可以做得比检查所有更好2n通过使用回溯搜索组合。我建议查看约束编程求解器(例如 Eclipse)来执行此回溯搜索。

您也可以尝试使用整数线性编程软件来解决此问题,但大多数 ILP 代码并未设置为找到所有解决方案,而是在找到单个最优解决方案后停止,即使可能有更多解决方案。