- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
老鼠走迷宫算法分析
PAGE
PAGE 7
一种电脑鼠走迷宫的算法
电脑鼠走迷宫的算法
1 探测策略
电脑鼠走迷宫可以采用全迷宫探索策略,即将迷宫的所有单元均搜索一次,从中找出最佳的行走路径。这种策略需要有足够的时间或探测次数,但在IEEE竞赛规则中每场竞赛只有15分钟的时间,因此是不可能的。另一种方法是部分迷宫探索策略,即在有限的时间或探测次数下,只探测迷宫的一部分,从中找出次最佳的路径,显然只能采用这种策略。
电脑鼠在一巷道内行走,如果最后无路可走,则该巷为死巷。电脑鼠在任一单元内,可能的行走方向最多只有三个(前、左、右),如果有二个或二个以上的可能行走方向,称为交叉,遇有交叉时,由于有多个可以行走的方向,在行走方向的选择上,可有下面的几种选择法则:
右手法则:遇有交叉时,以右边为优先的前进方向,然后是直线方向、左边方向。
左手法则:遇有交叉时,以左边为优先的前进方向,然后是直线方向、右边方向。
中左法则:遇有交叉时,以直线为优先的前进方向,然后是左边方向、右边方向。与此类似的还有中右法则。
乱数法则:遇有交叉时,取随机值作为前进方向。
向心法则:由于终点在迷宫的中心,遇有交叉时,以向迷宫中心的方向为优先的前进方向。
2 标记
为了记忆迷宫的详细信息,需要对迷宫单元的位置进行线路标记。全迷宫共有16×16个单元组成,可采用二维坐标方式标记,即用每个单元的XY坐标表示,如起点可标记为(0,0),终点为(7,7)。此外,还需要对迷宫单元的可行进方向进行标记,可采用绝对方位或相对方位二种方式。
绝对方位:这是一种与电脑鼠行进方向无关的标记方式,以一个四位的二进制数,分别表示“东”﹑“西”﹑“南”和“北”四个方向。以1表示允许行进(无墙壁),0表示不允许行进(有墙壁)。
相对方位:这是一种与电脑鼠行进方向有关的标记方式,以一个三位的二进制数即可实现标记,分别表示“前”“左”“右”, 以1表示允许(无墙壁),0表示不允许(有墙壁)。
3 阻断
在电脑鼠试跑过程中或在最后冲刺时,需要对部分路径进行“阻断”,即在发现某条路径是死路(只有入口而无出口)时,在该路径的入口处(一般是交叉点)设置标记,即将入口的线路标记由1改为0。
4 试跑
试跑是获得迷宫地图(各单元路线标记)的唯一方法,因而应在规则允许的情况下,尽可能多的获得迷宫信息,为最后的冲刺准备尽可能多的信息。在试跑过程中,要对经过的单元进行线路标记,同时还要选择一个合适的探测策略。
下面以1/4迷宫为例进行说明。假设迷宫图布局如图三所示,共有8×8=64个单元,起点在左下角(Start),终点在右上角(End)。选用一个8×8的矩阵map保存迷宫地图信息,矩阵的每个元素为1个字节,高4位表示探测到的可行进路径,以绝对方位标记,次序为“北”﹑“东”﹑“西”﹑“南”。低4位记录自起点的交叉点的个数。探测策略采用右手法则,在初始状态,矩阵map各元素的值均为FFH,00H表示死巷。
图三 1/4迷宫
在探测过程中,如果下一个可行进的单元已经探测过(对应的矩阵元素值非00H或非FFH),只有在发现死巷时,才对map中的数据进行修改。对于其它情况,无论探测结果与矩阵中对应元素存储的信息是否一致,均不修改存储的信息。对于复杂的迷宫,往往不能仅使用一种探测策略,而要综合考虑,如增加向心法则。当发现交叉点时,应将该单元坐标和线路特征保存(如入栈),再分析可行的下一个单元是否已经探测过,如果均未探测过,则根据探测策略,选择一方向进行探测。如果部分单元已经探测,则选择未被探测的单元进行探测。遇有死巷,应返回最近的交叉点,同时将死巷阻断,修改入口单元的相应数值。
图四为首次探测时电脑鼠的行走路线示意,电脑鼠在探测过程中,将获得行走过的各单元的线路特征,表一为电脑鼠探测到(5,0)单元时的二维表(以十六进制表示,高4位为线路标记,低4位为交叉点数)。
图四 首次探测行走路线
7FFHFFHFFHFFHFFHFFHFFHend6FFHFFHFFHFFHFFHFFHFFHFFH530H50HFFHFFHFFHFFHFFHFFH490H90HFFHFFHFFHFFHFFHFFH390HD1HFFHFFHFFHFFHFFHFFH290H90HFFHFFHFFHFFHFFHFFH190HB2HFFHFFHFFHFFHFFHFFH080HC0H60H60H60H60HFFHFFH01234567
表一 探测到(5,0)时的map二维表
从图四可以看出,该巷为一死巷,当电脑鼠探测到(7,0)时,发现是死巷,将按原路返回到最近的交叉点(1,
文档评论(0)