Auxiliary script shortestpath.R
The auxiliary script shortestpath.R
below is loaded in the R code for chapter 17.
The chapter R code assumes that the script is placed in a subdirectory ‘R’ of the current working directory.
You can download the script here.
## shortestpath.R
## Code to find and display the shortest path between vertices on a network.
## For making illustrations only!
## Copyright (C) 2015 Adrian Baddeley, Ege Rubak and Rolf Turner
shortestpath <- function(L, i, j) {
L <- as.linnet(L, sparse=FALSE)
d <- L$dpath
m <- L$m
to <- L$to
from <- L$from
path <- i
leader <- i
repeat {
k <- setdiff(which(m[leader,]), path)
leader <- k[which.min(d[i,k] + d[k, j])]
path <- c(path, leader)
if(leader == j) break
}
return(path)
}
joinpoints <- function(X, i, ...) {
co <- coords(X[i])
lines(co[,1], co[,2], ...)
}