我有一个二分图,每端有一个源节点和同步节点作为起始节点和结束节点。我无法实现以下java代码,以递归方式使用DFS查找扩充路径。对我的代码的任何建议或更正都会很棒。
List<Edge> Dfs(Node start, Node end, List<Edge>result){
if(start.equals(end))
return result;
}
for (Edge e : start.node_edges){
e.start.visited = true;
if(e.end.visited ==true){
continue;
}
if(e.end.visited == false){
if(e.capacity-e.flow > 0){
result.add(e);}
}
e.end.visited = true;
if(result!=null){
return Dfs(e.end, end, result);
}
result.remove(e);
}
return null;
}
}
更详细的问题:
我希望实现一个max-flow算法,但它需要通过图形的扩充路径,即这个DFS进入的地方。它将搜索从开始到结束顶点的容量大于零的所有路径。 我需要递归来有效地检查所有不同的可能路径!
这段代码出了什么问题?
如果我可以让这个函数找到所有路径然后我设置其余的代码是完美的。好吧,它没有返回所有的路径。将节点标记为已访问并找到穿过同一节点的不同路由存在问题。 我相信我只是没有使用递归正确调用函数。