我正在与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
}
}
}
}
我不太清楚它是怎么回事。它只是无限地陷入while循环。我正在处理的网络工作并完全连接。我认为这只是一个小问题,我没有看到,如果有人能让我朝着正确的方向去解决这个问题,那就太好了。我可能没有典型的R用户那么有经验。
感谢。
答案 0 :(得分:0)
我认为while
循环只是无限循环,因为head <= tail
始终为TRUE,在我假设的图head == tail
的末尾?我怀疑head < tail
是你的意思吗?另外,我不认为return
会从while循环中断,请使用break
。