双向bfs相关整理
双向bfs主要是引入起点和终点一起遍历,并给数组多加一维。因为双向的最短路一定是整体的最短路,即搜索到一个点另一位也已经搜索到,直接输出即可。
双向bfs的好处:考虑广度优先遍历,越到后面的层数,常数越大,如果采用双向bfs这一遍历方式可以使常数大大减小,从而起到降低时间复杂度的作用。
双向和单向的区别在于,可以从终点和起点同时出发,记录每个点是被从起点开始的访问了(开一个vis数组,参考dfs),还是被从终点开始的访问了,如果访问到一个点,同时被起点开始的和终点开始的访问了,那么这个点就是答案的必经点,输出起终路径之和就行。
解释的有点迷惑结合例题凑合着看
两道洛谷上的例题其实我现在也没做
Uva1601 八数码难题