二分匹配的最大流思维

本文探讨了如何将计算机CPU指派问题抽象为二分图最大匹配问题,并通过Ford-Fulkerson最大流算法求解。文章通过实例解释了如何从结果反向启发,将问题转化为网络流问题,进而利用最大流方法找到最大的任务处理数量。
摘要由CSDN通过智能技术生成

在之前的两篇文章中,我们讲述了「最大流问题」和「Ford-Fulkerson 最大流求解方法」,当然在阅读这篇文章之前,我需要你有以上两篇文章的基础,请在阅读上面两篇文章后再来进行阅读。这篇文章我们来讲述一个二分图匹配问题。并且将这个问题转化为最大流问题模型来解决。

为了引出二分图匹配问题,我们首先给出一个实际问题的例子:

计算机 CPU 指派问题

在我的 N 核计算机上有 K 个任务。每个任务在工作时都得霸占 CPU 一个完整的核心,并且每个 CPU 核心不是所有任务都能处理,只能处理其中几种任务。我们的问题是在一次处理过程中,最多能够处理的任务数是多少?

计算机 CPU 指派问题样例

上图中我描述了一组样例,在这组样例中 Task A 只能有 CPU XCPU Y 来处理,Task B 只能由 CPU XCPU Z 来处理,而 Task C 只能有 CPU Y 来处理。

问题抽象与二分图最大匹配

其实上面对于样例的描述我们已经可以画出一个有向图了。我们将 Task 和 CPU 都转换成图节点:

计算机指派问题图抽象

我们发现,这个图他可以分成左右两部分,并且左边这些节点相互之间没有相连的边,同样的右边节点也没有相连的边,所有的边都是左右两个部分之间的连接,对于这种特点的图,在图论中有一个专有的名词,二分图

而对于这个问题,我们需要求最多有多少个任务可以被处理,也就是说根据关系找到一种 Task 和 CPU 的配对方式,使得配对数量达到最大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值