Узлы или набор узлов, подключенных к подграфу networkx - PullRequest
0 голосов
/ 25 ноября 2018

У меня есть 2 графика A и B . B является сильно связным подграфом A . Я хочу найти узлы в A , которые имеют путь к любому из узлов в B . Как мне это сделать в Networkx?

Примечание: Я уже пробовал использовать слабосвязанные компоненты, но это не сработало.

1 Ответ

0 голосов
/ 25 ноября 2018

Если 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/ (который я написал) для оценки вероятности эпидемии с использованием направленной фильтрации.

...