登陆后访问



H
I
S
T
O
R
Y

经典证明:推箱子游戏所需步数可达指数级

今天在写一个稿件时又翻阅了一下Erich Friedman的Math Magic,发现了一个有趣的东西——场地大小为n的推箱子游戏所需要的最少步数最坏情况是多少。下面这个构造说明,最坏情况至少也是指数级的。
首先,让我们来看看该构造中的一个基本单元:

图1
这个构造中共有6个箱子,且它们都已经在目的位置上了。不难看出:
1. 假如你人在这个区域之外,你只可能从右上角的出入口进入该区域,从其它地方进去都会导致死局
2. 从右上角进入后你只能往下走,进入1区;走左边的话直接导致死局
3. 你可以通过2区前往3区,但若从3区左上角的出口出去了,则2区动过的箱子将永远无法回到原位(除非你原路返回)
4. 你可以通过2区前往3区,并把3区左边的那个箱子左移一格,再返回2区;这样下次你再从右上角进入该区域时便可以直接经过3区从左上角出去
5. 最后你只能从4区离开

图2
把n个这样的构造串联起来,从右至左分别记作A_1, A_2, …, A_n。再在A_n左边附加一个只进不出的机关和一个需要移动一下的箱子。因此,整个图一共有6n+2个箱子,只有一个箱子不在目标位置。你的任务就是从A_1的最右边一直杀到A_n的最左边,并且保证此时A_1到A_n的所有箱子仍在原位上;然后进入A_n的左上角那块附加区域,把那个箱子推进去。
不难看出,这个构造的唯一解便是从A_1的右上角进去,经过A_1的1区和2区,把A_1左上角的那个箱子向左推一格,然后从A_1下方出来;再次从A_1右上角进入,直接左行并从左上角出去,来到A_2的右上角;然后绕行A_2的1区和2区,把A_2左上角的箱子向左推一格,再从A_2下端出来。但注意到,此时A_1的状态又被还原了,你又无法直接从A_1左上角出去了;为了进入A_3,你不得不又重复刚才做的事情,把A_1左上角的箱子左移,出去之后再进来一遍。而进入A_3后,A_1和A_2的状态又都被还原了,于是你又不得不递归地处理A_1和A_2。因此,整个棋局的移动的步数显然是指数级的。

 

声明:文章转自Matrix67博客,版权归原作者所有,转载仅供学习使用,不用于任何商业用途,如有侵权请联系删除,谢谢。

相关文章

奇妙的数字:巧合数

Posted by - November 10, 2017 1787
世界上,无时无刻不在发生着一些看似偶然的巧合,有让人遗憾的,也有让人庆幸的,在数学上,也有很多的巧合。

数学之美|填色游戏

Posted by - November 09, 2017 2092
人们提起数学之“美”时常意指其抽象涵义,罗素称之为“朴素冷峻之美……庄严纯净,能够达到严格的完美”。然而,人类也一向从数学中发现审美上的...