我正在寻找一种简单的算法,用于在二分图中获取最小加权边。我已经搜索了很多资料,所知道的全部意味着二分图的覆盖边,换句话说,如果我们有一个二分图,并且每个边都有一个数字权重,如何获取它们之间的最小值。
我正在寻找一种简单的算法,用于在二分图中获取最小加权边。我已经搜索了很多资料,所知道的全部意味着二分图的覆盖边,换句话说,如果我们有一个二分图,并且每个边都有一个数字权重,如何获取它们之间的最小值。
上述算法基于一个数学定理:
除了其他答案中提到的匈牙利算法,更好的选择是Jonker-Volgenant(LAPJV)算法。
看看这个名为Bipartite Solver的GitHub存储库,它基本上是一个关于如何在代码中实现LAPJV的教程,包括可运行的图形示例。
它非常快速,能够在不到一秒钟的时间内完成1000到1000的计算。
该库还包括贪心搜索,速度更快,但不能保证最优解。
如果您想尝试算法而不必从源代码构建它,则该库还包括一些可执行文件。