用最大流解决二分图最大匹配 Bipartite Matching

article/2025/9/17 9:10:06

有A B C三个老师,D E F三门课,A能教E, B能教D和F,C能教D和E。要求每个老师只能教一门课,求分配方案。

这是一个典型的二分图最大匹配问题,二分图是只graph的顶点可以分为两部分,每部分内部顶点直接无连接,每一条边都跨越两部分。

解决方法,在图的左边增加一个顶点s,然后连接左边的所有顶点,在图的右边添加一个顶点t从右边所有顶点到t建立连接。这样就形成了一个流网络,每条边的容量都设为1。

 

求解最大流之后得到新的图。关于流网络和最大流的求法可以看我最大流的文章。

 s和t点去掉,把流量为0的边去掉,剩下的就是我们要求的结果。

 有编程基础的根据以上算法思想就可以写出代码,需要提高编程基础的可以找我。

 

 


http://chatgpt.dhexx.cn/article/PfRngHEi.shtml

相关文章

二分图最大匹配-匈牙利算法

今天介绍 匈牙利算法 : 匈牙利算法,是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,由匈牙利数学家Edmonds于1965年提出,因而得名。 先介绍一下增广路径&#x…

求解分配问题(二) 二分图最大匹配算法

我的前一篇文章介绍了对于分配问题的Kuhn-Munkre算法,该算法其实可以看作是邻接矩阵形式的匈牙利算法,如果更抽象地看这个算法,它可以看成是一个二分图匹配算法的变体算法,具体的说,是二分图最大权重匹配算法。我打算也…

二分图最大匹配(匈牙利算法,Dinic网络流算法)

二分图最大匹配 二分图最大匹配问题: 有两个集合A,B,两个集合间有多条边连接集合中的点,且单个集合中的点各不相连,求两集合的点能两两配对的最大匹配数. (参考:)二分图最大匹配——匈牙利算法 匈牙利算法: A集合记录各点与B集合相连的点,B集合记录某点与A集合中匹配的点.遍历…

二分图最大匹配与最大独立集

一.概念部分 1.什么是二分图? 通俗的说法:就是可以把图分成两部分,每一部分任意两点之间没有关系(同一部落),两部分之间点可能存在多种关系。 2.怎么判断二分图? (1)…

二分图最大匹配及最大权匹配

二分图最大匹配学习 一.二分图的基本知识二.二分图最大匹配什么是二分图最大匹配怎么求二分图最大匹配 三.二分图最大权匹配四.例题训练三.最小点覆盖数 一位大佬的神级解释 本以为有了网络流,就不用再学匈牙利了,但在做题的过程中,发现有些…

二分图最大匹配问题(匈牙利算法)

什么是二分图 如果一个无向图的的顶点可以分为两个互不相交的子集A和B,那么它就是二分图。也就是说,A、B内部不存在连边,所有连边都一头连着A中的顶点,另一头连着B中的顶点。 什么是二分图最大匹配? 二分图最大匹配…

二分图 二分图最大匹配

首先来说一下什么是二分图。 二分图 二分图又称作二部图,是图论中的一种特殊模型。 设G(V, E)是一个无向图。如果顶点集V可分割为两个互不相交的子集X和Y,并且图中每条边连接的两个顶点一个在X中,另一个在Y中,则称图G为二分图。…

二分图最大匹配(最大流)

先举个例子,有N台计算机和K个任务,每个计算机只能执行一个任务,但可以执行多种任务。现在给出N和K,和其关系,求出最多能处理的任务数。 这就是典型的二分图,整张图被分为两半,一半是电脑&#…

图论总结(一)二分图最大匹配

二分图最大匹配 (一)、二分图 1、定义2、性质3、判定(二)、二分图的匹配 1、二分图的最大匹配2、 Knig定理及其证明3、最小边覆盖与最大独立集(三)、增广路径 1、定义2、性质3、寻找增广路(四)、匈牙利算法 1、找增广路经的算法2、实践3、算法分析(五)、例题 1、最小…

二分图的最大匹配

一、概念: 二分图:简单来说,如果图中点可以被分为两组,并且使得所有边都跨越组的边界,则这就是一个二分图。准确地说:把一个图的顶点划分为两个不相交集 U 和V ,使得每一条边都分别连接U、V中的…

二分图最大匹配问题

最近在做的打车项目中,涉及到了用户叫单后,将所有出单司机和所有订单匹配的问题,借此来学习一下二分图的匹配算法。 一、无权二分图最大匹配 首先要区分一下各个概念: 匹配:图G的一个匹配是由一组没有公共端点的不是…

二分图最大匹配——匈牙利算法

二分图最大匹配 (一)、二分图的介绍1、定义2、充要条件 (二)、二分图的匹配1、二分图的最大匹配2、增广路径3、匈牙利算法(1)、复杂度(2)、算法思路(3)、代码…

B树最小高度和最大高度的推导

B树最小高度和最大高度的推导 对任意一棵包含n个关键字,高度为h,阶数为m的B树,其最小高度和最大高度的推导过程如下:

算法篇:树之树的高度

算法: 这一类题目很简单,不过却是树的最基本操作之一,引申为判断树是不是平衡二叉树。 一般做法是,计算二叉树的左右子树的高度1,然后取它们的最大值或者最小值。 题目1: https://leetcode-cn.com/problems/balanced-b…

【二叉树】最小高度树

0x00 题目 给定一个 有序 整数数组 元素各不相同且按 升序 排列 编写一个算法,创建一棵 高度最小 的二叉 搜索 树 给定有序数组: [-10,-3,0,5,9] 一个可能的答案是:[0,-3,9,-10,null,5] 它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 …

常见数据结构详细图解、树的高度、深度、层数、跳表、二叉搜索树、平衡二叉树、红黑树、B树、B+树

常见数据结构 常用的数据结构知识。 1.1 跳表 上图是一个有序链表,我们要检索一个数据就挨个遍历。如果想要再提升查询效率,可以变种为以下结构: 现在,我们要查询11,可以跳着来查询,从而加快查询速度。 …

树的高度 递归法和非递归法

递归法思路: 树的高度即节点子树的高度1(节点子树的高度即左子树高度,右子树高度的最大值) 代码如下: // Height_Recursive 递归法求树的高度 int Height_Recursive(TreeNode* pTree) {if (pTree NULL) {return 0;…

获取树高度的两种方法与完全二叉树的判断

树的高度 树的高度是节点高度的最大值。 每一层节点的高度如图所示。 方法一:递归 根节点的高度显然就是二叉树的高度。 /** * 获取树的高度* return*/ public int height(){return height2(root); }/*** 使用递归方法获取树的高度* param node* return*/ priv…

红黑树

一.简介 红黑树作为一种二叉搜索树的一种实现,红黑树的左右子树高度差可能大于 1。所以红黑树不是严格意义上的平衡二叉树(AVL),但红黑树是黑色节点完美平衡, 其平均统计性能要强于 AVL 。 红黑树是每个节点都带有颜…

B树最大高度推导

文章目录 B树最大高度推导推导B树的最小高度推导最大高度 B树:MySQL数据库索引是如何实现的?1. 遇到问题2. 尝试用学过的数据结构解决这个问题3. 改造二叉查找树4. 索引的弊端 B树最大高度推导 【声明几个重要概念】 B树的关键字就是要查找的东西 B树…