#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),]
Есть какие-нибудь идеи, пожалуйста?