Java 广度优先搜索错误
Java 广度优先搜索错误,java,runtime-error,directed-graph,breadth-first-search,Java,Runtime Error,Directed Graph,Breadth First Search,public int-bfs(int-maxDepth){//maxDepth=3有效..maxDepth=4给了我一个错误 int src=0; int dest=2; int nodes=arr[src].length-1; boolean[]已访问=新的boolean[节点+1]; int i; int countDepth=0; int countpath=0; int元素; queue.add(src); 而(!queue.isEmpty()| | countDepth!=maxDep
public int-bfs(int-maxDepth){//maxDepth=3有效..maxDepth=4给了我一个错误
int src=0;
int dest=2;
int nodes=arr[src].length-1;
boolean[]已访问=新的boolean[节点+1];
int i;
int countDepth=0;
int countpath=0;
int元素;
queue.add(src);
而(!queue.isEmpty()| | countDepth!=maxDepth)
{
element=queue.remove();
i=元素;
while(i 0&&visted[i]==false)
{
加入(i);
访问[我]=真实;
if(arr[i][element]>0)//如果它有两个方向
访问[i]=错误;
if(元素==dest | i==dest)
countpath++;
}
i++;
}
countDepth++;
}
返回路径;
}
我试图在计算通往目的地的路径时,将深度设为“x”级
出于某种原因,我不断收到一个错误:
Exception in thread "main" java.util.NoSuchElementException
at java.util.LinkedList.removeFirst(Unknown Source)
at java.util.LinkedList.remove(Unknown Source)
at Graph.bfs(Graph.java:48)
线程“main”java.util.NoSuchElementException中出现异常
位于java.util.LinkedList.removeFirst(未知源)
位于java.util.LinkedList.remove(未知源)
在Graph.bfs(Graph.java:48)
我不明白发生了什么事。当我进入3级深度时,它似乎起作用,但当我将其更改为4级时,它不起作用 变化
while(!queue.isEmpty()| | countDepth!=maxDepth)
到
while(!queue.isEmpty()&&countDepth!=maxDepth)
每个图都有一些最大深度。看起来,您将maxDepth设置为大于给定图形的实际可能值,并且即使在处理了所有可能的节点之后(即当队列为空时),您的循环也会尝试继续bfsing
更新
我会尽力回答你在评论中提出的第二个问题,即使给出的信息实际上还不够,所以,我会尽量显得多余=)
我想,您将计算length=1
、length=2..
的所有路径。我看到了queue
数据结构,但没有看到声明-您是否对所有函数调用使用相同的队列?如果是,您应该在每次调用后清除队列(调用queue.clear()的最佳位置是return语句之前)
另外,我看到您在每次调用中都使用了新的访问数组,这是正确的,但是如果您实际使用了一些全局访问,那么您也应该在每次调用后“清除”访问-换句话说,用false填充它 此函数中的哪一行是第48行?element=queue.remove()非常感谢。。。这就解决了错误。现在它输出了错误数量的正确路径。它应该打印出“4”,但它正在打印出“1”。当我执行3个级别时,它会打印出正确的路径,但我假设这是巧合,并且我的算法不正确。@juice,我想我解决了“NoTouchElementException”错误,但我无法回答您的第二个问题,因为您没有提供任务描述=)如果您想得到错误输出的答案,提供完整信息-代码、输入、预期输出、不正确输出、问题陈述e.t。c@juice字体你应该问你的新问题,而不是老问题上的骑手。(在撰写新问题时,你很有可能自己解决问题。这种情况经常发生。)@juice,请参阅更新。我的建议正确吗?如果是的话,我可以称自己为外星生物=)
Exception in thread "main" java.util.NoSuchElementException
at java.util.LinkedList.removeFirst(Unknown Source)
at java.util.LinkedList.remove(Unknown Source)
at Graph.bfs(Graph.java:48)