Python中使用深度优先搜索(DFS)遍历图(Graph)
下面是一个使用Python实现DFS遍历图的简单示例代码:
graph = { 'pidancode.com': ['google.com', 'facebook.com'], 'google.com': ['pidancode.com', 'microsoft.com'], 'facebook.com': ['pidancode.com', 'microsoft.com'], 'microsoft.com': ['google.com', 'facebook.com', 'apple.com'], 'apple.com': ['microsoft.com'] } visited = set() def dfs(node): if node not in visited: print(node) visited.add(node) for neighbor in graph[node]: dfs(neighbor) dfs('pidancode.com')
这段代码定义了一个简单的图,其中每个节点都代表一个网站,将每个网站和一些相邻网站连接起来,从而构成图。在遍历该图时,使用了深度优先搜索算法(DFS)。深度优先搜索的基本思想是:从起点开始,尽可能深地访问每个节点,直到无法访问为止,然后回溯到上一个节点,继续访问其他未访问的节点,直到所有节点都被访问过为止。
在上述代码中,dfs()
函数定义了一个递归算法,用于遍历整个图。在每次调用时,该函数首先检查当前节点是否已经访问过(即是否在visited
集合中),如果没有,则输出该节点,并将其添加到visited
集合中。然后,该函数遍历与该节点相邻的节点,并递归调用dfs()
函数来访问这些节点。这个递归过程重复进行,直到所有节点都被访问为止。
最后,我们调用dfs()
函数,并将起点节点(即'pidancode.com'
)作为参数传递给它。这将启动整个遍历过程,并输出每个节点的名称,直到所有节点都被访问。
相关文章