利用带花树算法解决一般图的最大匹配

本文介绍了带花树算法在求解一般图最大匹配中的应用,并推荐了两个资源进行深入学习。资源包括动画演示和伪代码解析,以及详细的教学网站,覆盖了交错树、奇点偶点、cross edge、花和花托等关键概念。同时,提供了对缩花过程的代码注释,帮助理解算法实现。
摘要由CSDN通过智能技术生成

找了下带花树算法的相关资料,推荐下面两个:
1. https://www-m9.ma.tum.de/graph-algorithms/matchings-blossom-algorithm/index_en.html
对利用带花树算法求解最大匹配的动画演示和伪代码解析,个人认为非常有助于理解
2. http://www.csie.ntnu.edu.tw/~u91029/Matching.html#5
该网站不仅包含对带花树算法的详细介绍,也对其他一些匹配算法进行了讲解

关键概念:
(害怕网站2关闭…所以这里通过截图稍稍介绍一下基本概念)

  • 交错树(增广路径的概念不再做介绍):如为未匹配点r寻找匹配点,则以r作为树根,由增广路径延伸出来形成交错树
  • 奇点与偶点:见图中说明,r为偶点,距r为偶数距离的点为偶点,奇数距离的点为奇点
  • cross edge:偶点到偶点的边

这里写图片描述

  • 花和花托
    图中讲解比较详细,注意只有偶点到偶点形成的边构成的环才有这样一个性质,才能形成花,缩花之后奇点实际是以一个偶点的形式存在的。

这里写图片描述

  • 缩花

这里写图片描述

如下基于自身理解,对该网站中包含缩花方式的代码进行了更加详细的注释,虽然有些小细节依然有点模糊,这里放上代码,希望更有助于大家理解。

    const int V=50; //图的点数,编号为0到V-1
bool adj[50][50];   //邻接矩阵
int p[50];      //交错树,存储前一个节点
int m[50];      //记录各点所配对的点,值为-1为未匹配点
int d[50];   
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值