R,确定最短路径

我有一个图形,需要所有节点之间的最短距离。 现在我做了以下功能,

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.发生了什么问题? 我已经修补了两天。 期待您的帮助!


你可能想看看shortestPath的rownames和colnames shortestPath(edges,length) 。 这真的很透露...

res <- shortestPath(edges,length)
res[order(as.integer(rownames(res))),
    order(as.integer(colnames(res)))]
链接地址: http://www.djcxy.com/p/35229.html

上一篇: R, determine shortest path

下一篇: Kth Shortest Path