我正在寻找一种简单的算法,在二分图的边缘中获得最小加权边。我搜索过,我都知道它意味着二分的封面边缘,换句话说,如果我们有二分图并且每条边都有一个数字权重如何得到它们中最小的数字
答案 0 :(得分:0)
提出这个问题的方式使得它非常不清楚。我得到的解释之一是:"给定加权二分图G,我如何获得G的最小边缘覆盖?"。如果是这种情况,那么Hungarian algorithm(另请参阅http://reference.wolfram.com/mathematica/ref/FindEdgeCover.html)也可以解决您的问题。
答案 1 :(得分:0)
你需要匈牙利算法。 点击here 得到讲义。
在处理之前,您应该有一个成本矩阵,其中每个条目都是边际成本 从节点A到节点B.匹配步骤如下:
上述算法基于数学定理
答案 2 :(得分:0)
比其他答案中建议的匈牙利算法更好的是Jonker-Volgenant(LAPJV)算法。
看看这个名为Bipartite Solver的GitHub存储库,它基本上是一个如何在代码中实现LAPJV的教程,并附带一个可运行的图形样本。
快速疯狂,能够在一秒钟内完成1000到1000次。
库中还包括贪婪搜索,这种搜索更快,但不保证最佳性。
如果您希望尝试算法而不必从源代码构建算法,那么该库也有一些executables。