新闻资讯
新闻资讯

趣写算法系列之--匈牙利算法 - 博客频道

[状态算法的书频繁地讲得很复杂,我的情人和我规用相当简略的样本来扮演算法P

匈牙利算法是由匈牙利数学家Edmonds于1965年瞄准,因此得名。匈牙利算法是本Hall定理中详尽的性证实的思惟,这是最公共的的图婚配算法,该算法的核是找到增广途径,它是一种用增广途径求二分图最大婚配的算法。

-------等一下,看吗?因而请看下面的版本:

越过几代人的尝试,你总归赶上潮流的人左剩女,推测你是每一值当荣誉的新世纪介绍人,在你的在手里寂静N个天哪,男剩女,人人都可能性有更详细的被起皱惊讶不思索特别的性环境判定),也许每一天哪和每一成年女子互相彼此的情爱,你可以放被拖,如今让咱们疏忽懂得丹翔思(忧伤的感触健康的快哭了),你有可能性是下面的图,每聚会的代表协同青睐。。

为了援救每一性命的生命力,比树立每一七层浮屠规律,你要尽量性多的两口子,匈牙利算法的任务典范会教你因此做:

===============================================================================

找1个男孩女演员,在候选人提拔会和1个女演员他是孤独的发觉,got it,哪怕在蓝线


===============================================================================

后来地2个成年女子,在候选人提拔会和2个女演员他是孤独的发觉,got it


===============================================================================

接下来是3个男孩,三灾八难的是,1个女演员了。,怎么办呢?

咱们要在1个女演员,男孩(即1个男孩)也分派了每一成年女子。

(黄说这块儿是权取代)

与1的男孩和2的女演员二女演员,但有每一女演员2,太,咱们能做什么呢?咱们试着给2个女演员候选人提拔会次发火发火找到每一女演员理睬这一步和下面的摇动是同样地的。,这是每一复回快速地流动)

在这个时候,2号男生可以找到3个女演员,因此的成绩屯积,如何遵守或轻易处理。,回溯回去

2个男孩3个女演员能找到                  1个男孩2个女演员能找到。                3个男孩能找到1个女演员

因而最初的出狱第三步:


===============================================================================

接下来是4个男孩,不幸地,战场第三步,咱们不克不及给4个孩子取出每一同类型的,咱们不克不及举动。……别致士同窗去。

===============================================================================

这执意匈牙利算法的垂,女演员找每一复回快速地流动,关键词是”字

规律可能性是:有机遇,无机遇产量机遇

【code】

bool 找到(int x){
	int i,j;
	for (j=1;j<=m;j++){    //扫描每个妹子
		if (line[x][j]==true && used[j]==false)      
		//也许有暧昧并且还无标记过(这里标记的意思是这次查找曾试图改变过该妹子的归属成绩,但是无成功,因而就不用瞎费工夫了)
		{
			used[j]=1;
			if (girl[j]==0 || find(girl[j])) { 
				//名花无主或者能腾出个位置来,这里使用复回
				girl[j]=x;
				return true;
			}
		}
	}
	return false;
}

咱们的主程序:咱们扮演了每一步相当于1234越过的一步

for (i=1;i<=n;i++)
{
	memset(used,0,sizeof(used));    //这个在每一步中清空
	if find(i) all+=1;
}

上一篇:伦敦桥的建设历程 下一篇:没有了