移动规则演示

4 与 8 邻域,哪些斜步被禁止、为什么。

用途:直观展示两种移动规则下每个格子可以走到哪里。

选中格 (13,13):4 种合法走法
  • ↑ 上不可走:目标格是障碍
  • ↓ 下可走代价 1
  • ← 左不可走:目标格是障碍
  • → 右可走代价 1
  • ↖ 左上不可走:两侧正交格都是障碍(禁止穿角)
  • ↗ 右上可走代价 √2
  • ↙ 左下可走代价 √2
  • ↘ 右下不可走:目标格是障碍

8 邻域按仓库的规则:斜走代价 √2,只有当它两侧的两个正交格都是障碍时才禁止;只挡住一侧可以走。示例中 (13,13) 的左上方向被两侧障碍夹住,右上方向只挡一侧所以可走,右下的目标格本身是障碍。

  • 可走
  • 不可走

规则

  • 4 邻域:只能上下左右走一格,每步代价 1。
  • 8 邻域:还可以斜走一格,代价 √2。斜走只有在它两侧的两个正交格都是障碍时才禁止(不能从两块障碍的夹角里穿过);只有一侧是障碍时可以走。目标格本身是障碍或出界时当然也不能走。

点网格上的任意格子,侧栏列出 8 个方向各自能否走、代价多少、不能走的原因;切到「点击:切换障碍」可以改地图,自己构造边角情况。

数据来源

判断逻辑与项目仓库一致:8 邻域规则取自 src/matlab/plan8_ref.m 和 zig/src/conn8.zig(提交 fa87b65),方向顺序为上、下、左、右,再四个斜向。站点测试用同一个判断函数核对了全部验证题上 8 邻域求解得到的路径。演示在浏览器里现算,不读取数据文件;载入验证题时才按需读取数据包。

本页目录