Случайный направленный взвешенный граф с базой R

#r #graph #bellman-ford

Вопрос:

Для проекта, в котором мы должны использовать только матрицы и базу R (допускается tidyverse), мне нужно определить случайные взвешенные дуги для ориентированного графика с учетом отрицательных весов. Однако, поскольку затем мне придется применить алгоритм Беллмана-Форда, я бы предпочел предотвратить отрицательные взвешенные циклы. Есть ли способ сделать это без использования пакета igraph и т. Д.? Мой подход до сих пор не может предотвратить отрицательные циклы, так как я не знаю, как предотвратить двунаправленные узлы с отрицательными весами:

 nodes=1:5

set.seed(999)
edges<- data.frame(U_edge=sample(1:5, 100,replace = T),
                   V_edge= sample(1:5, 100,replace = T),
                   weight_edge=sample(-10:20, 100, replace=T))


# unique edges and no  loops
edges2= edges  %>% mutate(self=ifelse(V_edge==U_edge,1,0)) %>% filter(self==0) %>% select(-self) %>% distinct(U_edge, V_edge, .keep_all = TRUE)

edges_=edges2[sample(1:nrow(edges2),10,FALSE),]


 

Есть какие-нибудь идеи, пожалуйста?