У меня есть график дорожной сети, который можно представить упрощенно, как показано на рисунке ниже. Большинство узлов имеют двух соседей, но некоторые из них имеют три, что означает «пересечения» или «перекрестки». Они представлены красным цветом на рисунке.Поиск последовательных ребер, связывающих определенные узлы в графе
Я хочу найти каждую последовательность последовательных ребер, напрямую связанных между двумя красными узлами («прямо» я имею в виду, не проходя через промежуточный красный узел).
В настоящее время я могу найти красные узлы, как это:
crossroad_nodes = [node for node in graph.nodes() if len(graph.edges(node)) > 2]
Но я не знаю, как собрать последовательность networkx
команд, чтобы сделать то, что я хочу.
Желаемый результат будет что-то вроде
print segments
> [[1,2,3,4,5,6],[3,5,6,2,4,7],[9,8,7,6,3,2],...] # list of lists of nodes or node indices.
Также обратите внимание, что с ошибкой произойдет ошибка, если график не подключен. Если это так, вам нужно будет проверить, подключены ли два узла, используя функцию 'has_path'. –
Хотя я не уверен в этой конкретной реализации для моего случая (что я вообще не сказал полностью), вы правы, «shortest_path» - это метод, который я искал, и [path] (https: // en. wikipedia.org/wiki/Path_(graph_theory)) была терминологией, которой я еще не был. – heltonbiker