图的深度优先遍历(Depth First Search,DFS)是一种用于遍历或搜索图的算法。其核心思想是从图的某个顶点开始,沿着一条路径尽可能深地搜索,直到无法继续为止,然后回溯到上一个顶点,继续搜索其他路径。深度优先遍历的要点如下:
1.选择一个起始顶点作为当前顶点,并将其标记为已访问。
2.访问当前顶点,并将其加入遍历结果。
3.从当前顶点出发,选择一个未访问的相邻顶点作为下一个当前顶点,重复步骤2。
4.如果当前顶点没有未访问的相邻顶点,则回溯到上一个顶点,重复步骤3。
5.重复步骤3和步骤4,直到所有顶点都被访问。
下面是使用Python实现图的深度优先遍历算法的示例代码:
# 定义图的类
class Graph:
def __init__(self, vertices):
self.V = vertices # 图的顶点数
self.adj = [[] for _ in range(vertices)] # 邻接表表示图的连接关系
# 添加边
def add_edge(self, u, v):
self.adj[u].append(v)
# 递归实现深度优先遍历
def dfs_util(self, v, visited, result):
visited[v] = True # 标记当前顶点为已访问
result.append(v) # 将当前顶点加入遍历结果
# 递归访问当前顶点的所有未访问相邻顶点
for i in self.adj[v]:
if not visited[i]:
self.dfs_util(i, visited, result)
# 深度优先遍历
def dfs(self, start):
visited = [False] * self.V # 记录顶点的访问状态
result = [] # 存储遍历结果
self.dfs_util(start, visited, result)
return result
# 测试代码
g = Graph(8)
g.add_edge(0, 1)
g.add_edge(0, 2)
g.add_edge(1, 3)
g.add_edge(1, 4)
g.add_edge(2, 5)
g.add_edge(2, 6)
g.add_edge(3, 7)
g.add_edge(4, 7)
g.add_edge(5, 7)
g.add_edge(6, 7)
start_vertex = 0
dfs_result = g.dfs(start_vertex)
print("深度优先遍历结果:", dfs_result)