Если B
сильно связан, то если вы выберете какой-либо узел u
в B
, то если какой-то узел x
в A
имеет путь к какому-то узлу 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
.
Примечание. Это эффективный алгоритм * 1031.* используется в пакете «Эпидемии в сетях» https://epidemicsonnetworks.readthedocs.io/en/latest/ (который я написал) для оценки вероятности эпидемии с использованием направленной фильтрации.