匈牙利算法

来源:互联网 发布:faceyou拍照软件 编辑:程序博客网 时间:2024/05/20 17:10

匈牙利算法:基于Hall定理中充分性证明的思想,它是二部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法。

例子:N男N女的婚配问题。

http://blog.csdn.net/dark_scope/article/details/8880547

这就是匈牙利算法的流程,其中找妹子是个递归的过程,最最关键的字就是“腾”字
其原则大概是:有机会上,没机会创造机会也要上。

bool find(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;  }  
0 0
原创粉丝点击