Hungarian Algorithm(匈牙利算法) 由 Harold Kuhn 在1955年提出, 算法的命名是因为该算法很大程度上是基于两位匈牙利数学家的工作而来的.
匈牙利算法主要用于解决一些与二分图匹配有关的问题。二分图(Bipartite graph)是一类特殊的图,它可以被划分为两个部分,每个部分内的点互不相连。下图是典型的二分图。
可以看到,在上面的二分图中,每条边的端点都分别处于点集X和Y中。匈牙利算法主要用来解决两个问题:求二分图的最大匹配数和最小点覆盖数。
最大匹配问题
其数学表述:在二分图中最多能找到多少条没有公共端点的边
最小点覆盖问题
另外一个关于二分图的问题是求最小点覆盖:我们想找到最少的一些点,使二分图所有的边都至少有一个端点在这些点之中。倒过来说就是,删除包含这些点的边,可以删掉所有边。