【发布时间】:2012-12-17 13:15:48
【问题描述】:
我正在尝试从大图中提取包含特定节点的所有连接节点的子图。
Networkx 库中有解决方案吗?
[编辑]
我的图是有向图
[编辑]
简单改写:
我想要包含我的特定节点 N_i 以及使用任何传入或传出边直接或间接连接(通过其他节点)的所有节点的图表部分。
示例:
>>> g = nx.DiGraph()
>>> g.add_path(['A','B','C',])
>>> g.add_path(['X','Y','Z',])
>>> g.edges()
[('A', 'B'), ('B', 'C'), ('Y', 'Z'), ('X', 'Y')]
我想要的结果是:
>>> g2 = getSubGraph(g, 'B')
>>> g2.nodes()
['A', 'B', 'C']
>>> g2.edges()
[('A', 'B'), ('B', 'C')]
【问题讨论】:
-
从您的问题中不清楚您想要什么子图。如果您想要一个包含节点 N_i 而没有孤立节点的子图,那么例如N_i 的邻居满足这一点。如果您想要包含 N_i 但没有孤立节点的最大子图,则从图中删除所有孤立节点将起作用(只要 N_i 不是 0 度)。该图不一定是连接的。如果您希望从 N_i 可以访问所有节点,请考虑 nx.shortest_path(G,N_i)...
-
不确定您是否正在检查此内容,但请检查我对您的标题所做的编辑。你所拥有的实际上并不是你最终提出的问题。