用python实现DFS 深度优先搜索

深度优先搜索(Depth-First Search,DFS)是一种常见的图遍历算法,用于遍历或搜索树或图的所有节点,常用于求解连通性问题、拓扑排序、生成树等。

DFS 算法的基本思路是从某个节点开始,先遍历它的一个相邻节点,再遍历这个相邻节点的一个相邻节点,以此类推,直到所有节点都被访问到为止。在实现中,可以使用栈或递归来实现深度优先搜索。

以下是一个使用递归实现的 DFS 算法,它接受一个邻接表表示的图和一个起始节点 start,并输出从起始节点可以到达的所有节点:

def dfs(graph, start, visited=None):
    if visited is None:
        visited = set()
    visited.add(start)
    print(start)
    for neighbor in graph[start]:
        if neighbor not in visited:
            dfs(graph, neighbor, visited)

在这个实现中,graph 是一个字典,键是节点,值是一个列表,表示与该节点相邻的节点。visited 是一个集合,用于记录已经访问过的节点。首先将起始节点 start 加入 visited 中,并输出该节点。然后遍历 start 的相邻节点,如果一个相邻节点没有被访问过,则递归调用 dfs 函数遍历这个相邻节点。

以下是一个使用邻接表表示的无向图和调用 DFS 算法的例子:

graph = {
    'A': ['B', 'C'],
    'B': ['A', 'D', 'E'],
    'C': ['A', 'F'],
    'D': ['B'],
    'E': ['B', 'F'],
    'F': ['C', 'E']
}

dfs(graph, 'A')

这个例子会从节点 A 开始,输出可以到达的所有节点:

A
B
D
E
F
C

你可能感兴趣的:(Python,深度优先,算法)