我正在开发一款需要不断匹配用户的rails应用。基本上我需要一种算法,它将用户列表作为输入,并返回最匹配的对列表。根据标准,用户被认为是良好的匹配,这些标准具有更多共同利益或它们之间的距一般来说,我需要能够调整被认为是“良好匹配”的东西,但我只需要一个方向来寻找将需要一组用户并返回一组对的算法。
如果它有帮助,我在用户模型中有一个方法,将另一个用户作为参数,并返回一个匹配程度的得分。我需要帮助将其用于大规模匹配。
我计划让用户每隔一段时间进入一个表,然后是一个在列表中运行的cron作业,以找到每个人之间的最佳配对。有人有什么想法吗?
非常感谢!
答案 0 :(得分:6)
Jack Edmonds' algorithm在一般(非二分图)图中找到最大权重匹配。
Vladimir Kolmogorov在C ++中有一个paper and an implementation。
编辑添加:如果你不介意没有获得最佳匹配,并且你想要一些易于计算的东西,那么为什么不使用简单的贪婪算法呢?在每个阶段,配对得分最高的两个用户。然后将剩余用户中得分最高的两个用户配对,依此类推。