显示图表中的所有路径

时间:2013-10-17 18:27:52

标签: java graph depth-first-search

我工作到java项目,我想显示图形中的所有路径(此图形使用邻接矩阵表示)。我尝试使用DFS算法但是如何显示所有这些路径?

我试试这个

for(int i=0; i<nr; i++) 
        for(int j=0; j<nr; j++)
            dfs(i,j);

DFS算法是这样的:

public static void dfs(int src, int dst) {

        al.add(src);
        size++;
        color[src] = true;
        if (src == dst) {       // tests for base condition to stop
            for (Integer i : al) {
                //     Prints the path
                System.out.print(i + " ");
            }
            System.out.println();
            return;
        }
        for (int I = 0; I < nr; I++) {
            if (matrix[src][I].contains("1")  {
                if (color[I] == false) {
                    dfs(I, dst);        // These lines do
                    color[I] = false;   // main job of backtracking
                    size--;
                    al.remove(size);
                }
            }
        }
    }

如果我调用函数dfs(2,3),结果是好的,但是这个循环似乎不起作用。

1 个答案:

答案 0 :(得分:0)

在我看来,在尝试查找路径时,您会混淆两件事,这两件事都存储在color[I]索引中。

一,你需要一些东西(颜色会做)来存储你是否访问了节点。看来你的dfs例程很好地为访问过的节点“着色”,并且“uncolor”未访问的节点。

但不明显的是,您似乎没有正在搜索的邻接矩阵。你能否指出检查两个节点是否已连接的代码行?如果没有决定知道何时将节点跟随到另一个节点,则存在简单地走最大数量的可能互连(而不是存在的互连)的风险。