JS实现广度优先搜索得到两点间最短路径
2017-12-05 20:11
399 查看
广度优先搜索
适用范围: 无权重的图,与深度优先搜索相比,深度优先搜索法占内存少但速度较慢,广度优先搜索算法占内存多但速度较快复杂度: 时间复杂度为O(V+E),V为顶点数,E为边数
图片如下所示:
代码:
const map = [ [0, 1, < ad18 span class="hljs-number">1, 0, 1], [1, 0, 0, 1, 0], [1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [1, 0, 1, 0, 0] ] function bfs(map, start, end){ let queue = [], vertex_num = map.length, //节点数 count = 0, //迭代次数 unvisited = [], //保存还未访问过的节点 step_dict = []; //记录步长 //init for(let i=0; i<vertex_num; i++){ unvisited[i] = true step_dict[i] = 0 } queue.push(start) while(queue.length){ let flag = false //若遇到孤立节点,则跳过而不加count let cur = queue.shift() step_dict[cur]++ unvisited[cur] = false for(let i=0; i<vertex_num; i++){ if(map[cur][i] === 1 && unvisited[i] === true){ queue.push(i) unvisited[i] = false step_dict[i] = count flag = true } } if(flag){ count++ } } return step_dict[end] } //测试 console.log(bfs(map,3,4))
output
3
相关文章推荐
- JS实现深度优先搜索得到两点间最短路径
- Dijkstra单源最短路径实现 及 Floyd任意两点之间的最短路径
- Python广度优先搜索得到两点间最短路径
- 迪杰斯特拉算法处理无向图中最短路径的(dijkstra)Java实现(指定两点,求最短距离及路径)
- 利用链式前向星在无权图中实现寻找两点最短路径
- 迪杰斯特拉算法处理无向图中最短路径的(dijkstra)Java实现(指定两点,求最短路径)
- 图两点间的最短路径,所有路径算法C语言实现
- Java用Dijkstra算法实现地图两点的最短路径查询(Android版)
- 最短路径 (单源最短路径Dijkstra和任意两点最短路径Floyd) C实现
- Matalab代码 实现 Dijkstra求 有向图及无向图之间,任意两点之间的最短路径
- 图两点间的最短路径,所有路径算法C语言实现
- 用Python实现Dijkstra算法用来寻找两点之间的最短路径 (Implementation of Dijkstra in Python)
- 任意两点间最短路径算法实现
- 迪杰斯特拉算法处理无向图中最短路径的(dijkstra)Java实现(指定两点,求最短路径)
- 图论:最短路径:广度优先搜索(C语言实现)
- 任意两点间最短路径算法实现
- Bellman-Ford 算法实现单源最短路径
- hdu3790 最短路径问题(dijkstra/优先队列实现)
- js实现任意两点之间画虚线