今天我们来学习多起点的bfs
1.多起点的bfs
在普通的广度优先搜索问题中,为了得到从初始状态到达目标状态的最小操作数,则将初始状态放入队列中。离初始状态由近及远地不断扩展出新的状态,直到搜索到目的状态,或队列为空(无法搜索到目标状态),得到结果。
在一些问题中,希望找到离
n 个初始状态距离最小的操作数。在实现这样的问题,主要有两种思路,一是我们可以进行
n 次广度优先搜索,并不断更新表示步数的数组。
而另一种是我们可以将多个初始状态放入队列中,这些状态在队列中扩展得到的结果仍是一个步数不下降的序列,所以当第一次搜索到目标状态时,仍旧是最小的操作数。
例如:在迷宫问题中有多个起点
S1,S2,S3,⋯,求起点(可以为任意一个)到终点
T 的最短距离。