加权二分匹配

abc*_*abc 6 algorithm bipartite

我知道有很多类似的话题.但是他们中的大多数人在我的案例中给我留下了一些疑问.我想要做的是找到完美匹配(或者尽可能接近完美匹配当然没有完美匹配)然后从所有匹配中找到你能够匹配n个顶点中的k(其中k是最高的) ),我想选择尽可能高的总重量.所以简单地说我所说的是优先考虑的事情:

  1. 匹配尽可能多的顶点
  2. 因为在大多数情况下(非加权)最大匹配是明确的,我想选择边缘上具有最大权重总和的那个.如果它们中有几个具有相同的重量,那么选择哪个并不重要.

我听说过Ford-Fulkerson算法.它是以我描述的方式工作还是我需要其他算法?

tmy*_*ebu 5

如果你自己实现这个,你可能想使用匈牙利算法.存在更快的算法但不容易理解或实现.

Ford-Fulkerson是一种最大流算法; 您可以轻松地使用它来解决未加权的匹配问题.将其转换为加权匹配算法需要额外的技巧; 有了这个技巧,你结束了匈牙利算法.

您还可以使用最小成本流算法来进行加权二分匹配,但它可能无法正常工作.还有网络单纯形法,但似乎主要是历史兴趣.