Lets说我有一份男女名单。每个男人(x)对每个女人进行评分,每个女人(y)对每个男人进行评分,评分为0-9。
e.g。
x1:{y1:0,y2:5,y3:9}
x2:{y1:1,y2:0,y3:9}
x3:{y1:5,y2:5,y3:8}
y1:{x1:3,x2:3,x3:5}
y2:{x1:8,x2:2,x3:2}
y3:{x1:9,x2:5,x3:9}
我正在寻找一个将所有x&对配对的算法为了最大化总评级。
在这种情况下,最佳配对将是x2:y3 = 9 + 9 = 18,x1:y2 = 5 + 8 = 13,x3:y1 = 5 + 9 = 14.总评级为45.至少我认为这只是眼睛。
我认为它是最大独立集问题的简化版,这不是NP难的优化问题。
答案 0 :(得分:1)
这个问题被称为稳定的婚姻问题,诺贝尔经济学奖被授予解决方案。在维基百科上详细描述了算法:
http://en.wikipedia.org/wiki/Stable_marriage_problem
从维基百科剪切/粘贴的伪代码:
function stableMatching {
Initialize all m ∈ M and w ∈ W to free
while ∃ free man m who still has a woman w to propose to {
w = m's highest ranked woman to whom he has not yet proposed
if w is free
(m, w) become engaged
else some pair (m', w) already exists
if w prefers m to m'
(m, w) become engaged
m' becomes free
else
(m', w) remain engaged
}
}