【问题标题】:Iterating over maximum matchings迭代最大匹配
【发布时间】:2011-12-16 08:48:08
【问题描述】:

graph 中的matching 是一组成对的顶点不相交边,如果它覆盖了图中最大可能数量的顶点,则它是最大值。有用于查找此类匹配的有效算法以及实现(参见例如 Boost 以获取 C++ 中的示例)。

但是,任意图中可以有多个最大匹配;是否有任何算法实现可以让您列出所有算法?我更喜欢 C++ 实现,但其他语言也可以。

【问题讨论】:

  • 一个相当快的算法可以在这里找到:citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.108.4690 但是,我不知道它的任何实现......
  • 谢谢,但是如果我理解正确的话,作者对maximal匹配感兴趣,即不能扩展的匹配,而我对maximum感兴趣 匹配(这也是最大的,但反过来不是真的)。​​
  • @AnthonyLabarre 你有没有找到一些算法/实现来找到一些图中的所有最大匹配?
  • @bonanza:到目前为止还没有运气。
  • 现在我也在寻找一些实现。不过,我对二分图很感兴趣。你找到任何现有的代码了吗?

标签: c++ algorithm graph-theory matching


【解决方案1】:

“枚举二分图中所有完美、最大和最大匹配的算法” - http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.107.8179&rep=rep1&type=pdf

"计算弦和弦二分中的匹配数 图类" - http://www.jaist.ac.jp/~okamotoy/PDF/matchchordal.pdf

我希望这能对你有所帮助。

【讨论】:

  • 太糟糕了,图表是二分的,但我会看看谁引用了它们,谢谢!
【解决方案2】:

在 2001 年的这篇论文中,T. Uno(与上述 Piotr 给出的第一个参考文献中的作者相同)解决了在一般图中找到所有最大匹配的问题:

A Fast Algorithm for Enumerating Non-Bipartite Maximal Matchings

现在最大(基数)匹配通常是最大匹配的严格子集,但是一旦最大匹配的大小已知,最大匹配很容易过滤以消除除最大匹配之外的所有匹配.

但是,T. Uno 提出的这种“快速算法”的时间复杂度取决于最大匹配的数量。确实对于具有 |V| 的一般图 G(V,E)顶点和 |E|边,时间复杂度为O(|E|+|V|+Δ*N),其中Δ是顶点的最大度数,N是最大匹配数

当最大匹配与最大匹配的比率很高时,这不是理想的。然而,该算法适用于一般图,因此在仅搜索最大匹配时期望这种行为似乎是相当合理的。

【讨论】:

    猜你喜欢
    • 2021-09-15
    • 2011-12-28
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    相关资源
    最近更新 更多