为什么我们在Hopcroft-Karp算法中寻找最短的扩充路径?

时间:2013-05-15 02:33:27

标签: algorithm graph graph-theory matching

在用于最大二分匹配的Hopcroft-Karp算法中,为什么我们总是在广度优先搜索中寻找最短的增广路径?是因为广度优先搜索始终找到最短路径?我只是觉得为什么增强路径最短是很重要的。

1 个答案:

答案 0 :(得分:2)

找到一个扩充路径已经是Theta(| E |)-time操作。 Hopcroft-Karp背后的想法(大多数增强路径算法,实际上,如果有人眯起一点)是每次Theta(| E |) - 时间迭代做更多的事情。

为什么最短的增强路径? H-K一次寻找几个增强路径,它必须是顶点不相交的,以便同时有用。顶点不相交产生了一个打包问题,贪婪解决方案首先将“最密集”(最佳值与空间比)的东西打包,即最短的扩充路径。在实践中,贪心算法通常运行良好(例如,参见集合覆盖的分析,或随机图上的H-K)。

但真正的答案是,H-K比Theta(| E | | V |)更好。 H-K的形式分析使用最短增强路径的长度来测量算法的进度,并且通过使用这些路径的最大集合,H-K增加该量。当最短的增强路径达到长度√| V |时,不可能打包超过√| V |它们(顶点不相交),因此该算法最多具有√| V |对于O(| E |√| V |) - 步进运行时间,迭代总数为O(√| V |)。