从具有dfs_树的无向图创建有向图,但保留属性

2024-04-27 04:36:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用一个特定的节点作为根,将一个无向图强制为一个有向图。我可以使用dfs_tree()来实现这一点:

G = nx.Graph([(0, 1, {"color": "red"}), (1, 2, {"color": "blue"}), (3, 2, {"color": "green"})])
DG = nx.dfs_tree(G, 0)

但问题是这些属性在过程中丢失了:

DG.edges(data=True)

OutEdgeDataView([(0, 1, {}), (1, 2, {}), (2, 3, {})])

在不丢失属性的情况下,是否有其他方法可以做到这一点?还是我必须手动将它们映射回


Tags: truetreedata属性节点过程greenblue
1条回答
网友
1楼 · 发布于 2024-04-27 04:36:16

如果有足够的可用内存,可以首先创建具有所有边的DiGraph,然后删除所有边,但dfs_edges。这将保留所有属性信息。或者,您可以迭代dfs_edges并检索边信息,将边和标签添加到有向图中

import networkx as nx

G = nx.Graph([(0, 1, {"color": "red"}), (1, 2, {"color": "blue"}), (3, 2, {"color": "green"})])
DG = nx.DiGraph(G)

DG.remove_edges_from(DG.edges - nx.dfs_edges(G, 0))

print(DG.edges(data=True))
# [(0, 1, {'color': 'red'}), (1, 2, {'color': 'blue'}), (2, 3, {'color': 'green'})]

相关问题 更多 >