想象一下它是公元前 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 年。