我正在寻找一个多目标/多目标的快速解决方案 subset-sum problem 。
作为传统约束(这使得计算IMO更容易),我们可以假设总和中包括的所有值都是正的,并且都与已知的极限值绑定。
我知道一个单目标子集和问题有一个O(NK)伪多项式解,我已经在维基百科和 this 堆栈交换答案。
用另一种方式解释这个问题,我有两组已知极限的正数。对于第一集合中的每个值A,第二集合中有一个值的组合,其总和为A。先验地知道第一集合中所有的值都具有与第二集合相关联的值的对应且不冲突的组合,是否有已知的快速方法来计算第二集合的哪些元素与第一集合的每个值相关联?
我认为你的问题是 多集约束问题 这是我在硕士论文中学习的。
在这个项目中,我设计了一个算法,在DP表中搜索以找到解决方案。它不是伪多项式,但我认为它在一般情况下足够快。
我还实现了一个Python工具来解决这些问题。 也许你想试试!
此工具名为 msat公司 并在github上进行维护。
您可以参考 msat 。
或者简单地使用 pip 安装它(它是一个Python3工具):
pip
$ pip install msat
还有介绍幻灯片: slides 。
如果您想了解详细信息,请参阅 thesis 。