关于bfs时间轴

对于bfs,由于是通过不断将平行位置的元素加入到队列进行的,所以它在一定情况下淡化了与队列外部的  "时间"   联系观念,通过一个数组记录内部的 "时间"

这样的优点是将队列的平行位置的时间化为了统一,而不用纠结到底先遍历哪个

但也有缺点,这样做队列外部的时间将会不能与队列内部同步,也就是说在队列内部的进行一步(即放入一个所有的平行位置元素),外部可能已经进行了很多步了

解决这样的缺点

方法一将队列的每一步都进行彻底,从而达到内部统一,并且与外部统一的效果

具体做法是 在对队列内部元素进行下一步的扩张时,必须要把队列所有的元素都进行扩张完全,也就是完成了扩张那一步之后再进行队列外部的操作

如下所示,就是利用一个变量  t 将之前的元素个数size统计起来,通过while()将该阶段所有元素都扩张完全,再执行队列外部的变化,此时内外时间轴就统一了

方法二是利用内部的记录变量的值与变化来引导外部的过程(即 如内部记录数组的值+1时,外部再进行),从而使外部时间轴与内部统一

原文地址:https://www.cnblogs.com/MekakuCityActor/p/8206768.html