二分图
h_lizeming
这个作者很懒,什么都没留下…
展开
-
匈牙利算法的理解
匈牙利算法注重在于增广路的查找。图的两个点可以分为两个集合A,B。A B集合之间的关系就是图的边。现在让图的边数值最大。对每一个点找增广路(就是看每一边能不能扩展原本的路径n+1),在查找第i个点的增广路时候,如果B集合K的点已经被别人选择了,则尝试让B的点能否在不损失原本路径的长度上让位置给当前节点,那么需要回溯K的父亲节点,看他有没有其他增广路径长度为n并且可以让第i个点的增广路符合。注重腾空...原创 2018-05-22 18:57:04 · 358 阅读 · 0 评论 -
匈牙利算法加邻接表
因为匈牙利算法存储边为二维数组,本人怕其空间超限,所#include <cstdio> #include <cstring> #include <cstdlib> using namespace std; int v[1000],u[1000],fir[1000],next[1000],f[1000],used[1000]; int n,m,bian; int ...原创 2018-05-22 19:56:08 · 384 阅读 · 0 评论 -
KM算法
写完这一章,大概二分图的匹配问题也该完结了吧。 其实我自己现在对KM算法也是刚刚理解,有理解不到位之处还请大家指出。 KM算法:求在一个二分图的完备匹配中的最大权值匹配的算法。(下文简称为最佳完备匹配) 似乎跟匈牙利算法有点相似, 所以我们要引入一个基于匈牙利算法的一种算法,叫做KM算法。 步骤如下: 首先用邻接矩阵存储二分图,注意:如果只想求最大权值匹配而不要求是完备匹配的话,请把各个不相连的边...原创 2018-05-23 13:56:44 · 1690 阅读 · 0 评论