看算法看的头大,在这里记录一下,吐槽吐槽
主要概念
1,覆盖点
2,未覆盖点
3,增广路径
匈牙利算法的核心就是不停的寻找增广路径来扩充匹配集合M,什么是增广路经呢?(来自百度百科)
1-P的路径长度必定为奇数。
2-起点在左,终点在右。
3-路径中的点左右交替出现。
4-只有起点和终点是未覆盖点,其他点都配对。
5 -对增广路径编号,所有奇数的边都不在M中,偶数边在M中。
6 -对增广路径取反得到的匹配比原来匹配多一个。
算法的模板
bool 寻找从k出发的对应项出的可增广路
{
while (从邻接表中列举k能关联到顶点j)
{
if (j不在增广路上)
{
把j