Проблема реализации алгоритма BFS в R - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь реализовать алгоритм поиска bfs по ширине в R. Я знаю о функции graph :: bfs и do_bfs из DiaGrammer. Я думаю, что моя проблема в «для» функции BFS.

На входе будет представлен график в виде следующего:

             1
       2          3
   4      5     6   7

На выходе должен быть путь. в этом случае, если я начну с 1, 1,2,3,4,5,6,7


library (igraph)
library(foreach)
library(flifo)
library(digest)
# devtools::install_github("rdpeng/queue")
install.packages("queuecomputer")

. Эти пакеты показались полезными для реализации, особенно для очереди.

t<-make_tree(7, children = 2, mode ="out")

plot.igraph(t)

bfsg(t, 1)

bfsg<- function (g, n) {

  m <- c(replicate(length(V(t)), 0))
  q<-flifo::fifo ()
  m[n]<- 1
  push (q, n)
  pr <- c(replicate(length(V(t)), 0))
}



в этот момент 1 должен быть в очереди, после этого его распечатали и вытащили из очереди. После всплытия алгоритм должен go 2 и 3


while (size(q)!=0){
  print (n)
  pop(q)
}
for (i in unlist(adjacent_vertices(g, n, mode = "out"))){
  if (m[i] == 0){
    push(q,i)
    m[i]=2
  }

}
...