【问题标题】:Acyclic graph - Smallest weight of each path between vertices无环图 - 顶点之间每条路径的最小权重
【发布时间】:2015-01-23 10:42:11
【问题描述】:

我是 R 和 IGraph 的新手。

我想获得从一个节点到另一个节点的所有边的最小权重(也可以是边的标签)。但我的实际目标是对每个节点执行相同的操作,这将为我提供从每个节点到每个其他节点的每条路径中的所有最小权重。 已编辑(图是循环的) 我的图是循环且无向的。

我的目标示例:

边缘

节点 1 > 节点 2

节点2>节点3

节点 2 > 节点 4

节点 3 > 节点 4

边的权重

EDGE1 - 2

EDGE2 - 1

EDGE3 - 0.5

EDGE4 - 0.2

我想得到

1 作为从 NODE1 到 NODE3 的结果

0.5 从 NODE1 到 NODE4(一条路径)

0.2 从 NODE1 到 NODE4(另一条路径)

有可能吗?

【问题讨论】:

    标签: r igraph


    【解决方案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 可能还不稳定。

    【讨论】:

    • 我已经稍微编辑了这个问题。在前一种情况下,它没有显示权重为 0.2 的边缘
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 2018-07-16
    相关资源
    最近更新 更多