在定向 python-igraph 中,我可以找到两个顶点之间的路径,如下所示:
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')
paths
[[3, 1, 0, 2]]
有没有一种简单的方法可以获取沿路径的边缘的模式(进或出)?
我尝试查看诱导子图,并使用“输入”和“输出”模式而不是“全部”。我可以手动遍历树,但我正在寻找更紧凑和Pythonic的东西。
理想情况下,有一个方法可以针对上述场景返回以下内容:
[['out','out','in']]
最佳答案
像这样的事情应该可以解决问题:
def consecutive_pairs(items):
return zip(items, items[1:])
def classify_edges_in_path(path, graph):
return [
"in" if graph.get_eid(u, v, error=False) >= 0 else "out"
for u, v in consecutive_pairs(path)
]
这里的技巧是,如果 u-v 边不存在,graph.get_eid(u, v, error=False)
将返回 -1。既然路径本身存在,那么你就可以知道它一定是路径中的 v-u 边。
consecutive_pairs()
仅用于可读性;如果需要,您可以内联它。
关于python - 在python-igraph中,查找两个顶点之间的边的数量和众数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74366295/