【发布时间】:2018-05-02 15:34:26
【问题描述】:
我正在处理一个问题,它是子集和问题的变体,我希望额外的约束可以使它比经典的子集和问题更容易解决。我已经搜索了这个约束的问题,但是我无法在 StackOverflow 上或通过其他地方的谷歌搜索找到一个具有适当算法的好例子。
问题:
假设您有两个正数列表 A1,A2,A3... 和 B1,B2,B3... 具有相同数量的元素 N。有两个和 Sa 和 Sb。问题是找到同时集 Q 其中 |sum (A{Q}) - Sa|
现在,我可以将其作为两个完全独立的子集和问题来解决,但删除同时性约束会导致错误解决方案的可能性(其中 Qa != Qb)。我还怀疑附加约束应该比两个 NP 完全问题更容易解决这个问题。我想解决两个数字列表中包含 18 个以上元素的实例,并且大多数子集和算法在这些元素的情况下运行时间很长。我已经研究了伪多项式运行时动态规划算法,但这有以下问题:a)速度依赖于数字列表的短位深度(这不一定适用于我的实例)和 b)它确实不考虑同时性约束。
关于如何使用同时性约束来减少运行时间的任何建议?有没有我可以用来考虑这个约束的动态编程方法?
【问题讨论】:
标签: dynamic-programming subset-sum