Python数据结构,利用广度优先搜索编程实现确定无向图的连通分量。
3条回答 默认 最新
- 流比 2022-12-25 15:57关注
class Graph: def __init__(self, num_vertices): self.num_vertices = num_vertices self.adj_list = [[] for _ in range(num_vertices)] def add_edge(self, u, v): self.adj_list[u].append(v) self.adj_list[v].append(u) def bfs(graph, start, component_num, component): queue = [start] component[start] = component_num while queue: vertex = queue.pop(0) for neighbor in graph.adj_list[vertex]: if component[neighbor] is None: queue.append(neighbor) component[neighbor] = component_num def get_connected_components(graph): component_num = 0 component = [None] * graph.num_vertices for vertex in range(graph.num_vertices): if component[vertex] is None: bfs(graph, vertex, component_num, component) component_num += 1 return component # 创建图 g = Graph(5) g.add_edge(0, 1) g.add_edge(0, 2) g.add_edge(1, 2) g.add_edge(2, 3) # 获取连通分量 components = get_connected_components(g) print(components) # 输出:[0, 0, 0, 1, 2]
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 如何推断此服务器配置
- ¥15 开发一个类似百度网盘的软件,在主页列表点击进入文件夹,在文件夹里面还有文件夹,要建多个列表页面吗?
- ¥15 关于github的项目怎么在pycharm上面运行
- ¥15 内存地址视频流转RTMP
- ¥100 有偿,谁有移远的EC200S固件和最新的Qflsh工具。
- ¥15 找一个QT页面+目标识别(行人检测)的开源项目
- ¥15 有没有整苹果智能分拣线上图像数据
- ¥20 有没有人会这个东西的
- ¥15 cfx考虑调整“enforce system memory limit”参数的设置
- ¥30 航迹分离,航迹增强,误差分析