JS实现深度优先搜索求解两点间最短路径
更新时间:2019年01月17日 11:19:35 作者:我要潇潇洒洒
这篇文章主要为大家详细介绍了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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章
event.currentTarget与event.target的区别介绍
event.currentTarget与event.target的区别想大家在使用的时候不是很在意,本文以测试代码来讲解它门之间的不同2012-12-12
使用CoffeeScrip优美方式编写javascript代码
CoffeeScript就是JavaScript,他进行的是一对一的编译,或者说是翻译,而且编译成的JavaScript代码可读性很强。本文给大家介绍使用CoffeeScript优美方式编写javascript代码,感兴趣的朋友一起看看吧2015-10-10
使用TypeScript V8来改进您的JavaScript代码
TypeScript V8是一个强大的JavaScript类型系统,它可以帮助你发现JavaScript代码中的错误和潜在问题,并在编译时捕获它们,以便您可以解决它们,TypeScript V8为JavaScript提供一系列的类型注释,包括自定义类型和其他高级功能2023-08-08


最新评论