gpt4 book ai didi

algorithm - 最大二分匹配(ford-fulkerson)

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:23:41 25 4
gpt4 key购买 nike

我正在阅读 http://www.geeksforgeeks.org/maximum-bipartite-matching/http://en.wikipedia.org/wiki/Ford%E2%80%93Fulkerson_algorithm并且无法理解。看起来这个例子是假设每份工作只能接受 1 个人,每个人都想要一份工作。我想知道算法/代码将如何改变,例如,如果 v 集的容量 > 1(可以为该工作雇用多个人)并且 u 集 > 1(每个人想要超过 1 个工作)?

最佳答案

要允许多个人分配给作业,您只需将边容量从 Jobs 修改为 Terminal(类似于 Niklas B. 在his comment ,但不完全是。)

像这样:

Flow network

SourcePeople 的容量为 1,从 PeopleJobs 的容量为 1 保证一个人只会被选为一份工作(因为他们总体上可以贡献的最大流量是 1)。但是,从JobsTerminal 的容量> 1 允许为该工作分配多个人。

如果一个人也可以执行超过 1 项工作,那么从 SourcePerson 的最大流量会增加该数量:

Another flow network

其中 ijkx 是整数的替代值 >= 1

这里要记住的关键是 People 左边的流量决定了他们可能从事多少工作,而 Jobs 右边的流量决定了有多少人可能被分配到那份工作。中间的容量不应该改变。

关于algorithm - 最大二分匹配(ford-fulkerson),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22747088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com