用python语言编写邻接表深度优先搜索的函数并在主函数中验证算法的正确性
时间: 2024-02-05 08:10:56 浏览: 72
好的,那我先来介绍一下邻接表和深度优先搜索。
邻接表是一种存储图的数据结构,它通过一个数组和一个链表数组来表示图。数组中的每个元素表示一个顶点,链表数组中的每个元素表示与该顶点相邻的顶点。邻接表的存储方式相对于邻接矩阵来说更加节省空间,尤其是当图的边数比较少时。
深度优先搜索是一种图遍历算法,它从某个顶点开始,访问它的第一个邻接点,然后再以这个邻接点作为起点继续搜索,直到没有未访问过的邻接点,然后回溯到前一个顶点,继续访问它的下一个邻接点,直到所有顶点都被访问过为止。
接下来我会提供一个用 Python 语言编写的邻接表深度优先搜索函数,并在主函数中验证算法的正确性。
```python
from collections import defaultdict
# 定义一个邻接表深度优先搜索函数
def dfs(graph, start, visited):
visited.add(start)
print(start, end=' ')
for next_node in graph[start]:
if next_node not in visited:
dfs(graph, next_node, visited)
# 主函数
if __name__ == '__main__':
# 定义一个有向图的邻接表
graph = defaultdict(list)
graph[0] = [1, 2]
graph[1] = [2]
graph[2] = [0, 3]
graph[3] = [3]
# 定义一个空集合用于存储已经访问过的顶点
visited = set()
# 从顶点2开始进行深度优先搜索
dfs(graph, 2, visited)
```
上面的代码定义了一个有向图的邻接表,然后从顶点2开始进行深度优先搜索。输出结果为:2 0 1 3,这是符合预期的。
阅读全文