그래프가 있고 모든 노드 사이의 최단 거리가 필요합니다. 이제 I는 다음 함수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를 반환합니다. 나는 이미 이틀 동안 그것에 대해 고민 중이다. 앞으로 당신을 도울 것입니다!
제 생각에 문제는 함수의 본문에 따라'streets'라는 이름의 인수가 있고 그 인수의 이름을'edges'라고해야한다고 생각합니다. 앞으로는 최상의 결과를 추측하는 대신 실제로 질문에 답할 수 있도록 예제를 재현 할 수 있도록하십시오. – flodel
나는 실제로 내 질문에 오타가 있음을 알았다. 1 시간 안에 재생산 할 수있는 데이터를 제공 할 것입니다. – Michiel
그래도 문제가 있습니까? 그렇다면 '거리'와 '길이'입력을 제공하여 재현성을 높여보십시오. 또한 'length'도 함수의 이름이기 때문에 변수에 대한 이름 선택이 매우 나쁜 점에주의하십시오. – flodel