我有一个应用程序,人们可以互相打分,满分10分。我想在每天的午夜为每个成员计算一个“匹配”。平均而言,我想让每个人都尽可能快乐。
So at the midnight, I have an oriented graph like so :
1 -> 2 : 7.5 // P1 give a 7.5/10 to P2
1 -> 3 : 5
1 -> 4 : 9
2 -> 3 : 6
2 -> 1 : 4
etc.
为简化起见,假设P1给P2赋予5,P2给P1赋予7,则匹配项P1- P2的权重为5 + 7-(7-5)/ 2 = 11(我减去差异是因为,对于相同的成绩总和,最好是彼此接近,即(7/10-7/10)比(10/10-4/10)更匹配。
因此,完成此操作后,我们得到了一个无方向图。从数学上来说,出于我的目的,我认为我需要找到一种算法,该算法在具有该图的所有最大尺寸的匹配项中找到具有最大权重之和的匹配项。是否存在这样的算法?
我已经研究过“婚姻稳定问题”和“分配问题”,但这是针对可分为2类(男人/女人,男人/任务..)的图的人
答案 0 :(得分:1)
一种方法是修改图形,然后在其上找到一个maximum weight matching。
我需要找到一种算法,该算法在具有该图的所有最大匹配中找到具有最大权重和的匹配。是否存在这样的算法?
让我们考虑您的图形G = (V, E, w)
,其中w
是您的权重函数。让我们用n
来表示V
的大小,即图形中的顶点数,并通过M
来表示边缘之间的最大权重。
然后,您要做的就是以这种方式定义w'
:对于e
,E
的任意边w'(e) = w(e) + n*M
。
在这种情况下,G' = (V, E, w')
上的最大权重匹配对应于G = (V, E, w)
中最大尺寸的匹配,该匹配也具有最大权重。