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


Posted in Javascript onJanuary 17, 2019

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

效果:

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

图片如下所示:

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js刷新框架子页面的七种方法代码
Nov 20 Javascript
JS 事件绑定函数代码
Apr 28 Javascript
window.addEventListener来解决让一个js事件执行多个函数
Dec 26 Javascript
使用jquery组件qrcode生成二维码及应用指南
Feb 22 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
Dec 07 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
Nov 22 Javascript
在nginx上部署vue项目(history模式)的方法
Dec 28 Javascript
angularjs使用gulp-uglify压缩后执行报错的解决方法
Mar 07 Javascript
详解将微信小程序接口Promise化并使用async函数
Aug 05 Javascript
javascript 原型与原型链的理解及应用实例分析
Feb 10 Javascript
JS使用for in有序获取对象数据
May 19 Javascript
使用JavaScript通过前端发送电子邮件
May 22 Javascript
JS使用Dijkstra算法求解最短路径
Jan 17 #Javascript
JavaScript简单实现的仿微博留言功能示例
Jan 17 #Javascript
vue权限管理系统的实现代码
Jan 17 #Javascript
使用nvm和nrm优化node.js工作流的方法
Jan 17 #Javascript
JS使用Prim算法和Kruskal算法实现最小生成树
Jan 17 #Javascript
微信小程序使用wxParse解析html的方法示例
Jan 17 #Javascript
nvm、nrm、npm 安装和使用详解(小结)
Jan 17 #Javascript
You might like
缅甸的咖啡简史
2021/03/04 咖啡文化
PHP 柱状图实现代码
2009/12/04 PHP
深入php函数file_get_contents超时处理的方法详解
2013/06/03 PHP
thinkphp3查询mssql数据库乱码解决方法分享
2014/02/11 PHP
PHP模板引擎smarty详细介绍
2015/05/26 PHP
微信开发之php表单微信中自动提交两次问题解决办法
2017/01/08 PHP
jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
2010/04/18 Javascript
jquery和javascript的区别(常用方法比较)
2013/07/04 Javascript
Javascript 按位取反运算符 (~)
2014/02/04 Javascript
jQuery平滑旋转幻灯片特效代码分享
2015/09/07 Javascript
快速使用Bootstrap搭建传送带
2016/05/06 Javascript
js实现select选择框效果及美化
2016/08/19 Javascript
AngularJS实现根据变量改变动态加载模板的方法
2016/11/04 Javascript
深入浅析AngularJS中的一次性数据绑定 (bindonce)
2017/05/11 Javascript
JS+jQuery实现注册信息的验证功能
2017/09/26 jQuery
JS对象和字符串之间互换操作实例分析
2019/02/02 Javascript
js简单遍历获取对象中的属性值的方法示例
2019/06/19 Javascript
基于js实现复制内容到操作系统粘贴板过程解析
2019/10/11 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
Python安装官方whl包和tar.gz包的方法(推荐)
2017/06/04 Python
Python KMeans聚类问题分析
2018/02/23 Python
python+opencv识别图片中的圆形
2020/03/25 Python
用python建立两个Y轴的XY曲线图方法
2019/07/08 Python
python 求10个数的平均数实例
2019/12/16 Python
Python smtp邮件发送模块用法教程
2020/06/15 Python
pytorch加载自己的图像数据集实例
2020/07/07 Python
Python selenium实现断言3种方法解析
2020/09/08 Python
python 通过 pybind11 使用Eigen加速代码的步骤
2020/12/07 Python
html5手机端页面可以向右滑动导致样式受影响的问题
2018/06/20 HTML / CSS
美国学校校服,儿童和婴儿服装:Cookie’s Kids
2016/10/14 全球购物
出国签证在职证明
2014/01/16 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
统计工作个人总结
2015/03/03 职场文书
医药公司采购员岗位职责
2015/04/03 职场文书
证婚人婚礼致辞
2015/07/28 职场文书
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL