Javascript 获取两点之间的最短路径
我有以下数组:Javascript 获取两点之间的最短路径,javascript,algorithm,shortest-path,backtracking,Javascript,Algorithm,Shortest Path,Backtracking,我有以下数组: steps=[ {from:1, to:8}, {from:1, to:2}, {from:2, to:7}, {from:7, to:9}, {from:8, to:9} ]; 此数组描述两点之间的连接位置。例如,从1到7有一个方法1->2->7 在JavaScript中,如何生成从1到9的最短路径 已更新 function calc_route(start, end, data) { co
steps=[
{from:1, to:8},
{from:1, to:2},
{from:2, to:7},
{from:7, to:9},
{from:8, to:9}
];
此数组描述两点之间的连接位置。例如,从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);
}
}
}
}
功能计算路径(开始、结束、数据)
{
console.log(开始+”,“+结束);
控制台日志(数据);
对于(var i=0;i查找最低成本路径的标准方法是(可以使用启发式知识)或(不能)。这两个链接都有伪代码,可以很容易地转换为Javascript。以下是解决方案:
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);
}
}
}
}
函数计算路径(开始、结束、数据、我的路径、解决方案)
{
push(parseInt(start));
对于(var i=0;iIn general,似乎您需要一个图搜索。我会看看dijkstra的算法和a*(a星)