【发布时间】:2012-09-28 09:50:21
【问题描述】:
(在您回复另一个 SO 问题的链接或将其作为副本关闭之前,请仔细阅读该问题。这与此问题的标准变体不同,我已经搜索了很长时间,所以我很漂亮确定这里没有这样的问题)
我需要找出可能的最小 S 是否是某个 X[i] 的子集的总和,即 >= T (某个目标值,小于全集的总和)。
该集合不是很大(大约 40 个元素),但对于指数回溯解决方案来说仍然太大。
数字和总和很大(大约 10^15),所以动态编程不起作用(可能的状态数量很大,所以记忆表很快就会耗尽内存) .
出于同样的原因,Pisinger 的线性时间算法不起作用(它是 O(nr),其中 r 是总和的上限,在这种情况下太大了)。
在这种金额大但数字少的情况下,是否有一些确定性算法可以帮助我?我不想求助于一些近似算法。
【问题讨论】:
标签: algorithm optimization subset-sum