您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页基于迷宫问题的算法新解

基于迷宫问题的算法新解

来源:爱go旅游网
2011年2月 渭南师范学院学报 Feb.2011 第26卷第2期 Journal of Weinan Teachers University V01.26 No.2 基于迷宫问题的算法新解 遇娜 (天津市红桥区职工大学,天津300131) 摘要:文章从分析深度优先探测法的设计思路入手,得出了该方法的优缺点,并针对其缺点提出了一个基于八方向 跟踪算法的新方法,并详细介绍了该方法的设计思路及求解方法.不仅为计算机解题提供了一个快捷的算法,也为人工和 机器人破解提供了一个无需记忆的便捷方法. 关键词:迷宫;深度优先算法;探测法;八方向跟踪算法 中图分类号:TP301.6 文献标志码:A 文章编号:1009—5128(2011)02—0o66—03 收稿日期:2010—12--03 作者简介:遇娜(1977一),女,天津人,天津市红桥区职工大学讲师,硕士,研究方向:计算机教学. 0引言 迷宫问题是图论、数据结构等领域中的一个经典问题,源自一个心理学的一个古典实验,在实验中把 一只老鼠从一个无顶大盒子的门放人,在盒子中置了很多墙,盒子仅有一个出口,在出口放置一块奶酪,吸 引老鼠在迷宫中寻找道路以到达出口.这就是我们现在很多人研究的迷宫问题,方法很多,如递归算法、 遗传算法、回溯算法等,但大多数方法都需要记住走过的每一步,以免重复或进入死循环,实现过程比较复 杂.本文介绍的是一种基于八方向的跟踪算法,该算法是一种无需记忆的简便快捷的新方法. 1迷宫问题的经典解法 1.1 构造迷宫 首先用一个二维数组maze[i][j]表示一个M N迷宫,其中1≤i≤m,1≤j≤n,数组元素值为1是表 示该位置是墙壁,不能通行;元素值为0时表示该位置是通路,假设从maze[1][1]出发,出口位于maze [m]『n],移动方向可以是8个方向(东、东南、南、西南、西、西北、北和东北),构造迷宫…如图1所示: 0 1 0 0 0 l 1 0 0 0 1 l l l l 1 O O 0 1 1 O 1 1 l 0 O 1 1 l 0 l l O O 0 0 1 1 l 1 0 O 1 l 1 1 O 1 l l 1 0 l l 0 1 1 0 0 1 l O l O O 1 O l 1 1 0 1 1 0 0 0 1 l O 1 1 l O 1 1 O l 0 0 O 1 1 l l 0 0 l 1 l 0 l l 1 l O O 1 l O l l 0 1 1 1 l 1 0 1 l 1 O 0 O l l 0 1 1 0 0 0 0 0 0 0 1 1 1 1 l O 0 O 1 l 1 1 0 O l O O 1 1 l l 1 0 1 l l 1 0 口 图1迷宫图 1.2设计思想 迷宫中的任一位置可由数组的行、列序号i、j来表示,而从[i][j]位置出发,可能行进的方向有如下情 况:若[i][j]周围位置均为0值,则可选8个位置中的任一个作为下一方向,将这8个方向分别记为E (东)、SE(东南)、S(南)、sw(西南)、W(西)、NW(西北)、N(北)、NE(东北),但并非每一个位置都有8个 相邻的位置,如果[i][J]位于边界上,即i=1或i=m,j=1或j=n,则相邻位置可能是3个或5个,为了避 免检查边界条件,将数组四周用值为1的边框包围起来.由于迷宫中[i][j]有多个行进方向可选,这里我 2011年第2期 遇娜:基于迷宫问题的算法新解 ・67- 们规定搜索的次序是从东(E)沿顺时针方向进行,为了简化问题,规定[i][J]的下一步位置的坐标是[X] [Y],并将这8个方位上的x、Y坐标的增量预先放在一个结构数组move[8]中,该数组的每个分量有两个 域dx和dy,例如要向东走,只要在J值上加上dy就可以得到下一步位置的[X][Y]值为[i][j+dy],搜索 方向的变化只要令方向值dir从0增至7便可以从move数组中得到从[i][j]点出发搜索到得每一个相邻 点[X儿y],为了防止重复走原路,规定已经走过的位置将原值0改为一1,当整个搜索结束时再将所有的 一1改回0,从而恢复迷宫的原样.也就是说,在某个方位上的maze[X][y]=0表示可通行,按照顺时针 的原则走一步,若maze[X][Y]=1表示不可通行,须换个方向再试,直至8个方向全试完,说明无路可走, 需退一步,在上一步的下一个方向重新开始探测,因此需设计一个栈来记录所走过的位置和方向 (i,J,dir).当退一步时,就从栈中退出一个元素,以便在上一个位置的下一个方向上探测,如又找到新的行 进方向,则把当前位置和新方向重新进栈,并走到新的位置.如果探测到X=m,Y:n,则已经到达迷宫的 出口,可以停止检测,输出存在栈中的路径,若在某一位置的8个方向上都堵塞,则退回上一步,继续探测, 如果已退到迷宫的人口,则表示此迷宫无路径可通行. 1.3优缺点分析 上述解法的核心是采用深度优先的探测方法,按照顺时针顺序对8个方向进行一步一步的探测,直至 找到迷宫的出口.迷宫之所以被称为是迷宫,是因为对刚进入迷宫的个体而言是未知的,不知通路在何 方,因此用深探法来搜索通路更加合适.尽管深探法不能保证找出最佳路径,但对于走出迷宫为目的的迷 宫求解,能找到出口已经足够了.但是,深探法的每步一记对计算机而言不是什么难事,但对一个变化复 杂的迷宫来说,记忆堆栈到底需要多大?要想给出一个精确的答案恐怕也是棘手的问题.若是一个迷宫 无法数字化,边走边记的方法就更难实现了.现实中的迷宫往往是没有数字化的,甚至是无法数字化的, 若由人或机器人来走迷宫,那就更困难了,因此,有必要对深探法加以改进 基于八方向跟踪算法的迷宫 问题求解就是在此基础上提出来的. 2八方向跟踪算法 2.1 显艮踪准则 一般情况下,物体在灰度图像中呈现两种形态:其一为物体亮,背景暗,即物体的灰度比背景高;其二 为物体暗,背景亮,即物体的灰度比背景低.但迷宫可以用二值图像来表示,若0代表通路,1代表障碍 物,则在迷宫跟踪时,物体(迷宫)是暗的,符合物体的第二种形态,故有如下跟踪准则: V≤Tgray=0 (1) 其中V为被跟踪点的灰度值,Tgray为跟踪的灰度门限.由于是二值图像,灰度值非0即1,故跟踪 准则中的“≤”也可以改为“=”,此时,跟踪准则可改作: V=0 (2) 即判断被跟踪点是否为通路. 2.2 方向图 跟踪时 还需要一个指导跟踪方向的方向图,八方向跟踪法的方向图如图2所示.根据该方向图, 以(1)式或(2)式为准则,就可进行八方向跟踪. 2.3跟踪算法 (1)跟踪原则.八方向跟踪的原则是:若满足准则,则前 进一步,并向左转90。开始试探下一步(此举确保跟踪在最外 层),若不满足准则,则按八方向顺时针试探,即每步向右转 45。,直至满足准则.简而言之,是通路前进并向左转9O。,是 障碍物向右转45O. (2)跟踪算法.根据以上原则,并结合图1所示的迷宫, 可以得到如下算法. 步骤1:根据迷宫人口选择跟踪起始点和进入的初始方 向. 步骤2:以(2)式为准则,判断被跟踪点是否为通路;若满 足准则,则在图2所示的方向图中按逆时针走向走两格试探 (i+i,j> 选择下一点,即当前的走向Di与下一点可能的走向Di+1 图2八方向跟踪算法的方向图 -68・ 渭南师范学院学报 第26卷 有如下式所示的关系: Di+1=Mod(Di+2,8) (3) 上式中的函数Mod(X,Y)代表求X对y的余数. 步骤3:若Di+1指向的那一点满足准则,则该点为下一点,转步骤4;否则按顺时针走向走一格继续 试探选择下一点,即将Di+1代入下面(4)式的Di中,重复步骤3. Di+1=Mod(Di+7,8) (4) 步骤4:当前跟踪点是否走到迷宫出口,即是否满足结束条件;若是,则结束跟踪;否则转步骤2,继续 跟踪. (3)跟踪结果表示.八方向跟踪算法的跟踪结果用Freeman链码来表示,它是一串跟踪时走通过程的 方向码. 2.4左跟踪和右跟踪 上面描述的八方向跟踪算法始终沿着图形边界的左边走,故称之为左跟踪,与之相反的应该还有右跟 踪.可想而知,只要在算法1中将(3)式和(4)式分别改为: Di+1=Mod(Di+6,8) (5) 和 Di+1=Mod(Di+1,8) (6) 并且顺时针和逆时针对调,即可实现右跟踪. 3 用八方向跟踪算法求解迷宫问题 (1)用左跟踪算法求解.现在用左跟踪方法,以从左上角进入,开始跟踪,经过如下Freeman链码所示 的73步:{2132270223322121 1 120063556710734535566701015456667071 123354271210123223100}.从迷 宫的右下角走出谜宫. (2)用右跟踪算法求解.若用右跟踪方法,同样从左上角进入,开始跟踪,只要经过Freeman链码所示 的40步{2173217076002176031265322432100214322210}. 4 结论 本文从迷宫问题人手,分析了传统求解迷宫问题经典的深度优先探测法的设计思路及优缺点,并针对 深探法的弊端给出了迷宫问题的另外一种求解算法——八方向跟踪算法,并通过理论和实际论证该算法 实现简便,求解过程无需过多记忆(需要给出通路除外),避免了深探法的诸多问题,特别适合机器人和 人类破解迷宫. 参考文献: [1]严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,1996.85—90. [2]廖国勇,王广超.用遗传算法解迷宫问题[J].华东交通大学学报,2006,(2):138—140. [3]涂海丽.求迷宫中从入口到出口的路径的算法及实现[J].中国科技信息,2008,(23):54—56. [4]朱素英.迷宫问题的图论解法探讨[J].湖南人文科技学院学报,2006,(3):73—75. [5]孙秋冬.基于八方向跟踪算法的迷宫问题新解[J].计算机应用与软件,2005,(8):103—105. [责任编辑牛怀岗] The New Algorithm Based on the Maze Problem YU Na (Tianjin Hongqiao Distirct Staff and Workers University,Tianjin 300131,China) Abstract:By analyzing the depth—first exploration of design ideas,the paper obtains the advantages and disadvantages of this method,and for its shortcomings it proposes a new method based on the direction of eight tracking algorithm to describe in detail the design idea of the method and its solution.It provides a quick problem—solving algorithm for the compu ̄r and also provides a con— venient method without memo ̄for artiifcial cracking and robot cracking. Key words:maze;depth—fisrt algorithm;detection method;eight direction tracking algorithm 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务