在计算机科学中,Hopcroft-Karp算法是一种算法,它将二分图作为输入,并产生最大基数匹配一组尽可能多的边,其特性是没有两条边共享一个端点。该算法由John Hopcroft和Richard Karp(1973)发现。正如之前的匹配方法,如匈牙利算法和Edmonds(1965)的工作一样,Hopcroft-Karp算法通过寻找增广路径反复增加部分匹配的大小:在进入和离开之间交替的边缘序列。在某些部分匹配 中不是边缘端点的顶点称为自由顶点。算法所依赖的基本概念是增强路径,从自由顶点开始,在自由顶点结束的路径,以及在路径中不匹配和匹配的边之间交替的路径。根据该定义,除了端点之外,扩充路径中的所有其他顶点(如果有的话)必须是非自由顶点。增强路径可以仅由两个顶点(两个都是自由的)和它们之间的单个不匹配边缘组成。