【问题标题】:python networkx: How to get a random path?python networkx:如何获得随机路径?
【发布时间】:2018-12-22 12:54:21
【问题描述】:

networkx里面有这样的功能

nx.all_simple_paths(G,source=0,target=5)

它返回所有路径,但如果有很多可能的路径,它会工作很长时间。

如何立即获得任何路径?

【问题讨论】:

    标签: python networkx


    【解决方案1】:

    它不会产生all 路径,它会返回一个生成器,该生成器可能会被耗尽以获得all 路径。区别并不挑剔:这正是我们可以回答您的问题的方式。从documentationall_simple_paths 已经使用深度优先搜索(这就是你想要的)。然后我们可以执行以下操作,

    path = next(nx.all_simple_paths(G, source=0, target=5))

    如果不存在路径,这将引发StopIteration。另请参阅here 了解更多详情。

    【讨论】:

    • 这个解决方案是随机的吗?
    【解决方案2】:

    例如:

    import networkx as nx
    import random
    
    G = nx.complete_graph(4)
    paths = list(nx.all_simple_paths(G, source=0, target=3))
    print paths
    # [[0, 1, 2, 3], [0, 1, 3], [0, 2, 1, 3], [0, 2, 3], [0, 3]]
    
    # get a random idx
    idx = random.randint(0, len(paths))
    print paths[idx]
    # [0, 3] may be
    
    # print all  path it
    for path in paths:
        print path
    

    【讨论】:

    • 这不能回答问题,您的解决方案包括首先调用 nx.all_simple_paths 这正是 OP 想要避免的
    猜你喜欢
    • 2019-07-12
    • 2020-04-08
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    相关资源
    最近更新 更多