Расчет кратчайшего пути с BFS в R
Я работаю с R, чтобы сделать поиск сети в ширину. Вот код, который у меня есть:
shortestPath <- function(v1,v2) {
q <- rep(0, 3931)
head <- 1
head2 <- 0
tail <- 1
v1$distance <- 0
q[tail] <- v1
while(head <= tail) {
v <- q[head]
head <- head + 1
if(v==v2) {
return(v$distance)
}
vEdges <- get.neighborhood(net, v)
m <- rep(0,3931)
m[head2] <- v
head2 <- head2 + 1
for(n in vEdges) {
if(!(n %in% m)) {
n$distance <- v$distance + 1
m[head2] <- n
head2 <- head2 + 1
tail <- tail + 1
q[tail] <- n
}
}
}
}
Я не совсем уверен, что происходит с этим. Он просто бесконечно застревает в цикле. Сеть, с которой я имею дело, работает и полностью подключена. Я думаю, что есть небольшая проблема с этим, которую я не вижу, если бы кто-то мог направить меня в правильном направлении, чтобы исправить это, это было бы здорово. Я, вероятно, не так опытен, как типичный пользователь R.
Благодарю.
1 ответ
Я думаю while
петля просто петли бесконечно, потому что head <= tail
всегда ИСТИНА, в конце графика head == tail
Я предполагаю? Я подозреваю head < tail
ты что имел ввиду? Кроме того, я не верю return
прерывает цикл while, используйте break
для этого.