海战棋搜索策略
高水平的海战棋有两档节奏:先搜索一艘舰船的第一次命中,再不断追击直到它沉没。把两件事都做得高效,一局平均可以从约九十炮的乱打降到五十炮左右。
先做奇偶扫描
最小的舰船长 2 格,所以每艘舰船至少覆盖棋盘格两种颜色中每种的一格。只向其中一种颜色开火,就不可能完全漏掉某艘舰船,同时能跳过一半的格子。先覆盖一种颜色,一旦命中就切换到追击。
利用概率密度
还有多艘舰船未沉时,优先选择能容纳最多种舰船摆法的格子。中间的格子比角落被更多摆法覆盖,紧挨已知未中格的格子被覆盖得更少。内置 AI 会统计所有幸存舰船的每一种合法摆法,并向最“热”的格子开火;你也可以用同样的思路,排除放不下任何剩余舰船的格子。
锁定轴线
命中后,向相邻的四个格子开火。两个命中连成一线时,就知道了舰船的方向,沿这条线向两端追击直到它沉没。如果这条线走到头舰船还不完整,缺少的格子就在第一次命中的另一侧。
舰船沉没之后
舰船沉没后,它的格子都已查明,周围放不下其他舰船的格子可以跳过。结合剩余舰船的长度回到奇偶扫描;例如驱逐舰已经沉了,剩余最小的舰船就是 3 格,扫描可以更稀疏。
打好残局
只剩一两艘舰船时,严格的奇偶扫描可能在角落留下空隙。改为覆盖所有仍能放下最后一艘舰船的未知格,这样它就无法躲在你跳过的格子里。