情况:用户选择多个其他用户作为项目的可能合作伙伴。用户对他选择的一个用户没有偏好(即,他列表中的任何用户都足以成为合作伙伴)。例子:
| user_id | preferred_partners |
| 1 | 2 4 |
| 2 | 3 1 |
| 3 | 4 2 1 |
| 4 | 1 |
真正的清单会大得多。
我的问题:给定一组用户及其首选合作伙伴(如上面的列表),我想生成一组最终合作对。最终合作对的数量必须最大化(我希望尽可能多的人成对)。
这是我认为我需要的算法:Edmonds's matching algorithm,但由于我不是数学背景,我在解释和实现它时遇到了麻烦。
任何帮助,将不胜感激。提前致谢。