Algorithm 为学生指派伴侣的鲁棒算法
问题是:给定4组大小分别为A、B、C和D的学生,以及总共k名伴侣,设计一种算法,将伴侣分配给学生,比例几乎相等 你不能只给组k*A/N,k*B/N,k*C/N,k*D/N伴侣,因为伴侣的数量必须是一个正整数。你不能只是四处转转,因为那样你可能找不到合适数量的陪护。所以我的想法是,你扔掉小数部分,把整数部分给每组,整数除法也一样。然后你可能会有一些剩余的陪护,但最多3个,所以把他们交给剩余人数最多的小组 然后,采访者指出这有一个问题。如果你添加了另一个伴侣,那么将k增加到k+1,那么其中一组可能会以这种方式失去一个伴侣。她给了我一个例子,但我不记得了Algorithm 为学生指派伴侣的鲁棒算法,algorithm,robust,Algorithm,Robust,问题是:给定4组大小分别为A、B、C和D的学生,以及总共k名伴侣,设计一种算法,将伴侣分配给学生,比例几乎相等 你不能只给组k*A/N,k*B/N,k*C/N,k*D/N伴侣,因为伴侣的数量必须是一个正整数。你不能只是四处转转,因为那样你可能找不到合适数量的陪护。所以我的想法是,你扔掉小数部分,把整数部分给每组,整数除法也一样。然后你可能会有一些剩余的陪护,但最多3个,所以把他们交给剩余人数最多的小组 然后,采访者指出这有一个问题。如果你添加了另一个伴侣,那么将k增加到k+1,那么其中一组可能会
有谁能想出一个算法来避免这个问题吗?您试图解决的问题通常被称为 分配问题或选票分配问题。这是一样的 美国众议院席位分配问题 每个州的代表 您的方法(称为汉密尔顿方法)的鲁棒性问题 方法(或最大余数法)未能具有的称为 这个从 维基百科文章,“阿拉巴马悖论是1880年发现的,当时 结果发现,增加座位总数会减少 阿拉巴马州的份额从8%上升到7%。” 历史上,美国至少使用过四种不同的方法: 杰斐逊方法、汉密尔顿方法、韦伯斯特方法和 现在的 从1941年开始使用 后面这些方法背后的思想如下。设
D=N/k
,
总人口除以座位数/陪同人数。然后
让d=d
,并修改d
,直到四舍五入k_i=round(G_i/d)
加起来就是正确的座位数,即
圆形(G_1/d)+圆形(G_2/d)+…+四舍五入(G_m/d)=k
关键在于函数round
的工作方式。韦伯斯特方法
通常意义上的轮数:弱高于0.5,严格低于0.5
向下,这很像使用算术平均值。这个
亨廷顿-希尔方法基于使用几何平均数的思想
相反这些方法有一个很好的总结
. 注
所有这些除数算法都有缺陷,因为它们违反了
配额规则:一个州不能保证至少获得
楼层(地下室/地下室)
代表
如果你想更多地玩这个游戏,有一个很好的方法
关于这一点的文章已完成
历史、方程式和有趣的小程序
给定4组大小分别为A、B、C和D的学生,以及总共k名伴侣,设计一种算法,将伴侣分配给学生,比例几乎相等
这里有一个算法可以非常简单地解决这个问题:
在另一个答案中,所有用于为状态分配表示的算法都是不必要的复杂,并且设计用于最小化执行的计算步骤的数量(通过进行数值计算而不是增量分配)。我给出的算法在计算机上运行时非常简单。这些都是很好的链接。谢谢。我想这可能相当于韦伯斯特的方法。