我有2个图 A 和 B 。 B 是 A 的强连通子图。 我想在 A 中找到一个节点,该节点具有到 B 中任何节点的路径。 Networkx?
注意::我已经尝试使用弱连接的组件,但是没有用。
答案 0 :(得分:0)
如果B
已牢固连接,则如果您选择u
中的任何节点B
,则x
中的某个节点A
的路径b
中的某个节点B
,则存在从x
到u
的路径(存在从b
到u
的路径,因为{ {1}}已牢固连接,然后存在B
至x
至b
的路径)。因此,在u
中具有到任何节点的路径与在B
中具有一个特定节点的路径是一样的。假设B
是具有X
路径的节点集。这是您想要的集合。
如果您执行u
,则X = nx.ancestors(A, u)
是具有到X
路径的节点集。如果需要子图本身,则执行u
,但是如果只需要节点集,则为G = A.subgraph(X)
。
注意-网络上的流行病软件包the algorithm(我写过)实际上是https://epidemicsonnetworks.readthedocs.io/en/latest/使用的方法,用于通过定向渗透来估计流行的可能性。