http://blog.csdn.net/qq_36523667/article/details/78638354
这个链接里是一道迷宫题。用到了BFS+优先队列。
我一直百思不得其解优先队列到底优先在哪了?我感觉和直接bfs没啥区别?后来证明做法不一样,思路也不一样。
所以这里引出另一种最优的做法。
正常的bfs
黑色是当前的点,黄色是即将探索的点,把黄色的依次入队列,再依次出队列,一次出一个。
假设你先出的是右边那个点。
那么右边的点的右边,下边都会到队列的最后。再出第二个黄色点,第二个黄色的下面的点入队列(因为右边的点已经入了),加入到最后面,依次出。
优先队列+BFS
(假设3代表后入要多等待3秒,是一种不友好的情况)不管我们下面的那个黄点和3这个黄点哪个先入队列,3都会被优先队列内部的机制处理在队列的最后端。
所以当你第一个黄点出队列的时候,第一个黄点的右边,下边又会入队列。
但是根据优先队列的机制,新入的两个点又会跑到3的前面。
所以我们这种做法是规避了

本文通过对比BFS与BFS+优先队列两种方法,详细解析了如何利用这两种策略寻找迷宫的最短路径。在BFS+优先队列中,优先队列能确保耗时操作延后,提高效率。作者提出了一种集体出发的策略,将所有可能的情况考虑在内,适用于不同类型的迷宫问题。这两种方法各有优势,适用场景不同。
236

被折叠的 条评论
为什么被折叠?



