我工作到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),结果是好的,但是这个循环似乎不起作用。
答案 0 :(得分:0)
在我看来,在尝试查找路径时,您会混淆两件事,这两件事都存储在color[I]
索引中。
一,你需要一些东西(颜色会做)来存储你是否访问了节点。看来你的dfs
例程很好地为访问过的节点“着色”,并且“uncolor”未访问的节点。
但不明显的是,您似乎没有正在搜索的邻接矩阵。你能否指出检查两个节点是否已连接的代码行?如果没有决定知道何时将节点跟随到另一个节点,则存在简单地走最大数量的可能互连(而不是存在的互连)的风险。