/****************************************************二分图匹配(匈牙利算法的DFS实现)INIT:g[][]两边定点划分的情况CALL:res=hungary();输出最大匹配数优点:适于稠密图,DFS找增广路快,实现简洁易于理解时间复杂度:O(...
分类:
其他好文 时间:
2015-01-29 14:05:41
阅读次数:
247
本文转自大牛博客:http://www.byvoid.com/blog/hungary/这是一种用增广路求二分图最大匹配的算法。它由匈牙利数学家Edmonds于1965年提出,因而得名。 定义 未盖点:设Vi是图G的一个顶点,假设Vi 不与随意一条属于匹配M的边相关联,就称Vi 是一个未盖点。交错路...
分类:
编程语言 时间:
2015-01-03 18:28:08
阅读次数:
201
本文转自大牛博客:http://www.byvoid.com/blog/hungary/这是一种用增广路求二分图最大匹配的算法。它由匈牙利数学家Edmonds于1965年提出,因而得名。 定义 未盖点:设Vi是图G的一个顶点,假设Vi 不与随意一条属于匹配M的边相关联,就称Vi 是一个未盖点。交错路...
分类:
编程语言 时间:
2014-12-25 12:54:49
阅读次数:
252
题目大意:现在要打一个BOSS,一个人有n个武器,一个武器有两个属性值,但是一个武器只能攻击一次。这个BOSS需要从1连续递增输出,问输出的最大值为多少。
思路:以前好像做过一个相似的问题,也是这么做的,哪个忘了。。
很明显的二分关系是攻击力和武器,因为一个攻击力需要攻击一次,一个武器只能攻击一次,然后武器和攻击力之间连边,从1开始匹配,什么时候不能匹配了就输出。
memset会T的...
分类:
其他好文 时间:
2014-11-27 14:41:05
阅读次数:
195
题目大意:给出一张地图,一个军队要征战整个土地。一块土地只能经过一次,有X的地方不能走,军队只会走R*C个格子,只会向下走,问最少需要多少军队能够征战所有的土地。
思路:这个是前几天考试的题,今天居然发现时BZ的原题,还好当时A掉了。。。
看到每个土地只能经过一次就想到了网络流什么的,再一想想好像是最小路径覆盖啊,然后拆点,建图,Hungary,二分图最小路径覆盖=点数-最大匹配,没了...
分类:
其他好文 时间:
2014-11-05 10:59:25
阅读次数:
172
二分图匹配:
分别按行和列把图展开,hungary二分图匹配。。。。
样例:
4 4
*ooo
o###
**#*
ooo*
按行展开。。。。
*ooo
o#oo
oo#o
ooo#
**#o
ooo*
ooo*
再按列展开。。。
7 * 8
*ooooooo
oooooooo
oooooooo
oooooooo
*o*ooooo
ooooooo*
ooooooo* 匹配结果3
...
分类:
其他好文 时间:
2014-11-03 13:08:03
阅读次数:
256
匈牙利算法,求二分图最大匹配。若P是图G中一条连通两个未匹配顶点的路径,并且属于M的边和不属于M的边(即已匹配和待匹配的边)在P上交替出现,则称P为相对于M的一条增广路径。(M为一个匹配)由增广路的定义可以推出下述三个结论:P的路径长度必定为奇数,第一条边和最后一条边都不属于M。所以Line 25-...
分类:
其他好文 时间:
2014-11-02 13:45:21
阅读次数:
257
本题可以使用DFS直接爆搜出答案,不过这样类型的题目其实是个二分图的题解。
这个二分图,难不在Hungary算法,而是难在于建图。需要挺高的抽象思维的。
建图:
1 把同一行不被X分开的格子标同一个号码,被X分开的标下一个号码,这样做是为了缩点,不需要把所有的格子都分开标号,而且可以更方便建个更加小的图。
2 同理把同一列的格子标号
3 然后判断相同一个格子的行标号和列标号是有路径的,其...
分类:
Web程序 时间:
2014-08-22 23:53:19
阅读次数:
549
其实本设计模式可以实现一些像人工智能式的问答。
这个跟人回答问题差不多,根据不同的问题作出不同的回答,而且在不同的状态,也会作出不同的回答。
如果有大量的数据,那么就可以作出千变万化的问答效果来哦。
#include
enum STATE
{
HUNGARY, EAT, FULL
};
class State
{
STATE myState;
public:
State(STA...
分类:
其他好文 时间:
2014-08-02 18:27:43
阅读次数:
200
KM算法求的是完备匹配下的最大权匹配,是Hungary算法的进一步,因为Hungary算法是最大匹配的算法,不带权。
经典算法,想不出来的了,要参考别人的。然后消化吸收吧。因为真的很复杂的算法。
我理解算法匹配思想:
1 开始的时候,所有边都记录自己的最优匹配,不管有没有冲突
2 递归循环的时候,如果找不到自己的最优匹配,那么就找次要匹配
3 次要匹配不行,继续找下一个次优匹配,所有...
分类:
其他好文 时间:
2014-07-08 15:10:25
阅读次数:
153