图搜索

广度优先搜索

广度优先搜索(BFS)按”距离起点的步数”一圈一圈地探索。它的关键不变量:当一个格子第一次被访问时,到它的距离一定是最短——因为更近的格子在更早的圈就已经处理过了。

工作方式

  1. 维护一个当前层(frontier)和一张”已访问”记录
  2. 每一轮,把当前层里所有格子的未访问邻居收集起来,形成下一层
  3. 在收集邻居时记下”谁是它的前驱”,找到终点后回溯出路径

复杂度

  • 时间:O(V + E)(每个格子被访问一次,每条边被检查一次)
  • 空间:O(V)

试试看

可视化上方可以切换点击模式:起点终点。改了之后算法会自动重新运行——直观看到墙怎么影响最短路径。

在动画里看什么

  • 冷→暖渐变色:访问的先后顺序(冷色 = 早,暖色 = 晚)
  • 深蓝脉冲边框:当前层(frontier)
  • 黑色实心:墙
  • 暖红连成的路径:回溯得到的最短路径