Java 检查无向图中两个节点之间是否有任何路径,而不经过特定节点
我通过应用bfs/dfs调查了这两个节点之间所有可能的路径。虽然我得到了正确的结果,但它花费了太多的时间。 我该怎么办 这是我的BFS实现的java代码- 这里s=源顶点或第一个顶点 d=目的地或第二顶点 b=要避免的特定点Java 检查无向图中两个节点之间是否有任何路径,而不经过特定节点,java,algorithm,graph,graph-theory,Java,Algorithm,Graph,Graph Theory,我通过应用bfs/dfs调查了这两个节点之间所有可能的路径。虽然我得到了正确的结果,但它花费了太多的时间。 我该怎么办 这是我的BFS实现的java代码- 这里s=源顶点或第一个顶点 d=目的地或第二顶点 b=要避免的特定点 boolean BFS(int s, int d, int b) { boolean visited[] = new boolean[V]; LinkedList<Integer> queue = new LinkedList<Inte
boolean BFS(int s, int d, int b)
{
boolean visited[] = new boolean[V];
LinkedList<Integer> queue = new LinkedList<Integer>();
visited[s]=true;
queue.add(s);
if(s==b)
return false;
upper:
while (queue.size() != 0)
{
s = queue.poll();
if(s==b)
continue upper;
if(s==d)
return true;
Iterator<Integer> i = adj[s].listIterator();
while (i.hasNext())
{
int n = i.next();
if (!visited[n])
{
visited[n] = true;
queue.add(n);
}
}
}
return false;
}
boolean BFS(int s,int d,int b)
{
布尔值[]=新布尔值[V];
LinkedList队列=新建LinkedList();
已访问=正确;
队列。添加;
如果(s==b)
返回false;
上:
while(queue.size()!=0)
{
s=queue.poll();
如果(s==b)
继续向上;
如果(s==d)
返回true;
迭代器i=adj[s].listIterator();
while(i.hasNext())
{
int n=i.next();
如果(!已访问[n])
{
访问[n]=真;
添加(n);
}
}
}
返回false;
}
如果有这样的路径,它将返回true;如果没有这样的路径,它将返回false。您可以添加一些您拥有的代码,或者添加一个包含执行时间的执行示例吗?当然可以,我编辑了我的问题。请看一看。这可能是Iteraor类占用资源的一个简单例子,您在第一次迭代时创建一个新的,然后进行另一次迭代,您是否尝试过线程化来减少每个迭代器的任务大小?Codechef June16挑战?挑战还没有结束。