Algorithm 加权二部匹配

Algorithm 加权二部匹配,algorithm,bipartite,Algorithm,Bipartite,我知道有很多类似的话题。但他们中的大多数人都给我留下了一些疑问。我想做的是找到完美的匹配(或者在没有完美匹配的情况下尽可能接近完美),然后从所有这些匹配中,你可以匹配n个顶点中的k个(其中k是可能最高的),我想选择可能最高的总重量。 简单地说,我要说的是以下优先事项: 匹配尽可能多的顶点 因为(非加权)最大匹配在大多数情况下是明确的,所以我想选择边上权重和最大的匹配。如果它们中有几个重量相同,那么选择哪一个并不重要 我听说过福特·富尔克森算法。它是以我描述的方式工作还是我需要其他算法?如果您自己

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

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

  • 我听说过福特·富尔克森算法。它是以我描述的方式工作还是我需要其他算法?

    如果您自己实现它,您可能需要使用。存在更快的算法,但不容易理解或实现

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


    您还可以使用最小成本流算法进行加权二部匹配,但它可能不太管用。还有网络单纯形法,但它似乎最有历史意义。

    事实上,这是我关于分配问题的最终学习文凭(idk完全等同于国际学位),因此我将尝试了解福特·富尔克森。问题是我不确定这是否是我想要的工作方式。例如,以下面的情况为例::=最大流是否意味着将获取边,并以相同的方式获取最大可能的权重,而不是首先查找最大顶点集,并作为边权重的第二个条件和?这并不是使用流来解决此问题的方法。你需要单位容量。如果你想要一个直接的公式,你使用一个最小成本流模型,保持单位产能,让成本是,嗯,成本。这不是最大流问题,但有一个技巧(原始-对偶方法)允许您将最大流用作子例程。