Я хочу найти расстояние между всеми узлами на графике, но вместо суммирования весов ребер я хочу их умножить.
Как пример:
library(igraph)
# create a weighted adjacency matrix
mx <- structure(c(0, 0.5, 0, 0, 0, 0.5, 0, 0.5, 0.5, 0, 0, 0.5, 0, 0, 0.5, 0, 0.5,
0, 0, 0, 0, 0, 0.5, 0, 0), .Dim = c(5L, 5L))
## convert to igraph object
mx2 <- graph.adjacency(mx, weighted = TRUE)
Я могуполучить расстояние между всеми узлами следующим образом:
shortest.paths(mx2)
[,1] [,2] [,3] [,4] [,5]
[1,] 0.0 0.5 1.0 1.0 1.5
[2,] 0.5 0.0 0.5 0.5 1.0
[3,] 1.0 0.5 0.0 1.0 0.5
[4,] 1.0 0.5 1.0 0.0 1.5
[5,] 1.5 1.0 0.5 1.5 0.0
Но это вычисляет расстояние между всеми узлами путем суммирования соответствующих весов, которые я хочу умножить на них, что приведет к следующему:
[,1] [,2] [,3] [,4] [,5]
[1,] 0.000 0.50 0.25 0.250 0.125
[2,] 0.500 0.00 0.50 0.500 0.250
[3,] 0.250 0.50 0.00 0.250 0.500
[4,] 0.250 0.50 0.25 0.000 0.125
[5,] 0.125 0.25 0.50 0.125 0.000
Насколько я вижу, это невозможно сделать с помощью параметров "из коробки" в igraph, и я изо всех сил пытаюсь выяснить это самостоятельно (в реальных данных матрицы намного больше, иРазнообразие размеров).Любые предложения будут высоко ценится.