NetworkX中执行DFS后保留DiGraph边size属性的方法咨询
解决DFS树保留边属性的方法
nx.dfs_tree()生成的树默认仅保留节点和拓扑关系,不会自动复制原图的边属性,所以需要手动同步原边的size属性,这里有两种简便方法:
方法一:遍历DFS树的边同步属性
先生成DFS树,再逐个从原图中取出对应边的size属性赋值:G_dfs = nx.dfs_tree(G, source='root') # 同步边的size属性 for u, v in G_dfs.edges(): G_dfs.edges[u, v]['size'] = G.edges[u, v]['size']方法二:基于DFS边直接构建带属性的树
用nx.dfs_edges()获取DFS路径的边,直接从原图提取边属性来构建新图,效率更高:# 获取DFS遍历的边列表 dfs_edge_list = list(nx.dfs_edges(G, source='root')) # 构建带属性的DFS树 G_dfs = nx.DiGraph() # 可选:保留原节点属性 G_dfs.add_nodes_from(G.nodes(data=True)) # 添加边及原属性 G_dfs.add_edges_from((u, v, G.edges[u, v]) for u, v in dfs_edge_list)
这样处理后,你就能在G_dfs中正常访问边的size属性了。
内容的提问来源于stack exchange,提问作者Shehryar Ahmed Subhani
相关产品推荐
相关产品推荐

