Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查无向图中两个节点之间是否有任何路径,而不经过特定节点_Java_Algorithm_Graph_Graph Theory - Fatal编程技术网

Java 检查无向图中两个节点之间是否有任何路径,而不经过特定节点

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

我通过应用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<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挑战?挑战还没有结束。