连接到子图网络的节点或节点集 x

Nodes or set of nodes connected to a subgraph networkx

我有 2 个图表 ABBA的强连通子图。 我想在 A 中找到具有到 B 中任何节点的路径的节点。 我如何在 Networkx 中执行此操作?

注意:我已经尝试过使用弱连接组件,但没有用。

如果B是强连通的,那么如果你选择B中的任意一个节点u,那么如果A中的某个节点x有一个B 中某个节点 b 的路径,则存在从 xu 的路径(存在从 bu 的路径因为 B 是强连接的,然后 xbu 路径存在)。因此,具有 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/(我写的)用于使用定向渗透估计流行病的概率。