以连接矩阵为储存单位,采用广度优先遍历算法遍历图,需要完整代码
时间: 2023-06-12 10:04:24 浏览: 83
以下是一个简单的使用广度优先遍历算法遍历图的代码示例,其中使用连接矩阵作为储存单位:
```python
from queue import Queue
def bfs(graph, start):
visited = [False] * len(graph)
q = Queue()
q.put(start)
visited[start] = True
while not q.empty():
node = q.get()
print(node)
for i in range(len(graph)):
if graph[node][i] == 1 and not visited[i]:
q.put(i)
visited[i] = True
# 示例连接矩阵
graph = [
[0, 1, 1, 0, 0],
[1, 0, 0, 1, 0],
[1, 0, 0, 1, 1],
[0, 1, 1, 0, 1],
[0, 0, 1, 1, 0]
]
bfs(graph, 0) # 从节点 0 开始遍历
```
运行结果为:
```
0
1
2
3
4
```
上述代码中,`bfs` 函数接收一个连接矩阵 `graph` 和起点 `start`,使用 `visited` 数组记录每个节点是否已经被访问过,使用 `Queue` 存储待访问的节点。在遍历过程中,将起点加入队列并标记为已访问,然后进入循环,每次从队列中取出一个节点并输出,然后遍历该节点的所有邻居节点,如果邻居节点没有被访问过,则加入队列并标记为已访问。当队列为空时,遍历结束。
阅读全文