【问题标题】:find augmenting path (maximal matching)查找增广路径(最大匹配)
【发布时间】:2020-10-08 21:58:37
【问题描述】:

我必须在 Python 中实现一个函数 find_augmenting_path (n, edges, matching) 如果没有增广路径则返回 None,或者以顶点列表的形式返回这样的路径。

edges 是边 ex:[(1,2), (2,3)...] 的列表 n 是顶点数 并且匹配是有效匹配(边缘列表)

我从昨天开始就一直在寻找如何做,但我找不到解决方案。

我已经编写了一个函数来确定是否存在增广路径。 我现在必须编写如何找到这条路径的代码。

如果有人有想法请告诉我。 我需要你的帮助

非常感谢

【问题讨论】:

    标签: python graph path matching


    【解决方案1】:

    您可以使用networkx 模块:

    import networkx as nx
    
    l = [(12,9), (1,2), (2,5), (4,7), (5,3), (4,9), (9,4), (1,2), (3,9), (8,5), (5,5), (1,9), (5,12)]
    
    G = nx.DiGraph(l)
    
    paths = nx.all_simple_paths(G, 1, 9)
    
    for path in map(nx.utils.pairwise, paths):
        print(list(path))
    

    输出:

    [(1, 2), (2, 5), (5, 3), (3, 9)]
    [(1, 2), (2, 5), (5, 12), (12, 9)]
    [(1, 9)]
    

    该程序使用networkx 查找从1 开始并以9 结束的所有可能路径,并且这些数字是可变的。

    【讨论】:

      猜你喜欢
      • 2014-10-20
      • 1970-01-01
      • 2017-02-23
      • 2015-12-14
      • 1970-01-01
      • 1970-01-01
      • 2017-01-21
      • 2012-10-31
      • 1970-01-01
      相关资源
      最近更新 更多