У меня есть простая структура данных, показывающая узлы в ориентированном графе:
{
'node1': [('V1', 'R1')],
'node2': [('R1', 'R2'), ('R1', 'R3')],
'node3': [('R2', 'R4'), ('R2', 'R5'), ('R3', 'R4'), ('R3', 'R5')],
'node4': [('R4', 'Z1')],
'node5': [('R5', 'Z1')]
}
Я хотел бы получить все возможные (направленные) пути от V1 до Z. Например, путь может быть:
[
('V1', 'R1'),
('R1', 'R2'),
('R2', 'R4'),
('R4', 'Z1')
]
Тем не менее, у меня возникли проблемы с тем, что кажется базовым алгоритмом, который, как мне кажется, включает рекурсию.
for node, connections in nodes.items():
for connection in connections:
Я начал с чего-то вроде вышеизложенного, но я думаю, что это неправильный подход. Каким будет предложенный способ сделать это, не используя что-то вроде itertools
?