0

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);
    }
  }
}
4

1 に答える 1