如何用Python统计连通分量的节点数
时间: 2024-04-29 18:05:02 浏览: 53
要统计一个连通分量的节点数,可以使用深度优先搜索(DFS)算法。具体步骤如下:
1. 构建图的邻接表表示。
2. 定义一个visited列表,用于记录每个节点是否已经被访问过。
3. 定义一个count变量,用于记录当前连通分量的节点数。
4. 对于每个未被访问过的节点,进行一次DFS遍历,同时将访问到的节点的visited值设为True,并将count加1。
5. 遍历完当前的连通分量后,将count的值记录下来,并清零,继续寻找下一个未被访问的节点。
6. 遍历完所有的节点后,记录下所有连通分量的节点数。
以下是一段Python代码实现上述算法:
```python
def count_nodes(adj_list):
visited = [False] * len(adj_list) # 初始化visited列表
counts = [] # 用于记录每个连通分量的节点数
for i in range(len(adj_list)):
if not visited[i]: # 如果节点未被访问
count = 0 # 初始化当前连通分量的节点数
stack = [i] # 初始化DFS栈
visited[i] = True # 将当前节点的visited值设置为True
while stack:
node = stack.pop()
count += 1
for neighbor in adj_list[node]:
if not visited[neighbor]:
stack.append(neighbor)
visited[neighbor] = True
counts.append(count) # 记录当前连通分量的节点数
return counts
```
其中,adj_list是图的邻接表表示,counts是返回的每个连通分量的节点数列表。
阅读全文