特定情况下的子集和

时间:2016-09-25 06:36:31

标签: algorithm

我需要调和银行交易。匹配是指一组交易的总和为零。如果匹配较小,则匹配等级较高。 这是子集和问题的变体(NP完整)。 然而: 没有那么多交易(通常高达10K) 总和限制在10M左右,因此在这些条件下有一个实用的解决方案。 最大组大小可以限制为10笔交易。

感谢任何帮助过的人。

1 个答案:

答案 0 :(得分:1)

你可以使用sudomakeinstall2提到的动态编程。您将需要为每个总和存储用于获取它的总和(因此您可以回溯到事务,构建实际组,而不仅仅是回答true / false)。

如果一个总和有太多的路径(得到这个总和的可能性太多),那么它没有意义(太多可能的协调),你可能会忽略长路径。

计算总和时,对具有类似参考/日期/详细信息的交易使用过滤器。

您可能想要进行一些迭代。首先尝试只查找小组。这应该很快,然后您可以删除此组中的所有事务,然后再去更大的组。

希望这有帮助。