Chinaunix首页 | 论坛 | 博客
  • 博客访问: 126974
  • 博文数量: 124
  • 博客积分: 3940
  • 博客等级: 中校
  • 技术积分: 1235
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-05 18:57
文章分类

全部博文(124)

文章存档

2011年(52)

2010年(62)

2009年(10)

最近访客

分类:

2010-09-01 22:52:05

到学校了,网络今天下午才好。在家的时候就看了匹配的算法。匹配这块最常用的应该是两个算法,一个是无权二分图的最大匹配。另一个则是带权图的最大(最小)匹配的KM算法。这篇先说前者...
参考文章:
稍微解释一下,这个算法的核心就是寻找增广路。举个例子说,我们把当前已经匹配的边赋值1,其他的边赋值0,那么增广路就是0101...10这样的一条路,0的个数比1要多一个。如果0->1,1->0,那么匹配数就会增加1,于是当找不到增广路的时候,当前就是最大匹配。
至于实现,以前上离散数学的时候就学过这个算法。当时感觉好难实现。看了代码之后才发现挺简单的(比什么后缀数组什么的简单多了...)。关键就是一个核心的递归。即0也是一条增广路,或者01....省略号也代表一条增广路。那么就找到了一条增广路。把编码改成10....即可。
练习的话可以参考hdu分类的assignment problem:
阅读(964) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-09-04 14:31:08

Download More than 1000 free IT eBooks: http://free-ebooks.appspot.com