python - 如何更有效地找到节点之间的边?
问题描述
我有一个无向图 G=(V,E) 及其x
DataFrame 格式的邻接矩阵和一个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)
解决方案
如果您希望它作为一个列表,那么一个相当有效(且易于解释)的代码是:
edges = list(G.subgraph(NODE).edges())
推荐阅读
- mysql - MariaDB MAX 排序失败
- java - 回收查看背景颜色不工作
- node.js - Cannot destructure property 'name' of 'node' as it is null
- containerd - 带有 containerd 的 Kubernetes:http:服务器向 HTTPS 客户端提供了 HTTP 响应
- .htaccess - .htaccess mod_rewrite 以匹配语言子域
- postgresql - PostgreSQL 9.3 慢查询
- google-apps-script - 如何使用 Google appscript 将 Doc/Word 文件附加为附件?
- flutter - flutter 如何在 SliverAppBar 中显示 `floating: true` 与 Widget 高度大小一样多?(在自定义滚动视图中)
- webpack - 我从 webpack 4 迁移到 webpack 5,但我的块比以前大
- mapping - 不能使用 Mapstruct ADDER_PREFERRED 来清除带有 @MappingTarget 的目标列表