Как вывести все пути из вершины в вершину в графе на 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)

Ответы (0 шт):