Чтобы идентифицировать их, Я наткнулся на термин «самоцикл». Это то, что мне нужно, только для путей длиннее одного ребра.
Код: Выделить всё
import networkx as nx
g = nx.DiGraph()
g.add_edges_from([(0, 1), (0, 2), (0, 3), (1, 3), (3, 0), (3, 3), (2, 0), (1, 2), (2, 1)])
nx.draw_networkx(g, arrows=True, with_labels=True, width=0.2, edge_color='#AAAAAA', arrowsize=20,
node_size=2)

Код: Выделить всё
networkxВ
Код: Выделить всё
list(nx.nodes_with_selfloops(g))
[3]
Есть ли эффективный способ определить, «какие узлы имеют двунаправленные стрелки, ведущие к одному и тому же узлу»? Я не выявил достаточно таких случаев, чтобы знать, всегда ли причиной будет одна двусторонняя стрелка или что-то вроде двух путей с несколькими ребрами, которые начинаются/останавливаются с одного и того же узла.
Реальные данные подобны потокам процессов, поэтому не должно быть случаев, когда A каким-то образом течет к B, а B также течет в A, поэтому я хочу быстро выявить именно эти несогласованности данных.
Подробнее здесь: https://stackoverflow.com/questions/790 ... cendant-of