想象一下,它是公元前3000年,我们正在建立一些异性恋,一夫多妻的快节奏。
有n_c
名男性和n_s
名女性(n_s > n_c
)。
加速将在n_r
轮进行。
在每一轮中,每个男人都会遇到一个女人。
所以要填充n_r*n_c
个广告位。
此外,他们都填写了我们构建评分函数的石碑问卷,
u(i,j)
,
这样可以在其中一个插槽中将男性i
与女性j
配对。
目标是在约束条件下最大化所有时段的得分总和
没有人不止一次遇到同一个女人
每个女人最多见面
ceil(n_r*n_c/n_s)
男子。
(也就是说每个女人应该和大约相同数量的男人见面。)
你可以草拟一个算法来解决这个问题吗?男性和女性的数量可以假设在100以下,可能在50以下。哦,并假设我们将现代硬件带到公元前3000年。
答案 0 :(得分:1)
可以表示为最小成本循环问题,然后使用众多算法之一解决(例如,循环取消,网络单纯形;这些多项式时间算法对于50个元素应该非常快)。
为每个男人和女人制作一个顶点。制作源/接收器顶点。这些人具有来自源/汇的弧,最小流量n_c
和容量n_c
并且成本为零。这些妇女的容量为ceil(n_r*n_c/n_s)
的源/汇并且成本为零。对于每个男人和女人来说,从男人到女人都有1
弧度。此弧的成本为-u(i,j)
,其中该人为i
,而该女子为j
。
现在我们必须安排一些事情。这个想法反复构建一个男女双方匹配(即单轮时间表),匹配所有需要在本轮安排的女性。那些女性的学位等于男性。通过平均论证(如果男性学位是k,那么n个k学位的女性必须至少与n个人相邻,否则某些人的学位将大于k),Hall定理适用,我们可以完全匹配这些女人。通过对男性的类似论证,我们可以反复增加这种匹配以匹配所有男性。删除所有匹配的边并重复。
答案 1 :(得分:0)
如果您希望最大化分数,则假设您将在轮次之间评估问卷。这开始听起来像一个相当标准的聚类问题。
从至少两轮随机分配的男性和女性开始,确保不会创建任何重复的配对。那时,你应该至少有两个男人见过同一个女人。
然后你可以使用典型的“如果Jim和Joe都喜欢橘子,Joe也喜欢柠檬,那么Jim很可能喜欢柠檬。”
如果我要解决这个问题,我尝试的第一种技术是cosine similarity。那个应该给你一个比随机分配对更高的总分。
我对问题的第一次通过只会使用总分来确定相似性。也就是说,我会比较Man A和Man B评估同一个女人的总分。这很容易实现,因为它只涉及一个维度。一旦我证明有效并且确实给出了比随机分配更好的分数,我可能会通过在每个问题的基础上进行比较来扩展维度的数量。毕竟,尽管A和B都可能给女性Z带来相同的分数,但是一个人可能专注于身体属性,另一个人可能专注于个性和智力,而不考虑身体属性。扩展到多个维度更复杂,更真实,但它应该显着提高分数。
答案 2 :(得分:0)
我们刚发现这篇论文:
http://i11www.iti.uni-karlsruhe.de/_media/teaching/theses/sa-strasser-10.pdf
哪个攻击正是这个问题。
(我很开心他们似乎正在解决真正的速度问题。如果你不能说,我的表述只是作为与我们实际问题同构的东西而构成的。求解。)