python实现对邻接矩阵构成的图进行深度优先遍历
时间: 2023-09-06 13:10:41 浏览: 108
深度优先遍历(Depth First Search,简称DFS)是一种用于遍历或搜索树或图的算法。在Python中,我们可以使用递归实现DFS。下面是一个基于邻接矩阵的DFS示例代码:
``` python
import numpy as np
# 定义节点数
n = 5
# 定义邻接矩阵
adj_matrix = np.zeros((n, n))
# 添加边
adj_matrix[0][1] = 1
adj_matrix[0][4] = 1
adj_matrix[1][0] = 1
adj_matrix[1][2] = 1
adj_matrix[1][3] = 1
adj_matrix[2][1] = 1
adj_matrix[2][3] = 1
adj_matrix[3][1] = 1
adj_matrix[3][2] = 1
adj_matrix[3][4] = 1
adj_matrix[4][0] = 1
adj_matrix[4][3] = 1
# 定义DFS函数
def DFS(vertex, visited, adj_matrix):
# 标记当前节点已访问
visited[vertex] = True
print(vertex, end=' ')
# 遍历该节点的所有邻居节点
for i in range(len(adj_matrix[vertex])):
if adj_matrix[vertex][i] == 1 and not visited[i]:
DFS(i, visited, adj_matrix)
# 初始化visited数组
visited = [False] * n
# 从节点0开始DFS遍历
DFS(0, visited, adj_matrix)
```
在上面的示例中,我们定义了一个5个节点的图,并且手动添加了一些边。我们定义了一个DFS函数,其中vertex表示当前遍历到的节点,visited表示已经访问过的节点,adj_matrix为邻接矩阵。在DFS函数中,首先标记当前节点已访问,然后遍历该节点的所有邻居节点,如果邻居节点未被访问过,则递归调用DFS函数。最后在主程序中,初始化visited数组为False,从节点0开始DFS遍历。
阅读全文