逐步演示
任选算法,播放、单步、调速。
用途:观察任一算法每一步扩展了哪些格子。
可选算法
| 算法 | 规则 | 对应实现 |
|---|---|---|
| 广度优先搜索(BFS) | 4 邻域 | 逐格队列 BFS |
| 双向 BFS | 4 邻域 | src/matlab/bidir_plan.m |
| 单调扫描 | 4 邻域 | src/matlab/monotone_plan.m,只在存在曼哈顿长度路径时作答 |
| 课程原版 A* | 4 邻域 | src/matlab/astar_starter.m,原样保留其错误 |
| 修正后的课程 A* | 4 邻域 | src/matlab/astar_course.m |
| Dijkstra(8 邻域) | 8 邻域 | src/matlab/plan8_ref.m |
| A*(8 邻域) | 8 邻域 | zig/src/conn8_astar.zig 的思路,八方向距离启发式 |
「已扩展节点」统计从边界取出并展开的格子,包括最后取出的终点。双向 BFS 的两个方向用不同颜色;单调扫描每一步是一整行。
数据来源
每个算法都是对仓库实现(提交 fa87b65)的 TypeScript 移植,在浏览器里现算。站点测试在全部 29,746 道验证题上核对:BFS、双向 BFS、修正 A*、Dijkstra-8、A*-8 的距离与参考答案全部一致;单调扫描作答的 10,775 题全部正确;原版 A* 在 10,371 题上给出非最优路径,逐题路径与 GNU Octave 9.4 运行原版 astar_starter.m 的结果完全相同。