[英]Recursive DFS with path not functioning as expected
我有一個State類,它包含邊緣的ArrayList。 我正在嘗試使用DFS計算從一種狀態到另一種狀態的路徑。
public class State{
private String name;
private ArrayList<State> edges;
public ArrayList<State> depth-first-search(State start, State goal, ArrayList<State> path){
if (start.equals(goal)) {
path.add(start);
return path;
}
else
{
start.setFound(true);
for (State state: start.getEdges())
{
if (!state.found)
{
//we haven't looked at this state, let's look at it
path.add(state);
path = depth-first-search(state, goal, path);
}
}
return path;
}
獲取狀態的路徑存在問題,但是我不確定到底是什么。 即使我們找到了目標,它仍會繼續查看狀態。
public List<State> dfs(State start, State goal) {
List<State> list = new ArrayList<State>();
if (dfsImpl(start, goal, list))
return list;
else
return null;
}
private boolean dfsImpl(State start, State goal, ArrayList<State> path) {
if (start.equals(goal)){
path.add(start);
return true;
}
else{
start.setFound(true);
for (State state: state.getEdges()){
if (!state.found){
//we haven't looked at this state, let's look at it
path.add(state);
if (DFS(state, goal, path))
return true;
}
}
return false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.