python - 根据与谁兼容来匹配组中人员的算法
问题描述
我试图根据他们的兼容性在一群人中找到最大的匹配。当我意识到我没有 2 个不同的组时,我正朝着二分图上的最大基数匹配前进。
我在哪里:
我有他们的 ID 列表:[1, 8, 3, 15, 13, 21]
我有一个名为 verify 的函数,它将验证 2 个 id 是否兼容(可能是奇数)。
然后我创建每个人索引兼容的索引图(字典):
ids = [1, 8, 3, 15, 13, 21]
l = len(ids)
matches = {}
for x in range(l):
matches.setdefault(x,[])
for y in range(l):
if x != y:
if verify(ids[x],ids[y]):
matches[x].append(y)
这会产生:
{0: [3, 4, 5], 1: [2, 4, 5], 2: [1, 5], 3: [0, 4, 5], 4: [0, 1, 3], 5: [0, 1, 2, 3]}
现在我不确定从这里去哪里,或者我是否应该采取另一个方向。
有人可以指出我正确的方向吗?谢谢
解决方案
看起来你正在尝试解决稳定的婚姻问题。我编写了一个Rosetta Code 任务,其中包含 Python 和其他语言的解决方案。
推荐阅读
- python-3.x - 具有默认第一个和第二个参数的关键字参数
- python - 对 pandas DataFrame 进行分组和聚合以获得摘要 DataFrame
- javascript - JavaScript 文件中的 VS Code 格式 HTML (ReactJS)
- bash - 删除超过 15 天的 *.ZIP 文件
- python - python pandas中日期时间行的GroupBy日期
- excel - 运行时错误:查看#N/A 字符串时显示 13
- python - 如果行具有相同的“A 列”值,则用最后一个已知值填充空的“B 列”单元格
- python - 如何有效地将随机数添加到数组中,直到达到累积和?
- python - 在 pandas 中将单项系列作为元组返回
- python - IF 在 Python 中使用 Selenium 验证 XPATH 的问题