创建无向图的邻接矩阵的深度广度c++
时间: 2024-01-03 08:05:05 浏览: 87
邻接矩阵是一种表示图的方式,其中每个节点都表示为矩阵中的一行和一列。如果两个节点之间有一条边,则在它们的矩阵元素中记录一个“1”或者边的权重。
假设我们有一个无向图,其中有n个节点和m条边。我们可以使用一个n x n的矩阵来表示这个图。
深度优先搜索(DFS)和广度优先搜索(BFS)是两种常用的图遍历算法。它们可以用来遍历这个邻接矩阵表示的图。
深度优先搜索算法:
1. 从任意一个节点开始,将其标记为已访问。
2. 遍历该节点的邻居节点。如果邻居节点没有被访问,则递归地调用DFS算法。
3. 递归访问所有未被访问的邻居节点。
代码实现:
``` python
def dfs(adj_matrix, start_node, visited):
visited[start_node] = True
print(start_node, end=' ')
for i in range(len(adj_matrix)):
if adj_matrix[start_node][i] == 1 and not visited[i]:
dfs(adj_matrix, i, visited)
```
广度优先搜索算法:
1. 从任意一个节点开始,将其加入队列。
2. 从队列中取出第一个节点,并将其标记为已访问。
3. 遍历该节点的邻居节点,将未被访问的邻居节点加入队列中。
4. 重复步骤2和3,直到队列为空。
代码实现:
``` python
from queue import Queue
def bfs(adj_matrix, start_node, visited):
q = Queue()
q.put(start_node)
visited[start_node] = True
while not q.empty():
node = q.get()
print(node, end=' ')
for i in range(len(adj_matrix)):
if adj_matrix[node][i] == 1 and not visited[i]:
q.put(i)
visited[i] = True
```
以上是无向图邻接矩阵深度优先搜索和广度优先搜索的实现。
阅读全文