python - 在python-igraph中,查找两个顶点之间的边的数量和众数

标签 python igraph directed-graph

定向 python-igraph 中,我可以找到两个顶点之间的路径,如下所示:

g=ig.Graph(directed=True)
g.add_vertices(range(4))
g.add_edges([(0,1),(0,2),(1,3)])

The graph produced by the above code

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/

相关文章:

python - 删除非数字列表条目的最有效方法

python - 你能 "restart"Python 循环的当前迭代吗?

python - 移动设备的高效传输协议(protocol)

python - 从 Python 访问 igraph R 对象

c++ - 如何声明两个具有其他类型成员的结构?

python - 将字符串传递给 sub.re 在 Python 中不起作用

r - 在同一个图中绘制 igraph 包中的多个图

r - 基于节点权重构建图的优化算法

algorithm - 如何检查有向图是否是无环的?

sql - 计算 SQL 中有向图中不同的无向边