У меня есть длинный список источников и целей, которые формируют график следующим образом:
id_a = [...] #source nodes
id_b = [...] #target nodes
distance = [..] #distance between source and target nodes
G = nx.Graph()
path, length = [], []
for a, b, c in zip(id_a, id_b, distance):
G.add_edge(a, b, weight=c)
cl - это подмножество всех узлов в графе, и я хочу извлечь пути, соединяющие все cl вместе, поэтому я использую all_simple_paths ()
path = []
for i in range(len(cl)):
for j in range(len(cl)):
if i != j:
path.append(nx.all_simple_paths(G, source=cl[i], target=cl[j]))
Я хочу иметь возможность перечислить все простые пути и их длины, поэтому я пытаюсь:
for i in range(len(path)):
total_length = 0
for j in range(len(path[i])-1):
source, target = path[i][j], path[i][j+1]
edge = G[source][target]
length = edge['weight']
total_length += length
length.append(total_length)
Но я продолжаю получать ошибку
object of type 'generator' has no len()
И я не могу понять, как преобразовать генератор all_simple_paths () в списки, по которым я могу перебирать и извлекать полную длину всех путей.
Любая помощь приветствуется!