グラフがあり、すべてのノード間の最短距離が必要です。今、私は次の関数を作りました、
shortestPath <- function(streets, length)
{
streets <- matrix(streets, byrow=TRUE, ncol=2) # from -> to
g <- graph.data.frame(as.data.frame(streets)) # create graph, see plot(g)
return <- shortest.paths(g, weights = length) # return routes lengths
}
これは、エッジstreets
があるデータを含むベクトルであり、length
(明らかに) エッジの長さです。
各エッジの長さが 2 の次のグラフがあります。グラフは無向でなければならないことに注意してください。
次のデータを使用して、問題を再現できます。
# Data
edges <- c(1,2, 2,3, 3,4, 4,5, 2,6, 3,7, 4,8, 6,8);
length <- rep(2,8);
aantalNodes <- 8;
# Determine shortest path
routes <- matrix(shortestPath(edges,length), byrow=FALSE, ncol=aantalNodes);
ノード 6 とノード 8 の間の最短パスの長さが 2 であることは明らかですが、この関数は長さ 4 を返します。私はすでに2日間それをいじっています。あなたの助けを楽しみにしています!