簡體   English   中英

我的dfs實現有什么問題?

[英]What's wrong with my dfs implementation?

我已經為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);
    }
  }
}

我要回答自己,因為我意識到組合的數量考慮到深入遍歷我的圖可能會導致我遇到無限或較長的組合,並且由於我只是朝一個方向前進而從未達到解決方案,因此我考慮過做一個迭代的DFS,它會逐級遍歷每個孩子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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