Как вернуть напрямую зависимые узлы на графе - PullRequest
1 голос
/ 02 мая 2019

Я хочу получить напрямую зависимые узлы данного узла, если это возможно.

Например, в следующем примере nx.ancestors(G, 5) возвращает {0, 1, 2, 3, 4}, эти узлы итеративно зависят от узла 5.Но я хочу получить {3, 4}, где эти узлы напрямую связаны с узлом 5.

Также, nx.descendants(G, 0) возвращает {1, 2, 3, 4, 5}, где я хочу получить {1, 2}, которые напрямую связаны сузел 0.

import networkx as nx
import matplotlib.pyplot as plt

g = nx.Graph()
G = nx.DiGraph()

# add 5 nodes, labeled 0-4:
map(G.add_node, range(5))
# 1,2 depend on 0:
G.add_edge(0,1)
G.add_edge(0,2)
# 3 depends on 1,2
G.add_edge(1,3)
G.add_edge(2,3)
# 4 depends on 1
G.add_edge(1,4)
# 5 depends on 3 and 4
G.add_edge(3,5)
G.add_edge(4,5)

print(nx.ancestors(G, 5))
print(nx.descendants(G, 0))

Вывод:

{0, 1, 2, 3, 4}
{1, 2, 3, 4, 5}

1 Ответ

1 голос
/ 02 мая 2019

Вы можете использовать predecessors и successors:

set(G.predecessors(5))

Выход:

{3, 4}

И

set(G.successors(0))

Выход:

{1, 2}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...