匈牙利算法是一种常用的图论匹配算法,其最早出现是在1955年由匈牙利数学家König和Egerváry发展而来。匈牙利算法通常用于最大匹配问题,该问题可以抽象成二分图中的最大匹配问题。
二分图是一种图形结构,图中的节点(node)被分为左、右两侧,每侧的节点只能与对侧节点连通,而不能与同侧的节点连通。最大匹配是指二分图中,所有顶点的一个匹配的大小最大,即选出的所有边数最多。
匈牙利算法的核心是通过增广路来增加匹配数。增广路是一条交替颜色路径,起点和终点都是未匹配点。如果存在增广路,就可以将它上面的点进行匹配,从而得到更多的匹配数。通过不断的查找增广路,可以得到最大匹配。在实际应用中,匈牙利算法被广泛应用于招聘、婚姻介绍等方面。