Как вывести все пути из вершины в вершину в графе на Python
Разобрался, как сделать, дополняю код, если кому-то нужно. Имеется модифицированный обход в ширину. Модифицирован он так, что ищет путь между двумя вершинами графа. Мне нужно сделать так, чтобы выводились все простые пути из вершины в вершину. По коду AdjList - список смежности. Код немного корявый, но только вкатываюсь в теорию графов. Пытался использовать рекурсию, но он выдает ошибку переполнения стека.
def AllWays(self, a, b):
q = []
q.append(a)
visited = {}
while len(q) != 0:
x = q.pop(0)
if x == b:
break
c = self.__AdjList[x].keys()
for y in c:
if y not in visited:
q.append(y)
visited[y] = x
return visited
def Maxversh222(graph):
print('Введите вершину начала обхода')
a = input()
print('Введите вершину конца обхода')
b = input()
visited = graph.AllWays(a,b)
x = b
while x != a:
x = visited[x]
print(f'<--- {x} ', end='')
def AllWays2(self, a, b, q, visited):
if a == b:
print(q)
return
for u in self.__AdjList[a]:
if u not in visited:
q.append(u)
visited.add(u)
self.AllWays2(u, b, q, visited)
q.pop()
visited.remove(u)
def Maxversh(graph):
print('Введите вершину начала обхода')
a = input()
print('Введите вершину конца обхода')
b = input()
q = []
visited = set()
graph.AllWays2(a, b, q, visited)