0

我正在与 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 用户那样有经验。

谢谢。

4

1 回答 1

0

我认为while循环只是无限循环,因为在我假设head <= tail的图表末尾总是 TRUE ?head == tail我怀疑head < tail是你的意思?此外,我不相信returnwhile 循环的中断,请使用break它。

于 2013-04-02T05:19:42.443 回答