問題來自于一場“3分鐘相親”活動,參加活動的有n位男士和n位女士。要求每位男士都要和所有的女士進行短暫的單獨交流,并為她們打分,然后按照喜歡程度,對每一位女士進行排序;同樣的,每位女士也要對所有男士進行打分和排序。
在這之后我們?yōu)檫x擇策略為這n位男士和n位女士配對。使得在婚后不會有“出軌”的情況發(fā)生。
這里的“出軌”是什么意思:
圖片來自網(wǎng)絡(luò),僅作舉例之用
定婚姻問題.png)
如果以下兩種情況之一發(fā)生,則會發(fā)生出軌:
- 如果第一對夫妻中的妻子在婚后覺得自己的丈夫沒有第二對夫妻中的丈夫帥;第二對夫妻中的丈夫同樣也覺得自己的妻子沒有第一對夫妻中的妻子漂亮
- 如果第一對夫妻中的丈夫在婚后覺得自己的妻子沒有第二對夫妻中的妻子美;第二對夫妻中的妻子同樣也覺得自己的丈夫沒有第一對夫妻中的丈夫帥
解決穩(wěn)定婚姻的算法之一:
延遲認可算法(Gale-Shapley算法)
先對所有男士進行落選標記,稱其為自由男。當存在自由男時,進行以下操作:
- 每一位自由男在所有尚未拒絕她的女士中選擇一位被他排名最優(yōu)先的女士;
- 每一位女士將正在追求她的自由男與其當前男友進行比較,選擇其中排名優(yōu)先的男士作為其男友,即若自由男優(yōu)于當前男友,則拋棄前男友;否則保留其男友,拒絕自由男。
- 若某男士被其女友拋棄,重新變成自由男。
在算法執(zhí)行期間,自由男們
主動出擊,依次對最喜歡和次喜歡的女人求愛,一旦被接受,即失去自由身,進入訂婚狀態(tài);而女人們則采取
“守株待兔”和
“喜新厭舊”策略,對前來求愛的男士進行選擇:若該男子比未婚夫強,則悔婚,選擇新的未婚夫;否則拒絕該男子的求婚。被女友拋棄的男人重獲自由身,重新?lián)碛辛俗非笈说臋?quán)利——當然,新的追求對象比不過前女友。
這樣,在算法執(zhí)行期間,每個人都有可能訂婚多次——也有可能一開始就找到了自己的最愛,從一而終——每訂一次婚,女人們的選擇就會更有利,而男人們的品味則越來越差。只要男女生的數(shù)量相等,則經(jīng)過多輪求婚,訂婚,悔婚和再訂婚之后,每位男女最終都會找到合適的伴侶——雖然不一定是自己的最愛(男人沒能追到自己的最愛,或女人沒有等到自己的最愛來追求),但絕對不會出現(xiàn)“雖然彼此相愛,卻不能在一起”的悲劇,所有人都會組成穩(wěn)定的婚姻。
posted on 2015-03-09 18:57
JulyRina 閱讀(345)
評論(0) 編輯 收藏 引用 所屬分類:
算法專題