я создал случайный (Эрдош-Рение) граф с р = 0,2 и 10 узлов в R с использованием пакета igraph так:Возвращаясь отдельными вершинами get.shortest.paths() в R
library(igraph)
graph <- erdos.renyi.game(10, 0.2, type = c("gnp", "gnm"), directed = FALSE,
loops = FALSE)
Я считаю, центральный узел и листовые узлы графа следующим образом:
centralNode <- which(degree(graph) %in% c(max(degree(graph))))
leafNodes <- which(degree(graph) %in% c(1))
я найти кратчайший путь от центрального узла к первому узлу листа так:
sp <- get.shortest.paths(graph, centralNode, leafNodes[1])
И может получить что-то вроде этого (если 1 является centralNode
и 4 является leafNodes[1]
:
[[1]]
[1] 1 2 9 4
Я хочу, чтобы иметь возможность получить доступ к каждому из вершин в кратчайшем пути от centralNode
к leafNodes[1]
.
Я пытался делать это так, но получаю эти ошибки:
sp$2
Error: unexpected numeric constant in "sp$2"
sp$[[1]][2]
Error: unexpected '[[' in "sp$[["
sp$1[2]
Error: unexpected numeric constant in "sp$1"
sp$[1][2]
Error: unexpected '[' in "sp$["
Я не знаю, как вернуть каждую вершину по отдельности, или просто выбрать один из них. Я надеюсь в этом есть смысл.
Любая помощь будет высоко оценена. Спасибо
Это нормально работает. Большое спасибо за вашу помощь :-) – LoneWolf
Есть ли способ вернуть все пути от одного узла к другому, а не только по кратчайшему пути? – LoneWolf
Не с igraph. См. Http://stackoverflow.com/questions/16668466/all-paths-between-2-vertexes-in-r и http://stackoverflow.com/questions/3971876/all-possible-paths-from-one-node -в-другой-в-направленного-дерево-igraph –