【发布时间】:2014-05-09 22:29:17
【问题描述】:
我正在阅读 http://www.geeksforgeeks.org/maximum-bipartite-matching/ 和 http://en.wikipedia.org/wiki/Ford%E2%80%93Fulkerson_algorithm 并且无法理解。似乎这个例子是在假设每个工作只能接受 1 人并且每个人想要一份工作的情况下。我想知道如果 v 集的容量 > 1(可以为该工作雇用多个人)并且 u 集 > 1(每个人想要超过 1 份工作),算法/代码将如何变化?
【问题讨论】:
-
你只需要在图的左侧和右侧的边容量 > 1 并像往常一样找到最大流量。您的算法需要更通用一些才能跟踪增广路径的瓶颈容量。您可以阅读有关 Ford-Fulkerson on Wikipedia 的信息
-
所以假设每个人都想要 2 个工作,每个工作有 3 个可用位置。图表会像这样吗? i.imgur.com/B0SvQjU.png
-
中间的边应该有容量 1,除非您想多次将一个人分配给同一个工作(这可能是明智的,具体取决于您的用例)。然后在该图中找到最大流量并检查它是否等于 8(左侧容量总和)。如果没有,那么您就无法满足工作的所有需求
标签: algorithm max-flow ford-fulkerson