【算法】恋爱中的博弈论(stable matching)(附带源码)

思路源自知乎:恋爱中有那些博弈?,主要是@尼克余 的回答。感谢他。然后原文有些描述不清楚的,我直接就按照我的理解补充上去了。


注:本文采用C#实现


首先假设一个虚拟世界,这个世界中分别有N个男生,N个女生,男生与女生数量完全一样,男生女生都有一个心仪对象列表,不同的人的心仪对象列表都是随机的,在心仪对象列表排名越前面,说明对于他(她)来说越喜欢。男生能向女生表白,女生不能向男生表白,女生能接受或者拒绝男生的表白。


男生首先会向对他最喜欢的女生表白,然后是次喜欢的,依次下去表白。而女生则通过对表白的男生进行判断,如果他是自己心仪列表里面排名第一的,嗯,就是他了,他就是最适合我的。但是如果不是,女生会说,对不起,你是个好人,然后拒绝男生。然后女生会想,是不是我要求太高了,那排名第二的也可以啦。然后女生把排名限制放宽到第二名。但是相应的,第二名就不是女生的最佳伴侣,如果她接受了第二名的邀请,那就说明她的幸福感并不是最高的。当然,如果在第二名向她表白之后,第一名也向她表白,她会无情的甩掉第二名,然后和第一名么么哒。


ok,基于上述要求,那么首先要设计一个人类,人类需要有下面几个属性,分别是编号(方便认识和排序),性别,心仪对象列表,预期对象,伴侣。然后这个类还要能表白,能接受表白。主要功能就那么多了。下面是类的设计

    enum
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值