非循环图 - 顶点之间每条路径的最小权重

时间:2014-11-25 12:17:10

标签: r igraph

我是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.2从NODE1到NODE4(另一条路径)

有可能吗?

1 个答案:

答案 0 :(得分:1)

get.shortest.paths(..., output="epath")将为您提供在结果项的$epath组件中找到的每条最短路径中涉及的边的索引。然后,您可以使用min(E(g)$weight[some.path$epath])获取路径中的最小权重(其中some.pathget.shortest.paths返回的路径之一)。

更新:好的,如果你的图形不是非循环的,任何两个顶点之间可以有多条路径,据我所知igraph没有枚举所有简单路径的功能(即没有顶点重复的路径。下一个主要版本(igraph 0.8)将有一个名为get.all.simple.paths的函数,它可能会执行你需要的功能,但它还没有发布,所以你必须自己从开发树编译它,如果你想试一试。此外,API可能还不稳定。