結婚匹配問題

2021-09-07 10:58:26 字數 1470 閱讀 4773

問題大概是這樣:有乙個社團裡有n個女生和n個男生,每位女生依照她的偏愛程度將男生排序,同一時候每位男生也依照自己的偏愛程度將女生排序。然後將這n個女生和n個男生配成完備婚姻。

假設存在兩位女生a和b,兩位男生a和b,使得a和a結婚。b和b結婚,可是a更偏愛b而不是a,b更偏愛a而不是b。則這個婚姻就是不穩定的。a和b可能揹著別人相伴而走。由於他倆都覺得,與當前配偶比起來他們更偏愛各自的新伴侶。

假設完備婚姻不是不穩定的。則稱其是穩定的。通過證明,能夠得到每個n女n男的社團,都存在穩定婚姻的結論。可是這樣的情況僅僅在異性的社團中存在。

也就是說在同性的社團裡面。穩定婚姻的存在性將不再被保證。

gale-shapley 演算法

while  存在男人m是自由的且還沒對每乙個女人都求過婚

選擇這個男人m

令w是m的優先表中還沒求過婚的最高排名的女人

if  w是自由的  

(m。w)變成約會狀態

else  w當前與m1約會

if  w更偏愛m1而不愛m

m保持自由

else    w更偏愛m而不愛m1

(m。w)變成約會狀態

m1變成自由

endif

endif

endwhile

以下是關於 穩定婚姻問題 的題目:

1. zju 1576 

marriage is stable

ac**例如以下:

#include#include#include#includeusing namespace std;

int nb, ng, n;

mapboy;

mapgirl;

string boymk[510], girlmk[510];

int a[510][510], rank[510][510], pose[510];

int vm1[505], vm2[505], input[510];

int find_boy(string s)

return boy[s];

}int find_girl(string s)

return girl[s];

}int main()

}for (i = 0; i < n; i++)

}memset(pose, 0, sizeof(pose));

memset(vm1, -1, sizeof(vm1));

memset(vm2, -1, sizeof(vm2));

while(1)

else if (rank[v][vm2[v]] > rank[v][u])

}for (i = 0; i < n; i++)

cout << boymk[input[i]] << ' ' << girlmk[vm1[input[i]]] << endl;

cout << endl;

}return 0;

}

看完這二十個問題再結婚

當你走在婚姻的殿堂的時候,在你的內心裡肯定有這樣的掙扎。或許你們在一起已經一段時間了,或許你們已經認真討論了將走向婚姻的殿堂,還或者你正準備要開始一段新的戀情但是糾結於當前的境況。不管你處在如何情況,但是未雨綢繆總是好的。在你們要決定要更進一步之前,讀讀下面的二十個問題吧,或許你可以進一步明白你們之...

離婚與結婚

忙裡偷閒,開啟自己的 部落 還是那幾篇舊文,很是無奈。突然有了寫點什麼的衝動,以慰平時被工作包圍的自己。最近幾天新婚半年的老友很是被婚姻生活困擾,起因也只是一些雞毛蒜皮的小事,結果就大動干戈,雙方都有太多衝動的言語,離婚 自然就掛到了嘴邊,更加不妥的是牽涉及雙方的父母。鬧鬧最近和我處得不錯,其主要原...

我們結婚吧

如果我愛你,而你又恰好愛上我。那麼,我們結婚吧。我們一起去面對後來的未知。一起感慨生活,一起拼搏。如果,你肯定我們會在一起。那麼,我們結婚吧。也許,不會有遺 憾。有多少人已不相信愛情,有多少人拿婚姻當交易。已剩下大學裡純真卻脆弱的愛情,可畢業都成了對愛情的考驗。然而 我說,畢業,我們結婚吧。我們倆個...