問題大概是這樣:有乙個社團裡有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;
}
看完這二十個問題再結婚
當你走在婚姻的殿堂的時候,在你的內心裡肯定有這樣的掙扎。或許你們在一起已經一段時間了,或許你們已經認真討論了將走向婚姻的殿堂,還或者你正準備要開始一段新的戀情但是糾結於當前的境況。不管你處在如何情況,但是未雨綢繆總是好的。在你們要決定要更進一步之前,讀讀下面的二十個問題吧,或許你可以進一步明白你們之...
離婚與結婚
忙裡偷閒,開啟自己的 部落 還是那幾篇舊文,很是無奈。突然有了寫點什麼的衝動,以慰平時被工作包圍的自己。最近幾天新婚半年的老友很是被婚姻生活困擾,起因也只是一些雞毛蒜皮的小事,結果就大動干戈,雙方都有太多衝動的言語,離婚 自然就掛到了嘴邊,更加不妥的是牽涉及雙方的父母。鬧鬧最近和我處得不錯,其主要原...
我們結婚吧
如果我愛你,而你又恰好愛上我。那麼,我們結婚吧。我們一起去面對後來的未知。一起感慨生活,一起拼搏。如果,你肯定我們會在一起。那麼,我們結婚吧。也許,不會有遺 憾。有多少人已不相信愛情,有多少人拿婚姻當交易。已剩下大學裡純真卻脆弱的愛情,可畢業都成了對愛情的考驗。然而 我說,畢業,我們結婚吧。我們倆個...