для этого графа:
import igraph
G = ig.Graph()
#ring
G.add_vertices(4)
G.add_edges([(0,1), (1,2),(2,3),(3,0)])
G = G.as_directed()
print G.is_directed()
print G
Если я применить функцию из выше https://stackoverflow.com/a/29324009/2772305
как
for p in find_all_paths(G,0,0):
print p
я получаю только
[0]
, в то время как должен быть второй путь [0,1,2,3,0]
imho
Как найти все пути, если на графике есть такие кольца?
в NetworkX, можно получить желаемый результат с all_simple_paths:
import networkx as nx
G = nx.MultiDiGraph()
G.add_path(['a','b','c','d','a'])
G.add_path(['a','e','f','g'])
G.add_path(['a','a'])
for p in nx.all_simple_paths(G,'a','a'):
print p
Результат:
['a', 'a']
['a', 'b', 'c', 'd', 'a']
Как сказано в выше comments, функция all_simple_paths существует только в NetworkX, который не подходит для обработки огромных графиков из-за проблем с производительностью. Есть ли способ передать all_simple_paths из networkx в igraph?
Вам нужны все пути или количество всех путей? –
Все пути, но чтобы быть более точными (для моей конкретной реализации), я хотел бы получить все узлы, которые находятся на этих путях. Тем не менее, оба решения в порядке со мной. – user1894963