首页 > 编程 > JavaScript > 正文

JS实现深度优先搜索求解两点间最短路径

2019-11-19 12:16:45
字体:
来源:转载
供稿:网友

本文实例为大家分享了JS实现深度优先搜索求解两点间最短路径的具体代码,供大家参考,具体内容如下

效果:

找出图里点到点最短路径,并打印轨迹

图片如下所示:


代码:

const map = [  [0, 1, 1, 0, 1],  [1, 0, 0, 1, 0],  [1, 0, 0, 0, 1],  [0, 1, 0, 0, 0],  [1, 0, 1, 0, 0]]function dfsManager(map, start, end){  var min = 9999,    path = [],    unvisited = [];  for(let i=0; i<5;i++){    unvisited[i] = true  }  (function dfs(map, start, end, step){    //unvisited[start] = false //不重复访问最后的节点    if(start === end){      console.log('step:',step)      for(let i=0; i<path.length; i++){        if(path[i] >= 0){          console.log(path[i]+'->')        }      }      if(min > step){        min = step      }      return    }    unvisited[start] = false  //要重复访问最后的节点    let len = map.length    for(let i=0; i<len; i++){      if(map[start][i] === 1 && unvisited[i]){        path.push(i)  //记录路径        dfs(map, i, end, step+1)        path.pop()   //避免污染其他路径      }    }  })(map, start, end, 0)  return min}console.log('min:',dfsManager(map,3,4))

output:

step: 4
1->
0->
2->
4->
step: 3
1->
0->
4->
min: 3

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表