Альтернатива для кратчайшего пути - PullRequest
0 голосов
/ 09 июля 2019

У меня есть сеть, состоящая из 335 узлов.Я вычислил weighted shortest.paths между всеми узлами.Теперь я хотел бы увидеть, какие последовательности путей использовались для перемещения между узлами.

Я использую команду shortest_path в igraph и перебираю все комбинации узлов в моей сети (комбинаций 335² - 335 (путь от / к одному и тому же узлу равен 0) / 2 (график не направлен).В общем, я должен перебрать 55,945 комбинаций.

Мой подход выглядит следующим образом: net это моя сеть sp_data это df со всеми комбинациями ссылок в сети

results1 <- sapply(sp_data[,1], function(x){shortest_paths(net, from = x, to = V(net), output="epath"})

К сожалению, для вычислений нужны годы, и в конце у меня недостаточно памяти для хранения информации. (Error: cannot allocate vector of size 72 Kb). В основном у меня есть два вопроса:

  1. Как можноможет быть, команде shortest.paths требуются секунды для вычисления расстояния между всеми узлами моей сети, тогда как для извлечения последовательностей путей (а не только его длины) нужны дни и объем памяти превышает?

  2. Есть ли альтернатива для получения желаемого результата (последовательности путей кратчайшего пути)? Я предполагаю, что синтаксис sapply уже должен быть быстрее, чем for::loop?

...