分类权重分布的算法

时间:2014-11-30 08:57:20

标签: algorithm sorting distribution

我有一个N_w权重w_i的列表,其中不同的权重不一定相等。此列表需要在N_b有序二进制位中均匀分布,其中N_b< N_w,而保留订单

示例

权重列表(1,2,1,5,3)可以3(1,2,1)(5)分发到(3)个分箱。虽然它不统一,但这是在保持秩序的约束下的最优分布。

是否有任何实用的算法可以解决这个问题(粗暴强制除外),我可以看一下?

更新 权重N_w的数量为O(1e6)。如果垃圾箱的数量为O(1e5)。我正在寻找理想情况下最差O(N log N)的算法。

1 个答案:

答案 0 :(得分:0)

如果您使用爬山算法怎么办?给定数字序列,您可以放置​​几个分隔符,将数字分成多个分区。每个突变你移动一个分隔一个位置。我希望这种方法没有本地 - 但只有全球最优。

这里有一个如何评估你的例子的样本。我根据最小和最大的bin之间的差异来评估状态。符号如下: => 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
  6. 步骤(3)并非真正的攀爬步骤,但它确实保持相同的高度,因此它可能仍然可行。