【发布时间】:2011-07-08 16:29:28
【问题描述】:
为这种特定情况寻找子集和问题的解决方案(在 C# 或其他算法中):
1) 集合中大约有 1,000 个数字(可能会增长到几千个)
2) 总额达到数十亿
3) 这些数字是货币值,因此具有两位小数的精度(例如 2,345.17)
4) 集合中的数字可以是正数也可以是负数(所以处理净和)
然后我需要重复此搜索(使用相同的数字集)但总和不同,最多 1,000 次。最后整个过程运行 1000 次。因此,我们正在查看 1,000,000 次运行。目标是在 2 分钟内完成。这意味着每次运行的时间不应超过 0.12 毫秒。
这可行吗?
-克里普
【问题讨论】:
-
我不太清楚你想要什么。能给我举个例子吗?或者一个示例实现(可能很慢)
-
“终于整个进程运行了1000次”---所以每个进程都有不同的数字集?
-
Jacob,是的,对于 1000 倍的外部运行,数字和总和不同
-
您需要一个精确的解决方案还是一个近似值就足够了?我非常怀疑你能否找到一个精确有效的精确算法,因为问题是 NP 完全的。
标签: c# algorithm subset-sum