我是R和IGraph的新手。
我想从节点到另一个节点获得所有边缘的最小权重(也可以是边缘的标签)。但我的实际目标是为每个节点执行相同的操作,这将为我提供从每个节点到每个节点的每条路径中的所有最小权重。 已编辑(图表是循环的) 我的图表是循环的,无向的。
我的目标示例:
边
NODE1> NODE2
NODE2> NODE3
NODE2>节点4
NODE3>节点4
边缘重量
EDGE1 - 2
EDGE2 - 1
EDGE3 - 0.5
EDGE4 - 0.2
我想
从NODE1到NODE3的结果为1
从NODE1到NODE4(一条路径)0.5
有可能吗?
答案 0 :(得分:1)
get.shortest.paths(..., output="epath")
将为您提供在结果项的$epath
组件中找到的每条最短路径中涉及的边的索引。然后,您可以使用min(E(g)$weight[some.path$epath])
获取路径中的最小权重(其中some.path
是get.shortest.paths
返回的路径之一)。
更新:好的,如果你的图形不是非循环的,任何两个顶点之间可以有多条路径,据我所知igraph没有枚举所有简单路径的功能(即没有顶点重复的路径。下一个主要版本(igraph 0.8)将有一个名为get.all.simple.paths
的函数,它可能会执行你需要的功能,但它还没有发布,所以你必须自己从开发树编译它,如果你想试一试。此外,API可能还不稳定。