當前位置:
首頁 > 科技 > 面對木訥的程序員小哥哥,我是該坐等對方開竅求婚還是主動出擊?

面對木訥的程序員小哥哥,我是該坐等對方開竅求婚還是主動出擊?

2018 AI 開發者大會是一場由中美人工智慧技術高手聯袂打造的 AI 技術與產業的年度盛會!這裡有 15+ 矽谷實力講師團、80+AI 領軍企業技術核心人物、100+ 技術&大眾實力媒體、1500+AI 專業開發者——我們只講技術,拒絕空談!

參加 2018 AI 開發者大會,請點擊

作者 | 木木

責編 | 郭芮

秋天到了,又是吃螃蟹的季節。白富美學姐前兩天約我吃最愛的大閘蟹,席間向來開心的她卻顯得心事重重。

「你腫么啦?」我仔細地掰開蟹殼,問道。

「十一假期好多朋友辦婚禮,可我男票一點要求婚的意思都沒有,我都想考慮備胎了。」

「你自己和他說嘛!」我放下了金黃的大閘蟹。

「我可是個妹子,這樣多不好。」學姐嘆了口氣。

看著學姐猶猶豫豫的樣子就知道她需要鼓勵了。我眉頭一皺,計上心來:學姐呀,我來給你講個故事。

前排提示:本文生動地討論了穩定匹配問題蓋爾沙普利演算法的Python實現,該演算法是穩定匹配模型的著名解法。

寫在前面

有一座城市,當地風俗是:想結婚的男子必須先向心儀的女子求婚,而女子則需要等待求婚。

牧師每年會邀請人數相同的適婚男女參與一次集體相親。一次相親活動可能有很多輪,男子會首先向自己最愛的女子求婚,女子則會在所有的追求者中選擇她的最愛;如果男子被拒絕,下一輪會向他第二喜歡的女子求婚;上一輪已經訂婚的女子如果得到她更愛的人的求婚,則會毫不留情地拋棄未婚夫,和更愛的人在一起。被拋棄的男子需要重新參與求婚。

如此反覆,等大家都訂婚,就舉辦集體婚禮。

假設:

參加求婚的男女數量保持一致;

每個男子都按喜愛程度對女子進行排序,比如最愛a,其次愛b,再次愛c;

每個女子也同樣給每個男子排序。

此方法名為Gale-Shapley演算法。優點如下:

1. 總有大家都訂了婚的一天,不可能無限循環;

2. 中止後所有的婚姻是穩定婚姻。

所謂不穩定婚姻,比如有兩對夫婦M1&F1和M2&F2, M1的老婆是F1,但他更愛F2;而F2的老公雖說是M2,但她更愛M1——這樣的婚姻就是不穩定婚姻。有興趣的讀者可以自行搜索證明過程。

學姐的眼睛開始放光了:

坐在家裡等求婚,下輩子請讓我生在這個城市吧!

我神秘一笑:

是不是女孩子的天堂,讓我們用Python來看一看最後的匹配滿意度吧!

樣本生成

為了完成模擬過程,我們首先需要一些樣本,即隨機生成數量相等(可設置數量)的男性和女性,同時生成他們對每個異性個體的喜愛排名。

模擬男性求婚和女性接受訂婚的過程

每天上午,每位還沒訂婚的男子會向還沒拒絕過他的女子中他最愛的那一個求婚。

而每天下午,每位女性會在自己接到的求婚信中,選擇她最中意的男子接受求婚;如果沒接到求婚,就繼續等待。

運行代碼並導出結果

學姐看著正在運行模擬過程有點著急了,我抽取其中一輪的結果先展示給她看:

縱軸代表該次模擬結果中,某位男性/女性的伴侶喜愛排名,即:匹配到的伴侶是他/她第X喜歡的異性。

顯然,男性匹配到的伴侶離自己的最愛比女性更近——不止一點點!這可和「妹子天堂」的預期有點遠啊!

學姐陷入了困惑:明明女性才掌握著訂婚的決定權,而且男性即使暫時訂婚成功,也有被拋棄的可能啊!你看,隨著匹配輪次增加,男性的伴侶總是從自己最喜歡的對象慢慢變成不那麼喜歡的對象;而女性伴侶卻在一步步變好。你這個會不會是偶然啊!

我:是不是偶然,讓我們來看看100次模擬中,男性/女性匹配到的伴侶喜愛排名均值分布吧。

縱軸代表其中一次模擬中,男性/女性的平均伴侶喜愛排名均值,即:匹配到的伴侶是他們/她們第X喜歡的異性。

可以明顯看到,男性最終匹配到的伴侶的喜愛排名普遍高於女性

學姐終於收起了質疑:原來主動出擊真有這麼大的作用!為什麼呀?

我分析道:學姐你看,女孩只能坐在家裡等求婚,她喜歡的人可能連看到她的機會都沒有。而男性在主動做出選擇之時,每次都能選擇自己最喜歡的對象。即使被拒絕,他的下一次求婚,也能送給可能接受他的、他最愛的女孩兒。這個遊戲保證男孩的伴侶是可能和他在一起的最好的那一個,但對女孩就不是。

學姐:你說得對。面對自己喜歡的人,我應該去爭取,而不只是等待。

我:這就對啦!世界上有什麼事不需要努力呢?你有喜歡的人,就要好好努力,提升自己,去吸引ta,愛ta。

而提升自己有什麼不錯的渠道呢?Enmm,Python數據分析師了解一下?

作者:城市數據團木木,可能是全世界最帥的情感話題數據分析師。

聲明:本文為作者投稿,版權歸其個人所有。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

漫畫:什麼是時間複雜度?
是時候丟棄 Python 2.0,將 100 萬行的代碼遷移到Python 3.0了!

TAG:CSDN |