松弛子集和的伪多项式或快速解

时间:2013-02-28 22:49:57

标签: algorithm dynamic-programming approximation

我有一个正整数的数组A [a0,a1,a2,...,an]和一个正数K.我需要找到所有(或几乎所有)数组A的子集U和V对为:

  1. U中所有元素的总和小于或等于K
  2. V中所有元素的总和小于或等于K
  3. U + V可能不包含原始数组A的所有元素
  4. 来自U的所有元素应该在初始数组A中的V中的所有元素之前。例如,让我们假设我们选择U = [a1,a3,a5]然后我们可以从a6开始构建数组V.在这种情况下,不允许使用元素a0,a2或a4。
  5. 我能够找到DP溶液,其为O(N ^ 2 * K ^ 2)(其中N是A中元素的总数)。虽然N和K很小(<100)但它仍然太慢。

    我正在寻找一些近似算法或伪多项式动态规划算法。 Bin packing问题与我的问题类似,但我不确定如何将其应用于我的约束......

    请告知。

    编辑:每个数字的上限等于50

0 个答案:

没有答案