首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >路径未按预期工作的递归DFS

路径未按预期工作的递归DFS
EN

Stack Overflow用户
提问于 2016-02-21 05:47:20
回答 1查看 34关注 0票数 0

我有一个State类,它包含一个边的ArrayList。我正在尝试使用DFS计算从一个状态到另一个状态的路径。

代码语言:javascript
复制
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;
        }

获取状态路径有一个问题,但我不确定具体是什么。即使我们找到了我们的目标,它也会继续观察状态。

EN

回答 1

Stack Overflow用户

发布于 2016-02-21 06:01:11

代码语言:javascript
复制
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;
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35529461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档