在python-igraph中如何获取路径中各边的方向模式?
Python-igraph 有向图中最短路径边方向的简洁获取方法
首先构建示例有向图并获取最短路径:
import igraph as ig g = ig.Graph(directed=True) g.add_vertices(range(4)) g.add_edges([(0,1),(0,2),(1,3)]) # 获取所有最短路径 paths = g.get_all_shortest_paths(3, 2, mode='all')
要简洁地获取每条路径中边的方向模式('in'或'out'),可以用嵌套列表推导式实现,无需手动遍历:
# 生成方向模式列表 direction_patterns = [ ['out' if g.has_edge(v, u) else 'in' for u, v in zip(path, path[1:])] for path in paths ] print(direction_patterns) # 输出: [['out', 'out', 'in']]
逻辑说明
- 对每条路径,用
zip(path, path[1:])取出连续的顶点对(u, v),代表路径中从u到v的一步 - 判断图中是否存在
v → u的边:如果存在,说明路径中的这一步是逆着图中原有边的方向,标记为'out';如果不存在(即存在u → v的边),说明是顺着原有边的方向,标记为'in'
内容的提问来源于stack exchange,提问作者carltron4000
相关产品推荐
相关产品推荐

