2点

2012-01-15 5 views
0

との間の最短の方法は、私は次の配列を持って取得:2点

steps=[ 
    {from:1, to:8}, 
    {from:1, to:2}, 
    {from:2, to:7}, 
    {from:7, to:9}, 
    {from:8, to:9} 
]; 

この配列は、2つのポイント間の接続を持っていない場所を記述しています。例えば1から7までは、1-> 2-> 7の方法があります。

JavaScriptでは、例えば、1から9までの最短ウェイをどのように生成できますか?

は、これは私が今まで行って何

function calc_route(start, end, data) 
    {   
     console.log(start+", "+end); 
     console.log(data);    
     for(var i=0; i<data.length; i++) 
     { 

      if(data[i].topoint == end && data[i].frompoint == start) 
      { 
       console.log("Return");     
       console.log(data[i]); 
       return data[i]; 
      } 
      else 
      { 
       if(data[i].frompoint == start) 
       {      
        calcfor = data.splice(i, 1);          
        calc_route(calcfor[0].topoint, end, data); 
       } 
      } 
     } 
    } 

を更新し、私の質問は、私はパスを保存することができますどのようにでしょうか?

+1

、あなたがグラフ探索をしたい表示されます。私はdijkstraのアルゴリズムとA *(A Star) – rsaxvc

答えて

0

が解決策である:一般的に

function calc_route(start, end, data, mypath, solution) 
     {    
      mypath.push(parseInt(start)); 
      for(var i=0; i<data.length; i++) 
      { 

       if(data[i].topoint == end && data[i].frompoint == start) 
       { 
        mypath.push(end); 
        solution.push(mypath); 
        return end; 
       } 
       else 
       { 

        if(data[i].frompoint == start) 
        {         
         calcfor = data.slice(0); 
         calcfor.splice(i,1);          
         calc_route(data[i].topoint, end, calcfor, mypath.slice(0), solution); 
        } 
       } 
      } 
     } 
7

最低コストのパスを見つけるための標準的な方法は、A* algorithm(ヒューリスティックな知識を使用できる)またはDijkstra's Algorithm(できないもの)のいずれかです。これらのリンクの両方には、簡単にJavascriptに変換できる擬似コードがあります。ここで