当给出边缘权重时,两个火车站之间的最短路径

时间:2012-06-29 15:00:36

标签: javascript optimization

我必须找到火车站之间的最短距离 -

给出的是代表火车站的节点,边缘被认为是距离。我必须计算最小距离。我正在使用的逻辑中存在一些错误。

这是我试过的代码。但我没有得到两点之间的最短路径。 实现它 :console:var e = new calc_route(“1”,“3”,步骤)解决方案应该给我1到3之间的最小距离.. ...例如,可能存在从1到2的路径,其具有wgt 5和2到3,其中wgt 4总数为9.并且可能存在1到3之间的直接路径,其中wgt 10.然后第一路径应该是被选中

steps=[
    {from:1, to:8},
    {from:1, to:2},
    {from:2, to:7},
    {from:7, to:9},
    {from:8, to: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].to == end && data[i].from == start)
        {
            console.log("Return");                  
            console.log(data[i]);
            return data[i];
        }
        else
        {
            if(data[i].from == start)
            {                       
                calcfor =   data.splice(i, 1);                                      
                calc_route(calcfor[0].topoint, end, data);
            }
        }
    }
}

2 个答案:

答案 0 :(得分:3)

你应该看看Dijkstra的算法。 http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm

在javascript中查找它的实现,并重用已经测试过的代码。

答案 1 :(得分:0)

似乎你需要实现的是A *算法...... http://en.wikipedia.org/wiki/A*_search_algorithm 快速谷歌将为您提供许多已经实施的结果。