【问题标题】:Why do we look for the shortest augmenting path in the Hopcroft-Karp algorithm?为什么我们要在 Hopcroft-Karp 算法中寻找最短增广路径?
【发布时间】:2013-05-09 11:32:57
【问题描述】:

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

【问题讨论】:

    标签: algorithm graph graph-theory matching


    【解决方案1】:

    只找到一个增广路径已经是一个 Theta(|E|) 时间的操作。 Hopcroft-Karp 背后的想法(大多数增广路径算法,真的,如果有人眯起眼睛的话)是在每次 Theta(|E|) 时间迭代中做更多的事情。

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

    不过,真正的答案是 H–K 可证明比 Theta(|E| |V|) 更好。 H-K 的形式分析使用最短增广路径的长度来衡量算法的进度,并且通过使用这些路径的最大集合,H-K 增加了这个数量。当最短增广路径达到长度 √|V| 时,不可能打包超过 √|V|其中(顶点不相交),所以该算法至多有√|V|边走边,迭代总数为 O(√|V|),运行时间为 O(|E| √|V|)。

    【讨论】:

      猜你喜欢
      • 2018-11-19
      • 2016-07-30
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      • 2014-10-16
      • 1970-01-01
      • 2021-07-05
      • 2012-10-24
      相关资源
      最近更新 更多