Как уже упоминалось в комментариях, на графике нет "вверх" или "вниз".Вы можете создать ориентированный граф, используя класс DiGraph()
, где вы получаете ошибку «NetworkXNoPath: нет пути между 3 и 1.», когда вы пытаетесь найти путь против направлений ребер.В этом случае вы можете использовать try
для перехвата исключения:
import networkx as nx
from networkx import NetworkXNoPath
G = nx.DiGraph([(1, 2), (2, 3), (4,2)]) # create a directed graph
nx.shortest_path(G, source=1, target=3)
# [1, 2, 3]
try:
path = nx.shortest_path(G, source=3, target=1)
except NetworkXNoPath:
path = None
В качестве альтернативы вы можете проверить, имеют ли две вершины какой-либо путь вообще:
nx.has_path(G, source=3, target=1)
# False
if nx.has_path(G, source=3, target=1):
path = nx.shortest_path(G, source=3, target=1)
else:
path = None