【问题标题】:How can i remove all edges of a specific path(for example the shortest path between two nodes) in a graph?如何删除图中特定路径的所有边(例如两个节点之间的最短路径)?
【发布时间】:2021-03-26 15:20:09
【问题描述】:

我想删除网络图中的特定路径,但我不知道该怎么做... 例如,我将两个节点之间的最短路径作为节点列表(从源节点到目标节点) 例如,这是我在节点 A(源节点)和 D(目标节点)之间包含路径节点的最短路径:

['A','B','C','D']

有人知道如何从图中删除这条路径吗? 我尝试了很多方法来做到这一点,但他们没有工作...... 我已经使用 networkx 库定义了我的图表

【问题讨论】:

    标签: python-3.x list graph networkx shortest-path


    【解决方案1】:

    您可以从创建要删除的边列表开始,这里称为sp

    sp = []
    for i in range(0,len(shortestpath)-1):
        sp.append((shortestpath[i],shortestpath[i+1]))
    

    然后使用G.remove_edge删除它们:

    for u, v in sp:
        G.remove_edge(u, v)
    

    下面是完整的代码和一个小例子:

    G = nx.Graph([(0, 1), (0, 3), (1, 2), (2, 3), (3, 4)])
    shortestpath = (3, 0, 1)
    sp = []
    for i in range(0,len(shortestpath)-1):
        sp.append((shortestpath[i],shortestpath[i+1]))
    for u, v in sp:
        G.remove_edge(u, v)
    

    【讨论】:

    • 它帮助了我!非常感谢您的有用回答!
    • 如果您认为是正确答案,请标记为正确答案 (stackoverflow.com/help/someone-answers)
    • 我是新来的,所以我不知道如何很好地使用这个网站!...我接受了!再次感谢。
    • 没问题 ;) 如果您需要任何进一步的帮助.. 请询问 :))
    猜你喜欢
    • 2021-12-18
    • 2016-03-04
    • 2015-06-12
    • 1970-01-01
    • 2023-01-15
    • 2016-03-26
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多