zoukankan      html  css  js  c++  java
  • 关于bfs时间轴

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

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

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

    解决这样的缺点

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

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

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

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

  • 相关阅读:
    python标准库
    python常用标准库
    django-restframework-serializers
    Resources.UnloadUnusedAssets
    Shader 的 Blend
    C++STL queue
    C++STL stack
    C++STL deque
    C++STL容器重点
    C++STL 迭代器
  • 原文地址:https://www.cnblogs.com/MekakuCityActor/p/8206768.html
Copyright © 2011-2022 走看看