稳定婚姻问题

来源:互联网 发布:一键php加mysql环境 编辑:程序博客网 时间:2024/05/18 00:44

  有n位男士和n位女士,每位男士按照喜爱程度给所有女士排名,每位女士也按照喜爱程度给所有男士排名。现在要给这2n个人安排婚姻,满足两个要求:

   1.每个人都有配偶且没有两名同性的配偶相同

   2.不存在一队男女,满足这两个人对对方的喜爱程度都比对配偶的喜爱程度高。

  有个结论:必定存在满足要求的安排。

  先说说做法:枚举每个没有配偶的男士,让他向没求婚过的排名最前的女士求婚。如果这个女士对他的喜爱程度比对当前配偶的喜爱程度高,那么就选择当前这个男士,否则拒绝。

  现在要证明两个结论:

   1.每个男士都会找到配偶。假设有一名男士没有找到配偶,因为一名女士找到配偶后不会失去配偶而且这名男士已经向所有女士求婚了且都被拒绝了,所以每名女士都找到了配偶。所以每名男士都会有配偶。矛盾。

   2.不会有私奔的情况。假设男士A对女士1的喜爱程度比对他的配偶的喜爱程度高,那么男士A会先向女士1求婚,被拒绝后才会向当前的配偶求婚。所以女士1的对当前配偶的喜爱程度一定比对男士A的喜爱程度高。所以不会有私奔的情况

  时间复杂度是O(n2),因为每个男士都要向每个女士求婚。

原创粉丝点击