Algorithm 8个女孩和8个男孩配对

Algorithm 8个女孩和8个男孩配对,algorithm,Algorithm,假设有8个女孩和8个男孩。每个人都会按照他们的喜好顺序给你一个他们可以约会的8个伴侣的排名。例如,第一个女孩可能会给你[3,6,2,8,1,4,5,7];这意味着他们最喜欢3号男孩,然后是6号男孩,依此类推。如果我们把她和6号男孩配对,她就不会那么难过了。特别是,让我们为这个配对增加1的惩罚。同样地,如果6号男孩把她作为第三选择,我们也会在总罚分中增加2分 我们的目标是设计一个有效的算法,将这些男孩和女孩配对,以使总体惩罚最小化。这一点球是所有16个点球的总和,这是他们比赛距离最佳选择的距离 我

假设有8个女孩和8个男孩。每个人都会按照他们的喜好顺序给你一个他们可以约会的8个伴侣的排名。例如,第一个女孩可能会给你[3,6,2,8,1,4,5,7];这意味着他们最喜欢3号男孩,然后是6号男孩,依此类推。如果我们把她和6号男孩配对,她就不会那么难过了。特别是,让我们为这个配对增加1的惩罚。同样地,如果6号男孩把她作为第三选择,我们也会在总罚分中增加2分

我们的目标是设计一个有效的算法,将这些男孩和女孩配对,以使总体惩罚最小化。这一点球是所有16个点球的总和,这是他们比赛距离最佳选择的距离

我在凌晨3点就想到了这个问题,这让我无法回到床上。天真的解决方案开始出现了!这显然是不可接受的。我想也许我可以做一个图形表示并搜索图形,但这可能也需要n!空间分而治之并没有派上用场,任何贪婪的算法似乎都不是最优的。也许线性规划能帮上忙,但我还没有深入研究


感谢您的指导和建议。

这是一个稳定婚姻问题的例子,它肯定可以在比在更好的情况下解决!时间为了解决这个问题,你可以选择男性或女性,我们将用男性来解释这个问题,并迭代所有没有伴侣的男性。然后你看那个男人的偏好列表,向列表中排名最高的女人求婚,而这个男人并没有向她求婚。如果女人没有配对,或者更喜欢这个男人而不是她现在的男人,她会接受;否则,该男子将保持单身。你继续迭代所有的男人,直到没有一个人是不成对的

此算法在^2时间内运行,因为提案数量永远不会超过N^2个。这是因为每个男人都可以向每个女人求婚,有N个男人和N个女人,所以总共有N^2个独特的提议,每个提议只执行一次,因为算法不允许男人向同一个女人多次求婚

这个算法产生的解是一个稳定的解,这意味着没有一对男女愿意拥有对方而不是他们当前的伴侣,并且在我的解释中,它是针对性别优化的,你迭代了男性,但你也可以很容易地在女性身上运行它


还有一些算法试图找到一个稳定的配对,它不适合男性或女性,而是寻找一个适合每个人的解决方案。对于一个这样的算法,你可以从寻找男女双方的最佳婚姻开始,如果他们是相同的,你知道这是你的答案,而不需要运行算法,然后看看女性,w,她是男性优化配对中最差的人,她的伴侣m,在男性优化配对中。执行另一个男性优化匹配,除了这次,从m向下一个在他的偏好列表上的女性w求婚开始。如果下一对中最差的是一个男人,你的答案是上一对,否则,继续执行其他男性优化配对,并对该配对中最差的人进行相同的更改,直到您找到一个最差的人是男性的配对,并且您在男性最差之前的最后一个配对中得到了答案。该算法将最小化人们的首选伴侣与其实际伴侣之间的最大距离。此算法将在^4上运行,因为它找到稳定匹配的次数不超过N^2次。

稳定婚姻?帮助完成作业?@ewcz哇,我不知道这是一个已知问题。虽然在他们的版本中,他们正在寻找一个稳定的解决方案,但可能不存在。我在寻找最理想的答案。@RuiLima这不是家庭作业。我太老了,不能那样做。这是我自己提出的一个问题。这是分配问题,每个配对的成本等于每个成员罚款的总和: