Я пытаюсь разбить ориентированный (ациклический) граф на путь, связанный с направлением, опираясь на связность :
Когда я тестирую слабые и сильные подграфы связности, вот что я получаю:
Weak connectivity :
['16', '17'], ['3', '41', '39', '42']
Strong connectivity :
['17'], ['16'], ['39'], ['41'], ['3'], ['42']
Я понимаю результат слабой связности, но не результат сильной связности, как я ожидаю, 3 подграфа: [16, 17], [42, 39] и [3, 41, 39].
Что мне здесь не хватает, почему эти списки из одного узла? Как получить ожидаемый результат?
Вот код:
import networkx as nx
import matplotlib.pyplot as plt
G = nx.DiGraph()
G.add_edges_from([('16', '17'), ('3', '41'), ('41', '39'), ('42', '39')])
print("Weak connectivity : ")
for subgraph in (G.subgraph(c).copy() for c in nx.weakly_connected_components(G)) :
print(subgraph.nodes)
print("Strong connectivity : ")
for subgraph in (G.subgraph(c).copy() for c in nx.strongly_connected_components(G)) :
print(subgraph.nodes)
nx.draw_networkx(G, pos=nx.circular_layout(G))
plt.show()