我有一个匹配的问题,并设计了一种解决方法。 我需要知道算法是否存在,如果是这样的名称,对于以下情况,我看了很多,但找不到任何东西。我最接近的是循环赛,但那并不完全相同。
它类似于一些网络问题,但它们通常没有获得最佳路线,他们只是满足于一个好的路线。我需要最优化的。
这是一个长时间的阅读,以及对SO的异常请求,但我无法在任何地方找到它的名称。
问题 我有一堆物品。 每个项目都可能与一个或多个其他项目相关联。 每个项目只能配对一次。 每个连接都有一个值。
我需要找到哪些组合会产生最高的连接值。
我的解决方案 查找所有项目的所有对并将其存储在地图中 获取第一个项目并将其与地图值中的第一个项目配对。 取下一个项目并将其与第一个未使用的项目配对。 继续这样做,直到不再存在未使用的项目。 保存此组合或配对总值。 如果可能,更改对中的最后一对。 与保存的组合相比,如果更多保存新组合 当无法再更改该对时,删除它并更改新的最后一对,找到更多可能的对。 这种情况一直持续到组合清单缩小为零
最后保存的组合是最好的组合。 (FIN)
答案 0 :(得分:3)
这个问题基本上只是一个最大加权匹配。
对于二分图,找到最大匹配很容易。对于任意图形,它更难但仍然可行。维基百科建议Edmonds的算法叫做Blossom Algorithm。
至于你的算法,目前还不清楚你在做什么,但它看起来像一个贪婪的任务,然后爬山。我担心你的算法不能保证产生最佳结果。你真的证明了这一点吗?你怎么知道它不会陷入局部最小值?
答案 1 :(得分:0)
我相信你正在寻找Gale-Shapley algorithm,它解决了稳定的婚姻问题。