【发布时间】:2014-12-03 12:05:06
【问题描述】:
我有以下问题:
给定一组变量的总和,例如 { a + b, b + c, c + d, a + a + d, b },找到变量的正整数值,使得所有和都不同且总和最大尽可能小。
是否有算法可以找到或近似解决此类问题?
【问题讨论】:
-
让我想起了布尔可满足性,这通常是 NP 完全的,我认为这里同样适用。在这种情况下,您可能会得到一个很好的快速近似值,
O(N^2)或更好。您可能要考虑猜测最高金额将是多少,然后尝试查看是否可能。猜测的总和与实际总和相比越高,就越容易找到有效的(如果不是最优的)解决方案。 -
你有什么样的限制?例如每个和中有多少项,有多少个和,有多少个变量,一个变量在一个和中可以重复多少次?
-
@PeterdeRivaz 在我所拥有的具体实例中,每个变量都有一个总和,其中仅包含该变量以及其他一些总和。大约一半的变量只出现一次(在它们单独出现的总和中)。我的具体实例有大约 25 个变量和 52 个总和。每个和的加数不超过 3 个。在每个总和中,每个变量出现的频率不超过两次。如果对您有帮助,我可以写下实例。
-
不确定有什么好的算法,但您可以尝试使用整数优化工具,例如glpsol
-
我会尝试使用约束求解器(例如 z3)。 MIP 求解器不能很好地处理所有不同的约束。
标签: algorithm mathematical-optimization discrete-mathematics diophantine