次のグラフがあります(対応するエッジ値は括弧内に書かれています):
L0 -> L1 ('01')
L1 -> L2 ('12')
L1 -> L4 ('14')
L4 -> L5 ('45')
L2 -> L3 ('23')
L3 -> L1 ('31')
から始まる特定の長さのすべての可能なパスのエッジ値のリストが必要ですL0
。したがって、length = 3
(開始ノードを除く) 場合、次の 2 つのリストを取得する必要があります。
['01', '12', '23'] and ['01', '14', '45'].
1 サイクルでの移動が可能です。グラフを表すために 2 レベルの辞書を使用してみました。
graph = {'L0': {'L1': '01'}, 'L1': {'L2': '12', 'L4': '14'}, 'L2': {'L3': '23'}, 'L3': {'L1': '31'}, 'L4': {'L5': '45'}}
def find_path(graph, start, depth):
k = 0
while k < depth:
a = graph[start]
for node in graph[start]:
start = node
path.append(a[node])
k+=1
return path
print find_path(graph, 'L0', 4)
明らかに、1 つの可能なパス出力が得られます。しかし、私はすべての可能なものを望んでいます。