递归遍历图中所有连接的节点

时间:2018-02-02 10:50:41

标签: python python-3.x recursion graph

我正在尝试编写一个函数,该函数在图形中查找连接到给定节点的所有节点,而不导入其他模块

目前,我的设置如下所示:

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}

有趣的是,经过一些搜索,我发现我的功能类似于深度优先搜索很多,但我无法弄清楚我的功能有什么问题。

谢谢!

0 个答案:

没有答案