Как я могу создать случайный граф, чтобы кратчайший путь обычно не был прямым ребром? - PullRequest
3 голосов
/ 15 апреля 2020
  • Предположим, что у меня есть граф с n вершинами, такой, что граф является двухсторонним, потоки построены по равномерному закону и положительны!

  • Если мы рассмотрим функцию L (i, j), которая дает поток минимального пути между вершинами i и j созданного случайного графа, я ищу (i, j) такой, что функция L достигает это максимум.

  • Используя "igraph", я создал функцию r, которая генерирует некоторый случайный граф , первая цель - найти все кратчайший путь для этого графика. После этого мне понадобятся две вершины, которые связаны с максимумом матрицы потока q1 (максимум L):

  • Для любых двух вершин (i, j) Матрица q1 дает поток, связанный с минимальным путем между ** (i, j). Следующий код найдет максимум L, найдя максимум q1: **

.

sim_model<-function(number_vertices,min_val,max_val ){

#: Creating the graph F

n=number_vertices  # number of vertices 
F <- erdos.renyi.game(n, p.or.m=0.7, directed=FALSE)  #random graph bi-partite

m1=ecount(F) # edges number 
min = min_val    # 1 km
max = max_val   # 50 km 
run_unif = runif(m1 , min , max) #uniform law for flows/costs 

F <- set.edge.attribute(F, name="distance", value= run_unif )  # setting edges flows / costs
plot(F, layout=layout.fruchterman.reingold)  # plot F

q1=distances(F, weights = E(F)$distance) # flow matrix for all shortest paths between any two vertices
result1 = which(q1 == max(q1), arr.ind=TRUE) # The maximum possible flow for all shortests paths considering all vertices

associated_route_1=as.numeric(substr(get.all.shortest.paths(F, result1[2,][1], to = result1[2,][2])$`res`[[1]],0,7)) # the route corresponding to that maximum flow ( considering all the possible shortest paths only for any two vertices  )
}

Проблема:

Код работает, единственная проблема в том, что переменная associated_route_1 обычно является прямым ребром между двумя вершинами. Этот случай меня не интересует! Я хочу знать, что я могу сделать, чтобы избежать этого.

Я буду sh Моя просьба ясна, спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...