Skip to content

Commit

Permalink
.
Browse files Browse the repository at this point in the history
  • Loading branch information
ShenMian committed Oct 22, 2024
1 parent 7bc3873 commit 1d283a7
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions src/solver/tunnels.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
# 隧道(Tunnels)

一般情况下, 箱子的移动将产生一个新的状态, 该状态还会包含其他箱子移动所产生的子状态, 这是因为箱子之间可能存在相互影响.
但在部分关卡中, 存在一种被称为**隧道**的结构, 可以将位于隧道内的箱子与隧道外的箱子**隔绝**, 使它们之间互不影响.
一般情况下, 箱子的移动会产生一个新的状态, 该状态可能包含其他箱子移动所生成的子状态, 这是因为箱子之间可能存在相互影响.
然而, 在部分关卡中, 存在一种被称为**隧道**的结构, 它可以将位于隧道内的箱子与隧道外的箱子**隔绝**, 使它们之间互不影响.

![隧道](assets/tunnel.png)

如上图所示, 当上方的箱子位于隧道时, 两个箱子之间不会产生影响. 此时推动隧道内的箱子被视作**无影响力推动**(No influence pushes).

在有 $n$ 个箱子的关卡中, 每一个状态最多有 $n$ 个子状态. 但如果当前状态是无影响力推动, 则无需产生子状态, 应该继续推动箱子, 直到产生有影响力的推动(一般是该箱子离开隧道), 并产生 1 个子状态.
在有 $n$ 个箱子的关卡中, 每一个状态最多有 $n$ 个子状态. 但如是无影响力推动, 则无需产生对应的子状态, 应该继续推动箱子, 直到产生有影响力的推动(即该箱子离开隧道), 并产生 1 个子状态.

## 停放

将箱子推入隧道内的推动是有影响力的, 这意味这将该箱子停放到隧道内, 并为玩家和其他箱子的移动腾出空间.

单个隧道内**最多能停放一个箱子**. 因为隧道中是不存在目标的, 停放多个箱子会产生[畜栏死锁], 进而导致关卡无解.
单个隧道内**最多能停放一个箱子**. 因为隧道中不存在目标, 停放多个箱子会产生[畜栏死锁], 进而导致关卡无解.

隧道内**停放箱子的最佳位置是隧道入口**, 此处的隧道入口指的是距离箱子最近的隧道口.
因为如果停放在隧道的其他位置, 玩家还需要重新返回隧道入口才能离开封闭的隧道, 这意味着玩家需要原路返回, 增加了不必要的移动步数.
Expand Down

0 comments on commit 1d283a7

Please sign in to comment.