【发布时间】:2011-06-18 12:16:02
【问题描述】:
我正在编写一个应用程序,它将一组用户分成几对,以便一起执行一项任务。每个用户都可以指定有关其合作伙伴的各种偏好,例如
- 性别
- 语言
- 年龄
- 位置(通常在用户居住地 X 英里/公里以内)
理想情况下,我希望用户能够指定这些偏好中的每一个是“值得拥有”还是“必须拥有”,例如“我宁愿找一个以英语为母语的人,但我不能找一个女性”。
我的目标是最大限度地提高比赛的整体平均质量。例如,假设系统中有 4 个用户,A、B、C、D。这些用户可以通过 3 种方式进行匹配:
选项 1 比赛得分 A-B 5 光盘 4 --- 平均 4.5 选项 2 比赛得分 交流电 2 BD 3 --- 平均 2.5 选项 3 比赛得分 广告 1 公元前 9 --- 平均 5因此,在这个人为的示例中,将选择第 3 个选项,因为它具有最高的整体匹配质量,即使 A 和 D 根本没有很好地匹配。
有没有一种算法可以帮助我:
- 计算上面显示的“匹配分数”
- 选择能够最大化平均匹配分数的配对(同时尊重每个用户的绝对约束)
每个用户都匹配并不是绝对必要的,所以如果要在显着降低匹配的整体质量和让少数用户没有匹配之间做出选择,我会选择后者。
显然,我希望计算匹配的算法尽快完成,因为系统中的用户数量可能非常大。
最后,这个计算比赛得分和最大化总平均数的系统只是我自己想出的一个启发式方法。如果有更好的方法来计算配对,请告诉我。
更新
我描述的问题似乎与stable marriage problem 相似,对此有一个众所周知的解决方案。但是,在这个问题中,我不需要选择的对是稳定的。我的目标是选择配对以使平均“匹配分数”最大化
【问题讨论】:
-
你能定义“相当大”是数百、数千、数百万吗?
-
@Ivan 理想情况下,我希望系统能够在几个小时内为几百万用户执行匹配算法。
-
我正在处理类似的问题(不同之处在于我的“男人”和“女人”必须与异性配对,并且人口不平衡) - 我看到你'还没有接受解决方案 - 你采用哪种方法?
标签: algorithm graph computer-science matching