Сбор ребер в наборе из объекта shortestPath iGraph


Я пытаюсь собрать все уникальные ребра из объекта, созданного из функции shortest_paths iGraph.

> data<-as.matrix(data)
> data
  Q W E R T Y U I
Q 0 4 7 5 0 4 0 0
W 2 0 5 7 3 2 4 9
E 2 4 0 9 2 2 7 2
R 2 2 2 0 6 0 5 8
T 0 8 8 5 0 5 9 0
Y 4 7 2 6 0 0 5 7
U 0 0 0 0 2 0 0 9
I 2 0 6 7 0 2 0 0

network<-graph.adjacency(adjmatrix = data,weighted = TRUE, mode="directed" , diag = FALSE )

shortestPath<-shortest_paths(graph = network, from = 1, to = 1:8,mode = "out", output = "epath")

> shortestPaths$epath
[[1]]
+ 0/41 edges from b068eeb (vertex names):

[[2]]
+ 1/41 edge from b068eeb (vertex names):
[1] Q->W

[[3]]
+ 2/41 edges from b068eeb (vertex names):
[1] Q->Y Y->E

[[4]]
+ 1/41 edge from b068eeb (vertex names):
[1] Q->R

[[5]]
+ 2/41 edges from b068eeb (vertex names):
[1] Q->W W->T

[[6]]
+ 1/41 edge from b068eeb (vertex names):
[1] Q->Y

[[7]]
+ 2/41 edges from b068eeb (vertex names):
[1] Q->W W->U

[[8]]
+ 3/41 edges from b068eeb (vertex names):
[1] Q->Y Y->E E->I

Я хочу вычислить число уникальных ребер в кратчайшем пути, чтобы я мог вычислить плотность графа, определенного как -

Плотность = (число уникальных ребер на кратчайших путях)/ (общее число ребер)

Это необходимо сделать для всех пар кратчайших путей в графе.

Как я могу подсчитать количество уникальных ребер, которые находятся на кратчайшем пути путь в параметре все пары.

Спасибо

1 3

1 ответ:

Вы можете развернуть список, найти уникальные ребра и взять длину результирующего вектора:

length(unique(unlist(shortestPath$epath)))