2

我正在寻找多/多目标子集和问题的快速解决方案。

作为额外的限制(这使得 IMO 更容易计算),我们可以假设总和中包含的所有值都是正的,并且都绑定到一个已知的极限值。

我知道单目标子集和问题有一个 O(NK) 伪多项式解决方案,我已经实现了一个基于维基百科和这个堆栈交换答案的解决方案。

以其他方式解释这个问题,我有两组已知限制的正数。对于第一组中的每个值 A,第二组中的值的组合总和为 A。先验地知道第一组中的所有值具有对应的且不冲突的第二组中关联的值组合,是有一种已知的快速方法来计算第二组中的哪些元素与每个第一组值相关联?

4

1 回答 1

1

我认为您的问题是我在硕士论文中研究的多集约束问题的变体。

在这个项目中,我设计了一种在 DP 表中搜索以找到解决方案的算法。它不是伪多项式,但我认为在一般情况下它足够快。

我还实现了一个 Python 工具来解决这些问题。也许你想试试!

这个工具叫做msat,它在 github 上维护。

您可以参考msat

或者干脆使用pip来安装它(它是一个 Python3 工具):

$ pip install msat

还有介绍幻灯片:slides

如果您想了解详细信息,请参考论文

于 2016-04-21T19:37:08.127 回答