连接到子图网络的节点或节点集 x
Nodes or set of nodes connected to a subgraph networkx
我有 2 个图表 A 和 B。 B是A的强连通子图。 我想在 A 中找到具有到 B 中任何节点的路径的节点。 我如何在 Networkx 中执行此操作?
注意:我已经尝试过使用弱连接组件,但没有用。
如果B
是强连通的,那么如果你选择B
中的任意一个节点u
,那么如果A
中的某个节点x
有一个B
中某个节点 b
的路径,则存在从 x
到 u
的路径(存在从 b
到 u
的路径因为 B
是强连接的,然后 x
到 b
到 u
路径存在)。因此,具有 B
中任何节点的路径与 B
中具有特定节点的路径是一回事。设 X
为路径为 u
的节点集。这就是你想要的套餐。
如果您执行 X = nx.ancestors(A, u)
,则 X
是具有到 u
路径的节点集。如果你想要子图本身,那么做 G = A.subgraph(X)
,但如果你只想要节点集,那么它是 X
.
注意 - 这实际上是 the algorithm used in the Epidemics on Networks package https://epidemicsonnetworks.readthedocs.io/en/latest/(我写的)用于使用定向渗透估计流行病的概率。
我有 2 个图表 A 和 B。 B是A的强连通子图。 我想在 A 中找到具有到 B 中任何节点的路径的节点。 我如何在 Networkx 中执行此操作?
注意:我已经尝试过使用弱连接组件,但没有用。
如果B
是强连通的,那么如果你选择B
中的任意一个节点u
,那么如果A
中的某个节点x
有一个B
中某个节点 b
的路径,则存在从 x
到 u
的路径(存在从 b
到 u
的路径因为 B
是强连接的,然后 x
到 b
到 u
路径存在)。因此,具有 B
中任何节点的路径与 B
中具有特定节点的路径是一回事。设 X
为路径为 u
的节点集。这就是你想要的套餐。
如果您执行 X = nx.ancestors(A, u)
,则 X
是具有到 u
路径的节点集。如果你想要子图本身,那么做 G = A.subgraph(X)
,但如果你只想要节点集,那么它是 X
.
注意 - 这实际上是 the algorithm used in the Epidemics on Networks package https://epidemicsonnetworks.readthedocs.io/en/latest/(我写的)用于使用定向渗透估计流行病的概率。