给定邻接矩阵判断是否连通图
时间: 2023-07-16 13:13:31 浏览: 191
判断一个无向图是否连通,可以使用深度优先搜索(DFS)或广度优先搜索(BFS)来实现。具体步骤如下:
1. 选择一个起始节点,从该节点开始进行搜索。
2. 遍历与该节点相邻的所有节点,如果该节点未被访问过,标记为已访问并将其加入搜索队列。
3. 从队列中取出下一个节点,重复步骤2,直到队列为空。
4. 如果所有节点都被访问过,则该图是连通的,否则不连通。
实现过程中,可以使用一个数组记录每个节点的访问状态,初始值都为未访问。每次遍历到一个节点时,将其标记为已访问。如果遍历结束后仍有未访问的节点,则说明该图不连通。
下面是一个基于邻接矩阵的实现示例(假设节点编号从0开始):
```python
def is_connected(adj_matrix):
n = len(adj_matrix)
visited = [False] * n
queue = [0] # 从节点0开始搜索
visited[0] = True
while queue:
node = queue.pop(0)
for i in range(n):
if adj_matrix[node][i] == 1 and not visited[i]:
visited[i] = True
queue.append(i)
return all(visited)
```
其中,`adj_matrix`是邻接矩阵,`n`是节点数,`visited`是访问状态数组,`queue`是搜索队列。最后使用`all()`函数判断是否所有节点都被访问过。
阅读全文