Мой фрагмент кода, как показано ниже:R igraph кратчайшее расстояние
df = as.data.frame(rbind(
c("a","b",2),
c("b","d",2),
c("d","g",2),
c("g","j",8),
c("j","i",2),
c("i","f",6),
c("f","c",2),
c("c","a",4),
c("c","e",4),
c("e","h",2),
c("h","j",4),
c("e","g",1),
c("e","i",3),
c("e","b",7)
))
names(df) = c("start_node","end_node","dist")
# Convert this to "igraph" class
gdf <- graph.data.frame(df, directed=FALSE)
# Compute the min distances from 'a' to all other vertices
dst_a <- shortest.paths(gdf,v='a',weights=E(gdf)$dist)
# Compute the min distances from 'a' to 'j'
dst_a[1, which(V(gdf)$name == 'j')]
В то время как он возвращает результат 12, мне нужно, чтобы получить самый короткий путь, который в этом случае должен быть - б - д - г - е - i - j. Я пытался использовать get.shortest.paths(), но напрасно.
Но, может быть, OP нужен только один путь? Во всяком случае, нет ничего плохого в 'get.shortest.paths()', AFAIK. –
@GaborCsardi не проблема! Но я думал, что OP заинтересована в одном конкретном пути, который AFAIK может не быть решением, возвращаемым 'get.shortest.path()' (?). Из-за этого я предложил 'get.all.shortest.paths()'. – ddiez