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

R语言igraph包获取多OD对最短路径并生成分步路径表的方法

问题解决说明

你之前直接向all_simple_paths传入多组起点、终点参数,函数会返回所有起点到所有终点的全组合路径,而非逐行对应的OD对路径,不符合需求。你需要逐行匹配OD对计算最短路径,再拆分路径段、匹配对应km值即可实现目标结果。

完整可运行代码

library(igraph)
# 构造网络
network <- graph_from_literal(1--2,2--3,3--4,4--5,3--6,6--7,3--8,8--9)
# 构造OD数据
od_data <- data.frame(Origin=c(1,8,9,2), Destination=c(4,5,6,9), km=c(22,32,43,52))

# 逐行计算每个OD对的最短路径,同时处理为目标格式
result <- do.call(rbind, lapply(1:nrow(od_data), function(i){
  # 取当前行OD和对应km值
  o <- as.character(od_data$Origin[i])
  d <- as.character(od_data$Destination[i])
  km_val <- od_data$km[i]
  # 计算当前OD对的最短路径顶点序列
  path <- as.numeric(shortest_paths(network, from = o, to = d, output = "vpath")$vpath[[1]])
  # 拆分路径为O-D段,末尾D补-
  data.frame(
    O = path,
    D = c(path[-1], "-"),
    Km = km_val
  )
}))

# 查看结果
print(result, row.names = FALSE)

输出结果

O D Km
 1 2 22
 2 3 22
 3 4 22
 4 - 22
 8 3 32
 3 4 32
 4 5 32
 5 - 32
 9 8 43
 8 3 43
 3 6 43
 6 - 43
 2 3 52
 3 8 52
 8 9 52
 9 - 52

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 10:15:05