BFS+优先队列——迷宫最短路径——两种最优方法比较及详细图解
来源:互联网 发布:拓扑算法数学建模 编辑:程序博客网 时间:2024/05/21 06:49
http://blog.csdn.net/qq_36523667/article/details/78638354
这个链接里是一道迷宫题。用到了BFS+优先队列。
我一直百思不得其解优先队列到底优先在哪了?我感觉和直接bfs没啥区别?后来证明做法不一样,思路也不一样。
所以这里引出另一种最优的做法。
正常的bfs
黑色是当前的点,黄色是即将探索的点,把黄色的依次入队列,再依次出队列,一次出一个。
假设你先出的是右边那个点。
那么右边的点的右边,下边都会到队列的最后。再出第二个黄色点,第二个黄色的下面的点入队列(因为右边的点已经入了),加入到最后面,依次出。
优先队列+BFS
(假设3代表后入要多等待3秒,是一种不友好的情况)不管我们下面的那个黄点和3这个黄点哪个先入队列,3都会被优先队列内部的机制处理在队列的最后端。
所以当你第一个黄点出队列的时候,第一个黄点的右边,下边又会入队列。
但是根据优先队列的机制,新入的两个点又会跑到3的前面。
所以我们这种做法是规避了比较耗时的操作,让耗时的或者不友好的点最后出队列,可能可以让我们更快抵达终点。
而我的做法。
我是采用一种集体出发的模式,如第一个图,我们两个黄色即将探访的区域,同时抵达。
把原来那个点置位灰色,代表已走过,把所有黑色点作为当前点,再找出所有将探访的点。
就这样一步一步全部像病毒一样蔓延了出去,就算遇到了同上面例子讲的情况3这种不友好低优先级的点,
我也是一样处理,不过会在3那个点停留3秒。
这样的话是把所有可能的情况都走遍了。
上述bfs+优先队列和我的方法,不能说谁更好。两种方法适合的题型不一样。
阅读全文
0 0
- BFS+优先队列——迷宫最短路径——两种最优方法比较及详细图解
- 宽度优先搜索——迷宫的最短路径
- 迷宫最短路径 广度优先搜索—C
- hdu1728逃离迷宫 (利用最短路径思想+优先队列(BFS))
- 最简单的BFS入门题目——迷宫的最短路径
- 广度优先搜索 《挑战程序设计竞赛》——迷宫的最短路径
- 迷宫最短路径 深度优先搜索—C—python
- 迷宫问题 与 最短路径 怎样记录路径的总结(dijikstra,bfs,floyd,优先队列)
- 迷宫最短路径(bfs)
- BFS 迷宫最短路径
- BFS循环求迷宫最短路径及路径数
- 迷宫最短路径问题(ShortestPath)的求解——利用链式队列
- 算法基础(六):广度优先探索迷宫路径(队列实现!)—超详细版!
- hdu3790最短路径问题(BFS+优先队列)
- 最短路径——优先队列优化版(其实稠密图不优化)
- 迷宫问题,求最短路径长度、最短路径条数、所有最短路径,DFS+BFS+栈+队列
- BFS 迷宫的最短路径问题
- BFS:迷宫的最短路径
- Flink DataSet API 使用示范
- 判断一个链表是否是回文结构 Python 版
- Linux top命令的用法详细详解
- SpringCache实现原理及核心业务逻辑(一)
- Java容器类小结
- BFS+优先队列——迷宫最短路径——两种最优方法比较及详细图解
- 再见了,我深爱过的单片机------单片机带我入门软件, 也最能揭示硬件与软件的关系
- Linux上Oracle 11g启动与关闭
- linux小技巧
- get与post的区别
- 在CLion中使用Qt
- python学习之 输入 输出
- 在CLion中添加Qt的工具,方便取代Qt Creator
- Java 操作mysql数据库中时间字段