【发布时间】:2014-09-17 23:23:57
【问题描述】:
假设有一个 4n 人小组,他们每个人都将他们最想加入的前 3 人排在一个较小的 4 人小组中。什么是随机创建这些组的好算法,但一个人与他们列表中的第一、第二和/或第三人在一起的机会更大?
即加权分组算法。 (谷歌找的都是网络用的)
【问题讨论】:
-
听起来类似于稳定婚姻及相关问题en.wikipedia.org/wiki/Stable_marriage_problem
假设有一个 4n 人小组,他们每个人都将他们最想加入的前 3 人排在一个较小的 4 人小组中。什么是随机创建这些组的好算法,但一个人与他们列表中的第一、第二和/或第三人在一起的机会更大?
即加权分组算法。 (谷歌找的都是网络用的)
【问题讨论】:
此问题未充分说明。一个简单的方法是Metropolis--Hastings。定义一个分数函数,例如,一个分组的分数是一加三倍满意的第一选择数加上两倍满意的第二选择数加上满意的第三选择数。从完全随机的组开始。随机选择两个人(出于技术原因更换),交换他们,然后重新计算分数。如果Math.random() 大于新分数除以旧分数,则将它们交换回来。这个马尔可夫链蒙特卡罗过程收敛到一个分数加权的随机分组。
【讨论】: