我正在尝试编写一个函数,该函数在图形中查找连接到给定节点的所有节点,而不导入其他模块。
目前,我的设置如下所示:
class Node:
self.name, self.routes, self.neighbours
class Edge:
self.nodes, self.distance
我有一个递归函数:
def search_graph(start):
def aux(start, visited):
if start in visited:
return visited
visited.add(start)
if set(start.neighbours) < visited:
return visited
for node in set(start.neighbours) -visited:
return visited | aux(node, visited)
return aux(start, set())
我尝试了一些图表,事实证明,当函数到达图表的某个端点时,它不会追溯到最后一个节点。例如:
图形:
东京 - 上海 - 墨尔本 - 新加坡
使用search_graph(Shanghai)
我只能获得{Shanghai, Melbourne, Singapore}
。
有趣的是,经过一些搜索,我发现我的功能类似于深度优先搜索很多,但我无法弄清楚我的功能有什么问题。
谢谢!