【问题标题】:What's wrong with my dfs implementation?我的 dfs 实现有什么问题?
【发布时间】:2017-06-09 06:03:14
【问题描述】:

我已经为一个 8 益智游戏实现了 dfs 搜索,但由于某种原因,我无法让它正常工作,我的堆栈不断为我的 8 益智游戏添加和添加可能的动作,但它从未减少回答,我不知道这是否正常,但这是我的代码,以防有人可以帮助我。

我知道代码没有完全优化,我只是想知道为什么它不能像 dfs 那样工作,谢谢。

function depthFirstSearch(currentState, finalState)
{
  var stack = [];
  var visited = [];
  delete currentState["prev"];
  stack.push(currentState);
  while(stack.length)
  {
    var node = stack.pop();
    visited.push(node);
    if(compare(node, finalState))
    {
      return visited;
    }
    else
    {
      var successors = getSuccessors(node);
      for(var i = 0; i < successors.length; i++)
      {
        delete successors[i]["prev"];
      }
      var realSuccessors = [];
      for(var i = 0; i < visited.length; i++)
      {
        for(var j = 0; j < successors.length; j++)
        {
          if(compare(successors[j], visited[i]))
          {
            continue;
          }
          else
          {
            realSuccessors.push(successors[j]);
          }
        }
      }
      for(var i = 0; i < realSuccessors.length; i++)
      {
        stack.push(realSuccessors[i]);
      }
      console.log(stack.length);
    }
  }
}

【问题讨论】:

    标签: javascript arrays depth-first-search microsoft-distributed-file-system sliding-tile-puzzle


    【解决方案1】:

    我要回答自己,因为我意识到考虑到我深入遍历我的图表的组合数量可能会导致我获得无限或很长数量的组合并且永远无法找到解决方案,因为我只是在一个方向,因此我考虑做一个迭代的 DFS,它按级别遍历每个孩子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-29
      • 2019-06-07
      • 2021-07-25
      • 2011-09-08
      • 2016-05-28
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      相关资源
      最近更新 更多