如何在R中找到最短路径

时间:2015-12-27 19:48:48

标签: r

问题: 我有一个数据框,其中包含一组带有Lat和Long信息的点。我们需要从A开始并遍历每个其他节点一次并在任何点结束。目标是尽量减少行进的总体距离。

df <- data.frame("name" = c("A", "B", "C", "D", "E"), 
"lon" = c(-73.001, 23.231, 1.23, 115.40, -87.98), 
"lat" = c(40.21, 32.78, -34.30, 21.92, -12.2))

如果点数很大,则生成所有排列将不起作用。我曾尝试使用iGraph包,但无法理解如何解决这个问题。使用distm(gepsphere),我可以获得所有距离矩阵,但我不知道如何继续。

请帮我弄清楚如何做到这一点。我正在寻找R的解决方案。

1 个答案:

答案 0 :(得分:3)

正如@ 42已经指出的那样,这似乎是一个旅行推销员问题。所以你可以试试

library(TSP)
library(geosphere)
d <- distm(as.matrix(df[, -1]))
tour <- solve_TSP(TSP(d, labels=df$name), 
                  method="nearest_insertion", 
                  control=list(start=1L))
labels(tour)
# [1] "A" "D" "B" "C" "E"