1
稳定的婚姻问题
背景 假设有2*n要结婚的人,并且进一步假设每个人n在以下约束下完全被其他人吸引: 吸引力是对称的 ; 即如果人A被人吸引B,则人B被人吸引A。 吸引力是反传递的 ; 也就是说,如果一个A人和一个人B都被一个人吸引C,那么一个A人和B另一个人就不会被彼此吸引。 因此,吸引力网络形成(无向)完整的二部图 Kn,n。我们还假设每个人都对他们吸引的人进行排名。这些可以表示为图中的边缘权重。 一个婚姻是一个配对(A,B)地方A和B被吸引到对方。如果存在另一场婚姻,婚姻中的婚姻是不稳定的,那么每一次婚姻中的一个人都可以与伴侣离婚并结婚,并且双方最终都会得到比其前夫更高的伴侣。 目标 您的任务是编写一个完整的程序或函数,以每个人的喜好作为输入并为每个人输出一个婚姻,以使每个婚姻稳定下来。 输入值 输入可以采用任何方便的格式;例如加权图,首选项的有序列表,字典/关联等。您可以选择将总人数作为输入,但不允许其他输入。 输出量 输出也可以采用任何方便的格式;例如,元组列表,最小边缘覆盖,与每个人的伴侣相关的功能等等。请注意,唯一的约束是每次婚姻都是稳定的,没有其他最优性要求。 笔记 您可以O(n^2)在Wikipedia或此Numberphile视频上找到更多信息和解决此问题的算法。但是,您可以自由使用任何算法。 禁止出现标准漏洞。 这是代码高尔夫球。最短答案(以字节为单位)获胜。