最大匹配的算法(匈牙利算法) matlab程序
1、文档下载:
本算法已经整理成文档如下,有需要的朋友可以点击进行下载
序号 | 文档(点击下载) |
---|---|
本项目文档 | 【老生谈算法】匹配算法MATLAB.docx |
2、算法详解:
求二部图G的最大匹配的算法(匈牙利算法), 其基本思想是:从G的任意匹配M开始,
对X中所有M的非饱和点, 寻找M-增广路. 若不存在M-增广路, 则M为最大匹配; 若存
在M-增广路P, 则将P中M与非M的边互换得到比M多一边的匹配M1 , 再对M1 重复上述过程.
设G= (X,Y,E)为二部图, 其中X= {x1,x2, ⋯ ,xn},Y= {y1,y2, ⋯ ,yn}. 任取G的一初
始匹配M(如任取e∈E, 则M= {e}是一个匹配).
① 令S=f,T=f, 转向②.
② 若M饱和X\S的所有点, 则M是二部图G的最大匹配. 否则, 任取M的非饱和点
u∈X\S, 令S=S∪{u}, 转向③.
③ 记N(S) = {v| u∈S,uv∈E}. 若N(S) =T, 转向②. 否则取y∈N(S) \T. 若y是M