簡單的穩定婚姻匹配

2021-10-07民俗文化60

一、相關的定義

1.有一個男士集合和一個女士集合。每個男士都有一個優先級列表,把女士按潛在結婚對象進行優先級排序。

同樣的,女士也有一個對潛在結婚對象的優先級列表。

婚姻匹配:

一個婚姻匹配M是一個包含n個(m,w)對的集合,每一對的成員都按照一對一的模式從兩個不相交的n元素集合Y和X中選出。也就是說,Y中的每個男士m都只和X中的一位女士w配對,反正亦然。相當於一個二分圖中,邊來連接可能結婚的對象,兩邊的頂點代表X和Y,婚姻匹配也是圖中的一個完美匹配。

婚姻的穩定:如果在匹配M中,,男士m和女士w沒有匹配,但他們都更傾向對方,而不是M中彼此的伴侶,那麼(m,w)稱為受阻對,如果婚姻匹配存在受阻對,那麼我們說婚姻是不穩定的,如果不存在,則婚姻是穩定的。

二、穩定婚姻算法

輸入:含有一個n個男士的集合和一個n個女士的集合,以及各自選擇結婚對象的優先級。

輸出:一個穩定的婚姻匹配關系

1.開始所有的男生和女士都是自由的。

2.如果存在自由男生,任選一個男生,執行下面步驟:

(1)求婚:選中的男士m向w求婚。w是優先級最高的,而且沒有拒絕過他。

(2)回應:如果w是自由的,她接受求婚,如果w不是自由的,她把m和當前的配偶作比較,如果更喜歡m接受求婚,否則拒絕。

3.返回n個配對的集合。

三、代碼的實現

因為這次的實現比較簡單,所以用了matlab來編寫函數

//dequeue函數

function[Q]=dequeue(Q)

n=size(Q,2);

fori=1:n-1

Q(i)=Q(i+1);

end

Q(n)=[];

end

//enqueue函數

function[Q]=enqueue(Q,x)

n=size(Q,2);

Q(n+1)=x;

end

//判斷隊列否為空

function[flag]=empty(Q)

flag=false;

ifsize(Q,2)==0

flag=true;

end

end

//判斷男生和女士現有配偶的優先級順序,如果排在該配偶前面

function[j]=shunxu(B,x,y)

生辰配對測試婚姻配對_婚姻配對_農歷配對婚姻配對

%%輸入一個矩陣的第x行,判斷輸入的值y在這行的位置

n=size(B,2);

j=1;

fori=1:n

j=j+1;

if(B(x,i)==y)

break;

end

end

end

//婚姻匹配函數

function[D]=Match(A,B)

%A,B分別是男女的優先選擇矩陣

%返回穩定的匹配

n=size(A,2);

B1=zeros(1,n);%B1女士是否已經匹配,儲存匹配的男士編號

fori=1:n

Q(i)=i;

end%Q為待匹配的男士的隊列,初始化為全部男士

while(~empty(Q))

m=Q(1);Q=dequeue(Q);

fori=1:n

k=A(m,i);%m男士第i喜歡的是k女士

if(B1(k)~=0)%如果k女士已經匹配了

if(shunxu(B,k,B1(k))>(shunxu(B,k,m)))%且如果第m個男士的優先級比現有配偶要高

Q=enqueue(Q,B1(k));

B1(k)=m;

break;

end

else%如果沒匹配

B1(k)=m;

break;

end

end

end

a=1:n;

婚姻配對_農歷配對婚姻配對_生辰配對測試婚姻配對

D=[a;B1];%%這裏輸出的是1到n編號女士對應的配偶的編號

End

輸入說明:這裏的A,B存儲的是編號,而不是第一喜歡的人

Matlab的文件輸入輸出問題:

四、案例的測試

用書上那個例子:見算法設計與分析基礎293頁

性別

編號

1

2

3

男士

Bob

Jim

Tom

女士

Ann

Lea

生辰配對測試婚姻配對_婚姻配對_農歷配對婚姻配對

Sue

那麼男士的優先級順序為:女士的優先級順序為:

A= [2,1,3 B= [2,3,1

2,3,1 3,1,2

3,2,1] 2,3,1]

A的每一行分別是Bob,Jim和Tom心中對理想對象的優先級順序

同理,B的每一行分別是Ann,Lea和Sue心中對理想對象的優先級順序。

>>Match(A,B)

ans=

123

132

可以從結果分析,女士Ann和Bob結婚,女士Lea和Tom結婚,女士Sue和Jim結婚

和書上的結果是一樣的。

五、算法的局限性

1.輸出的局限性:該算法顯然會輸出一個穩定的匹配,在這個匹配中,所有的男生和他們的第一選擇相配,但是對女生並不如此。例如上面的從B中知道Ann最喜歡的是2號男生Jim,第三喜歡才是BOb,然後Bob第二喜歡的是Ann,,男生可以不斷去表白,選擇自己比較喜歡的男生,女生就只能比較男友和更換男友,這樣,女生可能等不到最喜歡的男友的表白,遊戲就結束了。

如果想要女生占優勢,那麼需要把女士和男生的輸入順序對換過來。

2.時間的效率性改進:為了快速求出所有的穩定匹配結果,提出了基於先序遍歷森林的快速枚舉算法。由Gale-Shapley算法的性質得到一個定理及其推論,利用得到的推論對算法做了進一步改進和優化。在滿足推論的特定條件下,提高了算法的執行效率

六、具體的應用

應用於測試資源匹配的婚姻穩定算法改進

下一代自動測試系統中將實現測試資源的動態分配,我們使用婚姻穩定(StableMarriage)算法來解決測試過程中測試資源與被測設備的匹配問題,使用擇偶傾向隊列縮減模型對求解典型"婚姻穩定"問題的Gale-Shapley(G-S)算法進行優化.該模型中使用擇偶傾向隊列描述婚姻穩定問題中匹配優先順序,該隊列會隨著算法進行逐漸縮短,在簡化數據規模的同時優化了處理婚姻穩定問題的G-S算法處理流程,改進後算法實現無效匹配請求的預先清除,從而使用後來請求優先的原則對匹配請求進行處理機制,對原有算法的時間空間成本實現了優化,適應了測試資源匹配任務的需求.

參考文獻:孫昱付少波張天培李長安《應用於測試匹配婚姻算法的優化改進》

相关文章

男人嘴角長痣面相圖解分析

生活中有不少人在嘴角的位置都會長痣,而痣是可以通過一些方法去除的,但痣也是不可以隨便除去的,畢竟痣關系著我們的運勢,有些好痣若是去除了會削弱我們的福氣,有些惡痣若是不除去也會影響著我們的運勢,那麼嘴角上的痣好不好呢?男人嘴角長痣面相圖解分析是怎麼樣的呢?下面是小編整理的相關文章,讓我們一起來看看吧!...

教你看手相算命 超準

手相學是古人從實踐中總結出來的一門學問,它是以現象和事實為依據。根據手掌的形狀、紋路等等來反映一個人的健康狀況,也可以反映出人的心理、性格和命運。那麼我們要根據什麼來看手相算命呢?下面小編整理了一些相關資料,希望可以幫到大家。    教你看手相算命 超準 教你看手相算命 1. 生命線 生命...

根據男人的下巴看面相

許多人都不知道在面相學中下巴的面相代表著什麼,但是你知道男人的下巴面相如何看出你自身日後的信息嗎?你了解面相算命多少呢?不妨隨大師一起了解下吧。 根據男人的下巴看面相 如何看男人下巴面相算命 1、下巴圓凸的男人 擁有這樣下巴的男人,具有領導統禦的能力,雖然做事情的時候,常常帶些自我優越感,但...

怎麼從面相看感情運勢

看面相是我國流傳已久的一門學術,而在面相學中可以看出一個人的運勢兇吉;那麼,怎麼從面相看感情運勢呢?下面是小編整理的相關文章,讓我們一起來看看吧! 怎麼從面相看感情運勢 女人面相怎麼看感情運勢 1. 鼻梁高直的女人婚姻好: 女人鼻梁高挺有肉,鼻的大小和臉的大小成正比,比較適中,或鼻頭大且鼻梁...

一定會離婚的男女面相大揭露

非到萬不得已的時候,誰願意離婚呢?離婚的理由有很多,千奇百怪,無奇不有的理由比比皆是。但在面相學上面來說,有些人一出生就註定會離婚,擁有下列面相的男女註意了,要認真對待自己的感情。 一定會離婚的男女面相大揭露 離婚率最高的面相 從古老的面相學來講,有些人的面部特征,註定離婚率極高。下...

97屬什麼生肖 1997屬牛的婚姻和命運

53歲屬什麼生肖 53歲屬什麼生肖什麼命 對於53歲的人們來講,人生已經過了一大半了,生活經歷非常的豐富。而且他們的事業發展的也非常不錯了,收入自然非常好,同時他們的生活水平也非常的不錯。那麼,53歲屬什麼生肖呢?又或者說53歲屬什麼生肖什麼命呢?相信大家內心充滿了疑問,接下來就讓我們一起來了解...

屬雞和十二屬相的婚姻如何

雞年生的人頭腦靈活,思慮很快,因此常會有急躁的表現,但也因為如此,在說話時,由於嘴巴趕不上腦中所想,就會有斷句、或口吃現象。盡管屬雞人精力充沛,做事速度快,成功率高,但如果屬雞人不願意去做的事,屬雞人不會盡一點兒力量。那麼你知道生肖雞的人與十二生肖裏面的生肖相配是怎樣的嗎? 屬雞和屬豬的婚姻如何...

會離婚的男人五官面相

在面相學中可以根據一個人的五官面相看出未來的信息,那麼你知道如何根據男人的五官面相看出未來的婚姻狀況嗎?不妨隨大師一起了解下吧. 會離婚的男人五官面相 怎麼從面相看男人離婚的特征 若眼角下搭,鼻孔外露,嘴唇發厚,此三點同時存在,即是離婚之相 說白了,就是等著讓老公外面招惹桃花吧,一般不招個百...

看男女山根有橫紋的面相算命

在面相學中山根橫紋面相也可以看出你的命運以及性格人,那麼你知道男女山根有橫紋的面相如何算出命運以及性格嗎?不妨隨大師一起了解下吧。 看男女山根有橫紋的面相算命 男性山根有橫紋 男性山根出現橫紋,據古相書講,這種男人一定會與妻子離異,就算不是橫紋,只要在山根位置出現傷痕或者惡痣,情況都是一樣,而...

不能嫁的男人面相圖解

生活中每個女人都應該在擇偶方面慎重的選擇,畢竟如果遇到壞男人則是會影響到的自身的未來的婚姻生活以及家庭,其實我們都可以從面相看出一個男人是否不能嫁。尖門是指額邊際與魚尾之間的面部區域。這類男性對付女人往往有一手,能夠穿梭於幾個女人之間,把女人們玩得團團轉。與他結婚,你們的婚姻定會很快以他的出軌而告終...

巽為風卦財運

巽為風卦為六十四卦之一,第57卦,巽宮第一位。 巽為風卦不穩定的意思,靜中有動、動中有靜,好壞不定之象。 巽為風卦含義 推斷:功名稱意,求財得利,交易可成,疾病痊愈。 大象:此卦為兩重巽風重疊,巽為入,風之所到無孔不入,尤如政令頒布,深入民心。 運勢:波折重重,運勢起落浮沈不定,...

五行四柱批婚姻:表示婚姻不順的八字特點

五行四柱批婚姻:表示婚姻不順的八字特點 婚姻大事,是每個人一生中逃脫不掉的、必需面對和經歷的一種程序。有人一見鐘情、相見恨晚、相依相伴、白頭到老,而有人則千與千尋、如履薄冰、苦心經營、分道揚鑣,這究竟是為什麼呢?其實答案就在一個緣字上。所謂緣,就是特定時空的交匯,也可以說是前世修來的。 原來人...

面相看命運:顴骨高的女人命運

面相看命運:顴骨高的女人命運

對於面相來直接看命運的話,那麼顴骨高的女人面相,都是直接在很多面相命運中都是說明著什麼的呢,對此面相看命運:顴骨高的女人命運到底如何?下面一起來看看吧。 面相看命運:顴骨高的女人命運 顴骨高的女人面相命理 1、 顴骨中之骨屬陽,肉主陰,男人顴骨捎凸無妨,女人顴骨太高凸露則不吉,主刑克丈夫...

觀音靈簽28問婚姻 觀音靈簽第25簽求感情

觀音靈簽28問婚姻 觀音靈簽是人們在傳統祭祀中相信的方法之一。通過抽簽尋找答案,許多人通過觀音靈簽向婚姻問題尋求幫助。讓我們來分析一下觀音靈簽的28個婚姻問題: 第一個問題:靈簽號 關於婚姻問題的觀音精神標誌的編號是多少?當遇到情感問題時,精神標誌的編號通常會產生一些心理暗示。在這個問題上,精神標誌...

十二生肖配對有哪些禁忌 婚姻屬相配對可信度高嗎0

在中國,十二生肖文化已深入人心,十二生肖配對更是受到大多數人的認可。父母在子女結婚之前都會對兩人的生肖進行配對,從中了解兩人的婚姻運勢,但是許多人也發出了十二生肖配對可信度高嗎的疑問。接下來小編就跟大家分享十二生肖配對有哪些禁忌以及婚姻屬相配對可信度高嗎。 一、十二生肖配對有哪些禁忌 1、婚姻屬相...