2017-06-08 88 views
0

我已經實現了一個8益智遊戲的dfs搜索,但由於某種原因,我不能設法讓它工作,因爲它應該,我的堆棧不斷添加和添加我的8益智遊戲可能的動作,但它永遠不會減少的答案,我不知道這是否正常,但這是我的代碼,以防有人可以幫助我。我的dfs實現有什麼問題?

代碼沒有完全優化我知道,我只是想知道爲什麼它不工作,因爲應該是一個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); 
    } 
    } 
} 

回答

0

我要回答我自己,因爲我意識到,考慮到IM穿越我的圖在深度組合的數目可能會導致我的組合無限或長號碼,永遠達不到解決方案,因爲我只是朝着一個方向發展,因此我考慮做一個迭代的DFS,它通過層次遍歷每個孩子。