啊,这是一篇长~~~长的回答。
设计迷宫这件事儿,本来并非让我情有独钟。不过前几天,某个节目组找到我,希望我来给选手们设计一个有难度的迷宫,我觉得这件事儿有点意思,就稍稍研究了下,结果发现,还真有点意思。
说到迷宫,首先映入我脑海的,是《盗梦空间》里的一个情节:
盗梦者 Cobb 为了考察候选的筑梦师 Ariadne 的能力,让她在 2 分钟内画出一个需要用 1 分钟来解出的迷宫。Ariadne 足足用了 3 次机会才画出来。前两次,她分别花了一层和两层的方形迷宫,看起来有模有样的,结果却都被 Cobb 秒杀。但在第 3 次,Ariadne 画的迷宫看上去很简洁,却把 Cobb 难住了。迷宫是这样的:
这是一个环形迷宫。(P.S. 这个迷宫无解,此乃《盗梦空间》的一大bug)
《盗梦空间》的这则小插曲,告诉了我一些关于迷宫的深刻的道理:
【1】迷宫的难易不完全取决于复杂性
看上去复杂的迷宫,其实不一定难,可能“干扰路线”的干扰性很弱;而看上去简洁的迷宫,如果设计精巧,也可以让人晕头转向。所以一味地扩大迷宫图的大小,让其看起来密密麻麻,但如果不能有效利用整个迷宫图,就未必能让迷宫变得更难。
【2】迷宫设计时间与解出时的间比值应该尽可能小
如果给予足够多的时间,人人都可以画出一个足够复杂的迷宫。但如果你花了 10 个小时画出来的迷宫,被人用 5 分钟就解出来了,那这个迷宫并不比用 2 分钟设计,却要用 1 分钟解出的迷宫更好。
当然,对于迷宫的设计,还应当有一些其它显而易见的准则:
【3】迷宫的解应当是唯一或者极少的
在本题下,
Lai朱应的回答很酷,我也点了赞,但是仔细研究可以发现,迷宫并没有真正意义上的死路,通过好几处从岔路走也可以通,在
匿名用户的回答中指出,很多岔路本质上还是“捷径”:
在现实中,这样的“无死路”迷宫可能会有点绕,但是在平面上,尤其是在标记已走路线的情况下,这可能反而会降低迷宫的难度。
迷宫中多出现环形路线确实会加大迷惑性,但这些最好设置在岔路上,在正确路线上设计环线一不小心就降低迷宫难度了。
【4】迷宫不容易被固定的方式解出
在平面上的、方方正正的迷宫,最被人诟病的一点是:如果迷宫的入口和出口均在外部,那么只要你贴着墙走,总能找到正确的路线。如果身边有工具的话,瞬间就可以找到出口。比如,在
于康的回答中,用程序设计出的迷宫看起来很复杂:
然而,只要你身边有一个“画图”工具,用简单的“染色法”(把相连的墙壁染成同一种颜色),就可以一下子看清楚正确路线,把这个迷宫“秒杀”:
在“染色法”下,再令人迷惑的“干扰路线”都会立刻无影遁形。
【5】“倒走迷宫”和“正走迷宫”的难度相当
很多人在设计迷宫时,总想着在入口附近设计大量岔路,但却没在出口附近设计足够多的岔路。这使得玩家在解题时倾向于“倒走”迷宫,从出口往入口找路线让迷宫变得十分简单。这在设计迷宫时是值得注意的。
以上五条准则,是我设计迷宫时需要考虑的问题。
********************
那么,如何设计一个有趣、简洁,并且有一定难度的迷宫呢?
一个容易想到的思路是,将迷宫从二维扩展到三维。
但三维迷宫的设计并不容易,其中一个困难是:如何让它 易于展示 呢?
众所周知,在三维迷宫中,《仙剑奇侠传三》中的迷宫的难度一直被人津津乐道,但它的难度很大程度上源于它的动态性质,比如用复杂的操作步骤解锁机关等。迷宫的静态性质并不复杂,三维迷宫本质上只是多层迷宫,仅仅是将很多个二维迷宫拼在了一起罢了。
这时,我手中的魔方给了我带来了一些灵感。
与此同时,我也受到了《异次元杀阵》的启发:
在一个小立方体组成房间里,我们可以朝 上、下、左、右、前、后六个方向行走,如果把这一个个小立方体堆成一个像魔方一样的大立方体,并且在小立方体里限制一些方向的通行,不就成为一个三维迷宫了了吗?
嗯,就叫它 魔方迷宫 吧!
**********
P.S. 在淘宝上,的确有一种叫“魔方迷宫” 的玩意儿,如下图所示。不过,虽然它 看起来是立体的,但其实只利用了立方体的六个面而已,没有利用到内部,不是真正意义上的“三维迷宫”。
**********
那么,如何设计 魔方迷宫 呢?
【1】
首先,为了方便描述,给魔方标一下号:
图中是一个三阶魔方。每个小立方体最多有 6 个门,除边缘外,最多有 54 个门。
更一般地,对于 n 阶魔方,除边缘外,至多有个门。 (留作习题)
【2】
接下来,我们可以分层来描述迷宫。一个简单的例子如下图所示:
三个九宫格代表每一层迷宫的平面图。
“” 表示可以通过该格连接到下一层,“”表示可以通过该格连接到上一层。
我们的目标是,从 1 号格进入,最终从 20 号格出去。
这是一个看起来特别简洁的迷宫(仅仅占用了 27 个单位,从占用的空间上来看,比传统的迷宫要少得多),但找到正确路线却并不是特别容易。
聪明的你,试试看吧?
经过认真思考后,你会发现,这个迷宫也不是太难。
正确的路线是:
1—2—3—6—5—14—17—26—25—16—13—22—19—20。共经过 14 个小立方体。
主要干扰路线有:
5—8—7—4,14—15—24—25—21/23/27
这个迷宫的干扰项还是比较弱的,所以不算太难。
【3】
如何画这个迷宫呢?
很简单,只有三个步骤:
(1)画出一条复杂度适中的正解路线
路线过于简单会降低迷宫难度,过于复杂的话会限制岔路,同样会降低迷宫难度。
本题的正确路线是:1—2—3—6—5—14—17—26—25—16—13—22—19—20
从层数上讲,是 从 1—2—3—2—3—2,有一定的复杂性。
(2)设计岔路,应该有一定的长度
为了保证解答的唯一性(迷宫设计准则第 3 条),设计岔路时,要注意避开正确路线。
并且要注意,从入口开始的岔路和从出口开始的岔路不能相互连接!必须让所有岔路都成死路或者自循环的情况。
之所以说这个迷宫并不是很难,是因为限于迷宫的规模,岔路都不是特别长,并且从出口往入口走,迷宫会简单许多,这违反了迷宫设计准则第 5 条。
(3)检查迷宫,确保没有不能到达的“死格”
考虑到迷宫设计准则的第 1 条,我们应该充分利用迷宫的空间,让迷宫的每一格都能到达。这在二维迷宫中不是问题,但在三维迷宫中则要动一下脑筋。
综上所述,掌握了一定的方法,画一个三阶的魔方迷宫可能只要 3 分钟,但它的正解好像也不是显而易见的,解开它或许也需要 1 分钟,这就符合了迷宫设计准则的第 2 条。考虑到这样的迷宫也不易用固定模式解答,所以也符合迷宫设计准则的第 4 条。真是一个设计精妙的迷宫啊!
也许有人觉得,这个魔方迷宫并不难,但要知道,这只是一个三阶的魔方迷宫,而且作为示例,它出得并不难(比如倒走就比较简单)。如果扩大阶数,比如,五阶、七阶,甚至十阶,迷宫占有的空间依然不大,但复杂度却大大增加了。保守估计,一个设计精巧的七阶的魔方迷宫,或许能折腾一个普通人 20 分钟以上呢!
要不,先来热个身吧!
我用十几分钟画了一个四阶的“魔方迷宫”, 聪明的你,需要用多久来解开呢?
* 这个迷宫新增了两个概念:
** 加大难度:如果要求你从入口到出口后,再从出口回到入口,你会怎么做呢?
********************
【如需转载(分享链接不论),请务必联系作者】