Рассчитать количество вершин на кратчайшем пути.

Наличие взвешенной направленной сети, такой как эта:

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 в значение.

Другие вопросы по тегам