【问题标题】:How can I find all possibly paths in undirected graph using python?如何使用 python 在无向图中找到所有可能的路径?
【发布时间】:2017-11-21 17:43:52
【问题描述】:

我们以我们有这样一个 numpy 矩阵为例:

[[ 0  3  5 0]
 [ 3  0  2 9]
 [ 5  2  0 7]
 [ 0  9  7 0]]

我想找到从 0 到 3 的所有可能路径。我希望解决方案是中性的。我总是从 0 到矩阵的最新索引。在这种情况下 3. 也许已经有一个现成的算法或者有人可以展示自己的解决方案?提前致谢。

【问题讨论】:

    标签: python python-3.x numpy matrix graph


    【解决方案1】:

    您可以使用networkx。它是python图论的一个包。

    import networkx as nx
    import numpy as np
    A=np.matrix([[ 0,  3,  5, 0],
                 [ 3,  0,  2, 9],
                 [ 5,  2,  0, 7],
                 [ 0,  9,  7, 0]])
    G=nx.from_numpy_matrix(A)
    
    print(nx.shortest_path(G,source=0,target=3)) # shortest path
    # Result
    # [0, 1, 3]
    
    print(list(nx.all_simple_paths(G,source=0,target=3))) # all simple paths
    # Result
    # [[0, 1, 2, 3], [0, 1, 3], [0, 2, 1, 3], [0, 2, 3]]
    

    【讨论】:

    • 但也有路径 0,2,3 或 0,2,1,3 或 0,1,2,3 对吗?
    • 对不起,在我看来只有最短的路径。我更新了答案。
    • 是的,我用过for path in nx.all_simple_paths(G,source=0,target=14): print(path)
    • 您知道如何仅使用一条路径达到最大可能价值的目标吗?
    • 图表是一些马尔可夫决策过程的表示?或者你从哪里得到概率?
    猜你喜欢
    • 1970-01-01
    • 2023-03-03
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 2017-05-06
    • 1970-01-01
    相关资源
    最近更新 更多