无向图的邻接矩阵遍历
时间: 2023-07-25 07:08:41 浏览: 93
无向图邻接矩阵的遍历
无向图的邻接矩阵遍历通常使用深度优先搜索(DFS)或广度优先搜索(BFS)算法。
DFS算法:
1. 从起点开始遍历,将其标记为已访问。
2. 遍历该节点的所有邻居节点,如果邻居节点未被访问,则递归访问该邻居节点。
3. 当所有邻居节点均被访问后,返回上一级节点,继续遍历其它未访问的邻居节点。
4. 重复2-3步骤,直到所有节点均被访问。
以下是DFS算法的示例代码:
```python
def dfs(v, visited, adj_matrix):
visited[v] = True
print(v, end=" ")
for i in range(len(adj_matrix)):
if adj_matrix[v][i] == 1 and not visited[i]:
dfs(i, visited, adj_matrix)
def dfs_traversal(adj_matrix):
visited = [False] * len(adj_matrix)
for i in range(len(adj_matrix)):
if not visited[i]:
dfs(i, visited, adj_matrix)
```
BFS算法:
1. 从起点开始遍历,将其加入队列中并标记为已访问。
2. 取出队列中的首节点,遍历其所有邻居节点,将未访问的邻居节点加入队列中并标记为已访问。
3. 重复2步骤,直到队列为空。
以下是BFS算法的示例代码:
```python
from queue import Queue
def bfs_traversal(adj_matrix):
visited = [False] * len(adj_matrix)
q = Queue()
q.put(0)
visited[0] = True
while not q.empty():
v = q.get()
print(v, end=" ")
for i in range(len(adj_matrix)):
if adj_matrix[v][i] == 1 and not visited[i]:
q.put(i)
visited[i] = True
```
以上两种算法都可以完成无向图的邻接矩阵遍历,其中DFS算法常用于路径搜索,BFS算法常用于最短路径搜索。
阅读全文