1

我发现以下问题(Find distance of route from get.shortest.paths())非常有帮助,但想更进一步。我在数据框中添加了一列,我想获得与最小 newcost 路径相关的“总距离”。

在我使用的 igraph / R 代码下方。

df2 = rbind(c(234,235,21.6,75),
c(234,326,11.0,35),
c(235,241,14.5,78),
c(326,241,8.2,98),
c(241,245,15.3,75),
c(234,245,38.46,65))

df2 = as.data.frame(df2)
names(df2) = c("start_id","end_id","newcost","distance")

df2

require(igraph)
g2 <- graph.data.frame(df2, directed=FALSE)

tkplot(g2)

(tmp2 = get.shortest.paths(g2, from='234', to='245',weights=E(g2)$newcost))

# This gives the shortest path based on $newcost
V(g2)[tmp2[[1]]]

我想回答的问题是与这条最短路径相关的距离是多少。最短路径的答案是 34.5,并且(手动计算)与该路径相关的距离是 208。

欣赏一些有关如何自动获得此距离的提示。

谢谢!约赫姆

# What is the distance related to the min newcost?
4

1 回答 1

1

This gives you the edges along your optimal path:

optimal.path <- V(g2)[tmp2[[1]]] 
E(g2, path = optimal.path)
# Edge sequence:
#               
# [1] 326 -- 234
# [3] 241 -- 326
# [4] 245 -- 241

(note that they do not appear in the order along your optimal path, but as they appear in the definition of your graph g2.)

and this gives you the total distance:

sum(E(g2, path = optimal.path)$distance)
# [1] 208
于 2012-05-25T01:30:47.540 回答