【问题标题】:Algorithm for sorted weight distribution排序权重分布算法
【发布时间】:2014-11-30 08:57:19
【问题描述】:

我有一个N_w 权重w_i 的列表,其中不同的权重(不一定)相等。这个列表需要均匀分布在N_b有序的bin中,其中N_b N_w,同时保持顺序

示例

权重列表(1,2,1,5,3) 可以分配到3 箱中,如(1,2,1)(5)(3)。虽然不均匀,但这是在保序约束下的最优分布。

有没有什么实用的算法可以解决这个问题(除了暴力破解),我可以看看吗?

更新 权重数量N_wO(1e6)。如果 bin 的数量为O(1e5)。我正在寻找一种理想的算法,最糟糕的是O(N log N)

【问题讨论】:

  • 没有“保留顺序”的约束,这是一个称为 k 分区的强 NP-Hard 问题。我相信对于这种保持顺序的变化,有一个多项式,或者至少是伪多项式解决方案。另请注意,这里的蛮力是O(N_w^N_b)。你的问题有多大?
  • @amit 我已经更新了问题,感谢您的提示。
  • 最优到底是什么意思?

标签: algorithm sorting distribution


【解决方案1】:

如果你使用爬山算法呢?给定数字序列,您放置了几个分隔线,将数字分隔到 bin 中。您将一个分隔线移动一个位置的每个突变。我希望这种方法没有局部最优,而只有全局最优。

这里是它如何评估您的示例的示例。我正在根据最小和最大 bin 之间的差异来评估一个状态。符号如下: state => stateScore

  1. 1,2,153 => 8
  2. 1,21,53 => 7
  3. 12,1,53 => 7
  4. 12,15,3 => 3
  5. 121,5,3 => 2

步骤 (3) 并不是真正的爬山步骤,但它确实保持在相同的“高度”上,因此它可能仍然可行。

【讨论】:

  • 您能否在回答中详细说明一下?比如如何确定要移动哪个分隔线、何时停止等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-23
相关资源
最近更新 更多