You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从有向图最短路径提取边属性?解决无法抵达终点问题

解决igraph提取有向图最短路径边属性的问题

看起来你遇到的核心问题是调用shortest_paths时用错了图对象,导致无法找到目标路径!我们一步步来解决:

首先看你的代码细节:你创建的图对象是g,但第二次调用shortest_paths时写的是g1(警告信息里明确显示shortest_paths(g1, 1, 4,...))——这应该是笔误,换成正确的图对象g就能得到你预期的结果。

修正后的完整代码

library(igraph)
gdf <- data.frame(from = c(1,2,3,5), to = c(2,3,4,3), id = c("A","B","C","D"))
g <- graph_from_data_frame(gdf, directed = TRUE)

# 注意这里用的是图对象g,不是g1
idx <- shortest_paths(g, 1, 4, output = "epath")$epath[[1]]
igraph::edge_attr(g, "id", idx)

运行这段代码会返回你想要的结果:

[1] "A" "B" "C"

额外排查技巧

如果以后再遇到类似的"无法到达顶点"警告,可以用以下方法排查:

  • 验证顶点可达性:用reachable_vertices检查起点能到达的所有顶点,确认终点在其中:
    reachable_vertices(g, 1)$reachable
    # 输出:[1] 1 2 3 4,说明顶点4确实可达
    
  • 检查图的边方向:水文网络是有向图,确保边的from和to符合水流方向(比如上游到下游),避免因方向搞反导致路径不通。

内容的提问来源于stack exchange,提问作者jhollist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:58:42