2016-06-16 2 views
0

Я пытаюсь найти число вхождений определенной вершины на всех кратчайших путей между заданными двумя вершинами. Для этого я использую пакет igraph в R. Я использую get.all.shortest.paths() на следующем графике

g <- graph(c(1,2,1,3,2,4,3,4,3,5,4,6,5,6,6,7), directed = F) 

Проблема, которую я получаю, когда я бегу get.all.shortest.paths(g,2,3) я получаю:

$res 
$res[[1]] 
+ 3/7 vertices: 
[1] 2 4 3 

$res[[2]] 
+ 3/7 vertices: 
[1] 2 1 3 

$nrgeo 
[1] 1 1 2 1 0 1 0 

, который я предполагаю, что $ nrgeo это число вхождений вершин во всех кратчайших путей от вершины 2 до 3. (я не мог найти файл справки для функции, так что я не конечно, что такое $ nrgeo.)

Однако, кратчайший путь между вершиной 2 и вершиной 3 не содержит вершина 6 и вершина 2 реализуются дважды, а не один раз.

Я что-то упустил?

ответ

0

Я считаю, что nrgeo является результирующим вектором значений от Djikstra's algorithm, который используется для поиска кратчайших путей. Это не скажет вам, сколько кратчайшие пути некоторая вершина лежит на между 2 и 3. Вместо того, чтобы вы могли бы использовать что-то вроде

vertex=1 
sum(sapply(get.all.shortest.paths(g,2,3)$res,function(x){vertex %in% x})) 

найти, например, число кратчайших путей, вершина 1 лежит на.

+0

Спасибо большое, это именно то, что я хотел! –

Смежные вопросы