У меня есть ориентированный, мультивзвешенный граф. Я хочу найти циклы, где a -> b -> c -> a
Образец моего графика. Надеюсь понятно:
v1 -> v2
v2 -> v3
v3 -> v1
v1 -> v4
v2 -> v5
Как перебирать только узлы, которые являются целевыми? это мой шор
results = []
for n in g.nodes: # iterates all nodes
x = n #marks the first node
for n1 in n.neighbors: #iterates neighbors, but this part should include only neighbors that are targets.
y = n1 # marks second node
for n2 in n.neighbors: #same as above, should select only target neighbors.
if n2 == x:
print "FOUND"
Я считаю, что решение должно быть принято с использованием грамматики Gython, отрывка из учебника Jython:
v1 -> v2 (or v2 <- v1): selects the directed edge from node v1 to node v2.
Мой конечный результат должен быть:
results = [[v1,v2,v3]]