稳定婚姻问题:Gale–Shapley算法
(一)問題的引出
在組合數學、經濟學、計算機科學中,穩定婚姻問題(英語:stable marriage problem,簡稱SMP)又稱為穩定配對問題(stable matching problem),是指在兩組同樣大小的元素集合中(例如集合1是男子組、集合2是女子組,而他們各有偏好),尋求一個穩定配對組合所遇到的問題。一個組合在以下情況下并不穩定:
在集合1中有一個元素A更偏好于集合2的一些元素B,但元素A已被配對;而元素B亦更偏好于元素A多于配對給他的元素。在男女婚姻的角度來說,可以寫成一名男子A獲安排與女子D結婚,但A實際上是更喜歡女子B的。反之,女子B亦被安排與男子C結婚,但B實際上也是更喜歡A的。
簡單來說,一個穩定的組合是指在任何一個組合中(含A及B),每一個元素都是最偏好目前的組合多于任何其他的元素。亦即是說,穩定婚姻配對是指在同等數量男女當中,每一名男子皆能與自己最喜歡的女子結婚,反之亦然。然而,這個配對方式卻引來不少難題。
有兩對夫妻M1 F2,M2 F1。M1心目中更喜歡F1,但是他和F2結婚了,M2心目中更喜歡F2,但是命運卻讓他和F1結婚了,顯然這樣的婚姻是不穩定的,隨時都可能發生M1和F1私奔或者M2和F2私奔的情況。所以在做出匹配選擇的時候(也就是結婚的時候),我們需要做出穩定的選擇,以防這種情況的發生。
(二)算法介紹
參考:http://www.matrix67.com/blog/archives/2976
1962 年,美國數學家 David Gale 和 Lloyd Shapley 發明了一種尋找穩定婚姻的策略。不管男女各有多少人,不管他們各自的偏好如何,應用這種策略后總能得到一個穩定的婚姻搭配。換句話說,他們證明了穩定的婚姻搭配總是存在的。有趣的是,這種策略反映了現實生活中的很多真實情況。
算法中采用了男生主動追求女孩的形式。算法步驟描述:第一輪,每個男人都選擇自己名單上排在首位的女人,并向她表白。這種時候會出現兩種情況:(1)該女士還沒有被男生追求過,則該女士接受該男生的請求。(2)若該女生已經接受過其他男生的追求,那么該女生會將該男士與她的現任男友進行比較,若更喜歡她的男友,那么拒絕這個人的追求,否則,拋棄其男友(囧)……第一輪結束后,有些男人已經有女朋友了,有些男人仍然是單身。在第二輪追女行動中,每個單身男都從所有還沒拒絕過他的女孩中選出自己最中意的那一個,并向她表白,不管她現在是否是單身。這種時候還是會遇到上面所說的兩種情況,還是同樣的解決方案。直到所有人都不在是單身。怎么證明這個算法肯定能夠得到穩定的婚姻:
(1)隨著輪數的增加,總有一個時候所有人都能配上對。因為男生根據自己心目中的排名依次對女士進行表白,假如有一個人沒有配上對,那么這個人必定是向所有的女孩進行表白了。但是女孩只要被表白過一次,就不可能是單身,也就是說此時所有的女生都不是單身的,這與有一個人沒有配上對是相悖的。所以假設不成立。該算法一定會使得所有人都能夠配對成功。
(2)隨著輪數的增加,男士追求的對象越來越糟,而女士的男友則可能變得越來越好。假設男A和女1各有各自的對象,但是比起現在的對象,男A更喜歡女1,所以,在此之前男A肯定已經跟女1表白過的,并且女1拒絕了男A,也就是女1有了比男A更好的男友,不會出現私奔的情況……。
————————————————
版權聲明:本文部分轉自CSDN博主「csc_csc_csc」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/cscmaker/article/details/8291131
總結
以上是生活随笔為你收集整理的稳定婚姻问题:Gale–Shapley算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux查看端口进程号(linux查看
- 下一篇: 崩坏3安卓模拟器怎么下载(崩坏3安卓模拟