簡體   English   中英

具有路徑無法正常運行的遞歸DFS

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM