1

グラフがあり、すべてのノード間の最短距離が必要です。今、私は次の関数を作りました、

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日間それをいじっています。あなたの助けを楽しみにしています!

4

1 に答える 1