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

时间:2016-06-14 14:08:13

标签: 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<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;
}

如果有这样的路径则返回true,如果没有这样的路径则返回false。

0 个答案:

没有答案