基于无向多重图的电网路径分析:生成含边重数全路径方法咨询
生成带重数边的所有完整路径组合
你需要的是将每段相邻节点的可选边列表,生成所有可能的完整路径组合——这本质是求多个列表的笛卡尔积,也就是从每个子列表中选一个元素,生成所有可能的组合方式。Python的itertools.product工具正好能高效解决这个问题。
实现代码
先把各段可选边整理成二维列表,再用itertools.product生成所有组合:
import itertools import pprint # 定义各段相邻节点的可选边列表 edge_options = [ ['SCA-24 <-> SCA-69 (1)', 'SCA-24 <-> SCA-69 (2)'], ['SCO-69 <-> SCA-69 (1)'], ['SCO-69 <-> PAA-69 (1)'], ['PAA-69 <-> OCA-T4-69 (1)', 'PAA-69 <-> OCA-T4-69 (2)'], ['OCA-T4-69 <-> OCA-138 (1)'], ['OCA-138 <-> LVR-138 (1)'], ['LVR-138 <-> LAG-138 (1)', 'LVR-138 <-> LAG-138 (2)'] ] # 生成所有可能的路径组合(笛卡尔积) full_paths = list(itertools.product(*edge_options)) # 将元组转换为列表,匹配目标输出格式 full_paths = [list(path) for path in full_paths] # 格式化打印结果 pprint.pprint(full_paths)
代码说明
itertools.product(*edge_options):用*解包二维列表,product会遍历每个子列表的元素,生成所有可能的组合,每个组合对应一条完整路径。- 列表转换:product返回的是元组类型,通过列表推导式转成列表,和你给出的示例输出格式完全一致。
- 动态适配:如果你的边列表是从电网图中动态生成的(比如根据节点路径遍历相邻边的重数),只需把每段的可选边收集到
edge_options中,就能直接复用这段代码。
运行代码后,输出结果就是你需要的完整路径集合。
内容的提问来源于stack exchange,提问作者Ruan Carlo Weiers Britzke
相关产品推荐
相关产品推荐

