分开一袋混合糖果

时间:2017-11-14 00:25:31

标签: algorithm math statistics

假设我有一袋糖果 C 我带有 N 糖果。它是 t 不同类型糖果的混合物, T i。我想在 M 朋友之间分享。

他们每个人都喜欢每种类型的糖果, P (m, T i)其中 m 是其中之一 M 朋友。 P (m, T i)是一个整数且不同的,并且 P 的总和(m, T )对于每个朋友是50(每个朋友在糖果类型之间按照他的意愿分配50个点,没有类型获得相同数量的点数。)

我们希望在所有 m 朋友之间划分 N 糖果,让每个人都感到高兴。所有的糖果都需要分开。每个人不需要给予相同数量的糖果。

1)有没有办法客观地找到解决“完美”方式来分割糖果的方法?

假设(1)的答案为“否”,我们将如下定义。 S m是总和[ P (m, T j)],其中 j 的子集我表示 m 。最优解的定义是具有最低可能的标准差 S m的分布,其中最高可能的平均 S m作为关系。

2)解决这个问题的最佳方法是什么?有没有已知的算法?

3 个答案:

答案 0 :(得分:0)

对于(2),我们可以通过让每个朋友依次挑选一块糖果直到袋子为空来找到一个起点。每个朋友总是会选择最喜欢的糖果。对于我们交替选择订单的多个解决方案,我们必须计算 S m。这应该是我们最好的起点。

遗传算法可用于进一步找到更好的解决方案。

答案 1 :(得分:0)

(1)https://en.wikipedia.org/wiki/Pareto_efficiency。帕累托改进是对不同分配的改变,其使得至少一个个人或偏好标准在没有使任何其他个人或偏好标准恶化的情况下更好,假定在一组个体中进行某种初始商品分配。当没有进一步的帕累托改进时,分配被定义为“帕累托有效”或“帕累托最优”,在这种情况下我们被假定已达到帕累托最优。

答案 2 :(得分:0)

首先,我会考虑您是否对问题进行建模,以便您可以将“匈牙利算法”的版本应用于此。即使不是,这可能是寻找类似方法的有用起点。

作为一种启发式的方法,我建议你不要按照固定的顺序进行分配,而是根据他们对目前为止所用的糖果最不满意的方式进行分配。 试图按照他们取悦的程度来命令人们(例如,将他们的50分中的大部分分配给一种类型的人将很难取悦,特别是如果没有那么多的甜食)。