如果身处一个迷宫,且看不到出口和入口,且不可翻越迷宫墙。那么,怎样快速的离开迷宫?

可以以这四个条件分类讨论:不能做标记,能做标记,能做离散型标记,能做连续型标记。
关注者
468
被浏览
81,850

24 个回答

详见果壳网:用迷宫困住死理性派?没门!

摘要:

对于事先我们并不知晓全貌的迷宫,或者即使我们能了解到它的全貌(比如一些旅游景点中的迷宫),但置身其中时仍会有“旁观者清,当局者迷”的感觉。这样的迷宫该如何破解呢?
当然,你可以选择神话中忒修斯拉线绳的方法——如果你有足够长的绳子的话,这无疑是最保守和安全的方法。但这里要介绍的几种比它巧妙的多的方法。
首先就是“左/右手法则”方法。顾名思义,就是进入迷宫后,选择一个方向,之后贴着墙壁一直走下去。这是最常见的走迷宫方法,其原理其实在上面“克 里特式迷宫”中也已提到,就在于考察迷宫的拓扑结构,无论围墙是多么的蜿蜒曲折,把它抻直了也就是一根线段而已,迷宫的出入口分别对应着这条线段的两个端 点。我们从入口进(或者选择该条线段上任意一点开始),沿着这条线笔直走下去,当然会走到出口。但这个法则也时常有失灵的时候。因为它的前提是“入口和出 口都在一条线段上”,也就是说这堵墙必须是连通的才行,而如果遇到“回字形”迷宫,出口和入口并不连通,则会出现绕了一圈返回原地的情况。

“左/右手法则” 图像来源:Algorithmus der Woche
但我们可以稍微调整下策略来应对:从出发点出发,碰到墙后向右沿墙走,直到方向和出发时的方向相同,这时直走直到触壁。反复使用此策略即可走出上述 的“回”字形迷宫了。但问题随之又来了,比如在走 G 形迷宫时,采用这个策略就会陷入困境,相反这时“左/右手法则”却是个更好的方法。
实际上,最大的问题是,当你身处迷宫中时,你很难判断出这是一个什么类型的迷宫,因此也就无法采取针对策略走出去。那有没有一种万能的走迷宫策略呢?英国埃克塞特一个叫 Jon Pledge 的 12 岁小男孩就想到了一种现在被称为 Pledge 算法的解决方案。

“回”字形迷宫解决方法与字母G形迷宫困境 图像来源:Algorithmus der Woche
这个算法的策略是这样的:先选择一个“偏好方向”(favored direction),比如东、南、西或北,然后总是尽可能朝这个方向走。当遇到墙时,向右转身沿左侧墙壁继续前进,直到面向偏好方向且转身数的总和为零 ( 初始值为 0,顺时针转身时减 1,逆时针转身时加 1 )为止。此时,继续沿偏好方向向前走。这个算法在“回”字形迷宫中可避开障碍,在字母 G 形迷宫中实际上就变为了“左/右手法则”。虽然 Pledge 算法也不是万能的,但用它已足以应对大多数迷宫了——对于方向感不太好的朋友在野外使用时,可能还需要一块指南针。 此外还可以通过标记每个分岔路口或走过的轨迹来判断哪些是旧路、哪些是新路,从而达到尽量避免走重复路径、尽快找到正确路径的目的。这类的方法在这里就不 赘述了。

引用自:guokr.com/article/71536

  • 深度搜索:尽管往深处走,岔道标记。凡是走过的路不走第二遍。
  • 广度搜索:对出口不深的特别管用——碰见岔道,全都跑一段(到下一个岔道为止)看看哪个好(当然也标记上)然后回到路口选一条走。每个新的岔道都这么干。
  • 左/ 右手定则:碰见岔道永远挑最右的一条走。见到标记过的则次右一条。
  • 不能做标记:用贪心算法加启发式搜索——当然结果是时好时坏,除非你能在脑中进行三维重建。(但是你要有福尔摩斯一般的大脑和007一般的身体。)

A* search algorithm