【问题标题】:How to find edges between nodes more efficiently?如何更有效地找到节点之间的边?
【发布时间】:2020-06-15 18:14:26
【问题描述】:

我有一个无向图 G=(V,E) 及其 DataFrame 格式的邻接矩阵 x 和一个节点列表 NODE V 的子集。我想找出所有的边 b/w 节点的NODE

我已经尝试了以下代码。就时间复杂度而言,还有其他有效的方法吗?请帮帮我。

    import networkx as nx
    import random

    G=nx.erdos_renyi_graph(100000,0.4)
    x =nx.to_pandas_adjacency(G)
    NODE=[]
    [NODE.append(random.randint(1,99999)) for i in range(1000)]
    edges=[]
    [edges.append((NODE[i],NODE[j])) for i in range(len(NODE)-1) for j in range(i+1,len(NODE)) if(x.loc[NODE[i],NODE[j]]==1)]


    print(edges)

【问题讨论】:

    标签: python networkx graph-theory network-analysis


    【解决方案1】:

    如果您希望它作为一个列表,那么一个相当有效(且易于解释)的代码是:

    edges = list(G.subgraph(NODE).edges())
    

    【讨论】:

    • subgraph() 方法的时间复杂度是多少?在时间复杂度方面更好吗? @乔尔
    • 不确定内部工作原理(但比您所做的要好得多)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 2015-04-04
    • 2019-01-26
    • 1970-01-01
    相关资源
    最近更新 更多