稳定匹配算法python实现

    所谓稳定匹配算法,就是如果男人想出轨,美女女对他没有一点点性趣,并且爱他的女人比老婆丑十万八千里
反之女人亦然。
    用数学语言来讲就是,博弈的各方达到纳什均衡点。
    ‘吕布’,‘刘备’,‘孔明’,‘周瑜’,'曹操’分别在三国佳缘网,注册了vip 账号,想泡某网的5个美女;


import numpy as np
import pandas as pd

man=np.array([['貂蝉','大乔','小乔','阿丑','尚香'],              
              ['貂蝉','小乔','大乔','尚香','阿丑'],
              ['阿丑','貂蝉','小乔','大乔','尚香'],
              ['小乔','大乔','尚香','貂蝉','阿丑'],
              ['小乔','貂蝉','大乔','尚香','阿丑'],                                                                                
              ])

a=['吕布','刘备','孔明','周瑜','曹操'] 

pdman=pd.DataFrame(man,index=a)   

    美女在帅哥心中的位置是这个样子滴!

pdman 
Out[95]: 
     0   1   2   3   4
吕布  貂蝉  大乔  小乔  阿丑  尚香
刘备  貂蝉  小乔  大乔  尚香  阿丑
孔明  阿丑  貂蝉  小乔  大乔  尚香
周瑜  小乔  大乔  尚香  貂蝉  阿丑
曹操  小乔  貂蝉  大乔  尚香  阿丑

woman=np.array([['曹操','吕布','刘备','周瑜','孔明'],
               ['周瑜','刘备','孔明','吕布','曹操'],
               ['周瑜','孔明','刘备','曹操','吕布'],
               ['吕布','刘备','周瑜','孔明','曹操'],
               ['孔明','周瑜','曹操','刘备','吕布'],                                                                             
               ])    


b=['貂蝉','大乔','小乔','尚香','阿丑']   

pdwoman=pd.DataFrame(woman,index=b)  

    帅哥在美女心中的位置是这个样子滴!



pdwoman
Out[96]: 
     0   1   2   3   4
貂蝉  曹操  吕布  刘备  周瑜  孔明
大乔  周瑜  刘备  孔明  吕布  曹操
小乔  周瑜  孔明  刘备  曹操  吕布
尚香  吕布  刘备  周瑜  孔明  曹操
阿丑  孔明  周瑜  曹操  刘备  吕布

def perfect_match(a,pdman,pdwoman):
    sd=pd.Series()
    while len(a)>0:
        

        sset=sd.index
        pp=pdman.loc[a[0]] 
        for i in list(pp):
            if i in sset:
    
                mmm=sd[i]
                po=pdwoman.loc[i]
                kl= list(po)
                p=kl.index(mmm)
                q=kl.index(a[0])
                if p<q:
                    continue
                else:
                    sd[i]=a[0]
                    #sd.drop(k)
                    a.remove(a[0])
                    a.append(mmm)
                    break
            else:
                sd[i]=a[0]
                a.remove(a[0])
                break
    return sd
    
       

    稳定匹配如下:

match=perfect_match(a,pdman,pdwoman)

match
Out[98]: 
貂蝉    曹操
小乔    周瑜
阿丑    孔明
大乔    刘备
尚香    吕布
dtype: object

    然世界处于不断的变动之中,偏好矩阵是一个变量,世界在动态中寻找其纳什均衡。所以这个世界不停的有人劈腿,离婚,再婚…

posted @ 2022-08-19 22:59  luoganttcc  阅读(116)  评论(0编辑  收藏  举报