广度优先搜索(BFS)按”距离起点的步数”一圈一圈地探索。它的关键不变量:当一个格子第一次被访问时,到它的距离一定是最短——因为更近的格子在更早的圈就已经处理过了。
工作方式
- 维护一个当前层(frontier)和一张”已访问”记录
- 每一轮,把当前层里所有格子的未访问邻居收集起来,形成下一层
- 在收集邻居时记下”谁是它的前驱”,找到终点后回溯出路径
复杂度
- 时间:O(V + E)(每个格子被访问一次,每条边被检查一次)
- 空间:O(V)
试试看
可视化上方可以切换点击模式:墙、起点、终点。改了之后算法会自动重新运行——直观看到墙怎么影响最短路径。
在动画里看什么
- 冷→暖渐变色:访问的先后顺序(冷色 = 早,暖色 = 晚)
- 深蓝脉冲边框:当前层(frontier)
- 黑色实心:墙
- 暖红连成的路径:回溯得到的最短路径