Algorithm 为什么我们要在Hopcroft-Karp算法中寻找最短的增广路径?

Algorithm 为什么我们要在Hopcroft-Karp算法中寻找最短的增广路径?,algorithm,graph,graph-theory,matching,Algorithm,Graph,Graph Theory,Matching,在最大二部匹配的Hopcroft-Karp算法中,为什么我们总是在广度优先搜索中寻找最短的增广路径?是否因为广度优先搜索总是找到最短路径?我只是不明白为什么最短的增广路径很重要。只找到一条增广路径已经是一个θ(| E |)时间操作了。Hopcroft–Karp(实际上,如果你稍微眯着眼睛看一看的话,大多数增强路径算法)背后的想法是对每次θ(| E |)时间迭代做更多的工作 为什么是最短增广路径?H–K同时查找多条增广路径,这些路径必须是顶点不相交的,才能同时使用。顶点不相交产生了一个打包问题,贪

在最大二部匹配的Hopcroft-Karp算法中,为什么我们总是在广度优先搜索中寻找最短的增广路径?是否因为广度优先搜索总是找到最短路径?我只是不明白为什么最短的增广路径很重要。

只找到一条增广路径已经是一个θ(| E |)时间操作了。Hopcroft–Karp(实际上,如果你稍微眯着眼睛看一看的话,大多数增强路径算法)背后的想法是对每次θ(| E |)时间迭代做更多的工作

为什么是最短增广路径?H–K同时查找多条增广路径,这些路径必须是顶点不相交的,才能同时使用。顶点不相交产生了一个打包问题,贪婪的解决方案是首先打包“最密集”(最佳值空间比)的东西,即最短的扩充路径。在实践中,贪婪算法通常工作得很好(例如,请参见集合覆盖分析,或随机图上的H–K)

然而,真正的答案是H–K可以证明比θ(| E | | V |)好。H–K的形式化分析使用最短扩充路径的长度来度量算法的进度,并且通过使用这些路径的最大集合,H–K增加了这个数量。当最短扩充路径达到长度时√|V |,不可能超过√|其中V |个(顶点不相交),因此该算法最多√|V |边,总迭代次数为O(√|V |),代表一个O(| E |√|V |)-步进运行时间