Рассчитать количество вершин на кратчайшем пути.
Наличие взвешенной направленной сети, такой как эта:
library(igraph)
g <- erdos.renyi.game(25, 1/10, directed = TRUE)
E(g)$weight <- runif(length(E(g)), 1, 5)
При запуске функции кратчайшего пути sp <- shortest.paths(g)
Я, очевидно, получаю матрицу с суммой взвешенных ребер между ними. Однако я хотел бы посчитать, сколько вершин на этом пути.
Идея исходит из поиска кратчайших путей для сети поездов, с ребрами в качестве железнодорожных станций, и заключается в том, что я хотел бы видеть количество передач (между вершинами или узлами) для каждого кратчайшего пути.
РЕДАКТИРОВАТЬ: Например, если кратчайший путь от А до С, я хочу знать, сколько вершин между ними. Например, если полный путь A - E - B - C, то E и B являются промежуточными вершинами, поэтому у меня будет значение 2. Полный путь вершин также в порядке, так что в этом случае это даст мне 4 вершины для полного кратчайшего пути.
1 ответ
Нашел альтернативное решение проблемы.
sp <- shortest_paths(g, V(g), V(g), mode = "all",
weights = E(g)$weight, output = "vpath")$vpath
lengths(sp)
Это дает точное количество вершин на этом пути. Так что для промежуточных остановок это просто вопрос вычитания 2 в значение.