我有以下问题:
给定N个不同价值的物品(N < 30),它们都是“k”常数的倍数,例如:k、2k、3k、4k、6k、8k、12k、16k、24k和32k。我需要一种算法将所有物品分配给M个玩家(M <= 6),使每个玩家得到的物品总价值尽可能均匀(换句话说,我想以最公平的方式将所有物品分配给所有玩家)。
编辑:所谓最公平的分配是指任意两个玩家获得的物品价值之间的差异最小。 另一个类似的情况是:我有N个不同价值的硬币,我需要平均分配给M个玩家;有时它们不能完全均分,我需要找到下一个最佳分配情况(这样没有玩家会因为另一个玩家得太多钱而生气)。
我不需要(伪)代码来解决这个问题(同时这不是作业 : )),但我会欣赏任何能解决这个问题的思路或算法链接。
谢谢!
给定N个不同价值的物品(N < 30),它们都是“k”常数的倍数,例如:k、2k、3k、4k、6k、8k、12k、16k、24k和32k。我需要一种算法将所有物品分配给M个玩家(M <= 6),使每个玩家得到的物品总价值尽可能均匀(换句话说,我想以最公平的方式将所有物品分配给所有玩家)。
编辑:所谓最公平的分配是指任意两个玩家获得的物品价值之间的差异最小。 另一个类似的情况是:我有N个不同价值的硬币,我需要平均分配给M个玩家;有时它们不能完全均分,我需要找到下一个最佳分配情况(这样没有玩家会因为另一个玩家得太多钱而生气)。
我不需要(伪)代码来解决这个问题(同时这不是作业 : )),但我会欣赏任何能解决这个问题的思路或算法链接。
谢谢!
uf = sum[(avg-p_i)**2 for all p]
。这是一个常见的统计公式。如果你最小化uf
,你会得到尽可能接近平均值的数字。 - Thomas Ahle