电脑鼠算法

合集下载

电脑鼠报告

电脑鼠报告

西南交通大学课程设计微机硬件综合课程设计(课程代码:0473007)年级: 本科2010级姓名: 代雷波(20103190)刘湘(20103194)专业: 网络工程指导老师: 蒋朝根二零一三年五月目录第1章背景和意义 (3)第2章系统方案设计 (4)第3章硬件设计 (5)3.1电脑鼠基本硬件组成 (5)3.2电脑鼠基本动作 (7)第4章软件设计 (9)4.1电脑鼠软件设计概要说明 (9)4.2等高图制作模块 (11)4.3冲刺模块 (12)4.4转弯模块 (12)4.5搜索模块 (13)4.6迷宫地图相对方向与绝对方向的建立 (13)4.7墙壁资料存储 (16)4.8电脑鼠搜索策略 (16)第5章结论 (18)参考文献 (19)附件: (20)第1章背景和意义电脑鼠可看作是一种具有人工智能的小型机器人,依照比赛规则,当电脑鼠放入“迷宫”起点,按下启动键之后,它就必须自行决定搜寻法则并且在迷中前进、转弯、记忆迷宫墙壁资料、计算最短路径、搜寻终点等功能。

电脑鼠结合了机械、电机、电子、控制、光学、程序设计和人工智能等多方面的科技识。

国际电工和电子工程学会(IEEE)每年都要举办一次国际性的电脑鼠走迷宫竞赛。

首场电脑鼠迷宫竞赛1979年于纽约举行,1991年以来,每年都有世界级的比赛。

2007年,国内开始举行IEEE标准电脑鼠走迷宫邀请赛,自举办以来高校参赛踊跃,许多大学还开设了“电脑鼠原理和制作”选修课程。

电脑鼠走迷宫竞赛具有一定难度,是一项富有挑战性和趣味性的比赛。

电脑鼠可看作一个集多项工程学科知识于一体的小型系统,成功的设计者通常都是合作团体。

他们必须考虑电子、电气、机械以及计算机各方面的问题,重量、速度、功耗、传感技术重心以及程序各方面都是设计中需要决定和综合考虑的因素。

电脑鼠结合了多学科知识,对于提升我们的动手能力、团队协作能力和创新能力,促进课堂知识的消化和扩展自身的知识面都非常有帮助;另外成立小组合作参赛,不仅使我们学到了知识,而且加强了同学之间的交流,交际能力语言表达能力等也得到了锻炼和提升;最后电脑鼠走迷宫竞赛极具趣味性,容易得到学生的认同及参与,并能很好的激发和引导学生这方面的兴趣和爱好,为继续参加比赛和深入学习提供了良好的条件。

电脑鼠走迷宫路径规划及控制方法的研究

电脑鼠走迷宫路径规划及控制方法的研究

电脑鼠走迷宫路径规划及控制方法的研究2011年 6 月2 日摘要电脑鼠是使用嵌入式微控制器、传感器和机电运动部件构成的一种微型机器人,可以在迷宫中自动记忆和选择路径,快速地达到所设定的目的地。

电脑鼠走迷宫竞赛是一项具有一定难度、富有挑战性和趣味性的比赛。

本论文首先介绍了电脑鼠的起源与发展,分析了电脑鼠的硬件组成和工作原理,在此基础上重点讨论了电脑鼠软件的设计与实现,具体包括:等高图制作、电脑鼠冲刺、电脑鼠转弯、电脑鼠搜索、相对方向与绝对方向转变、墙壁资料存储和电脑鼠搜索策略。

通过对电脑鼠自动穿越迷宫过程,综合嵌入式专业的电路设计,传感器控制,单片机程序开发和算法研究等多学科知识的研究,使我熟悉掌握嵌入式应用开发的全过程。

最后对电脑鼠研究过程中遇到的问题进行了讨论与总结。

关键词:电脑鼠;迷宫的算法;路径规划;电机;红外感应器ABSTRACTThe micromouse is a typical micro robot, which inclueds embedded microcontroller, sensors and mechanical motion. The micromouse can choose a best and fast way to the destination in the maze, with automatic memory. The contest of micromouse go through a maze is a difficult but challenging and interesting game. This Research-based Curriculum focuses on the hardware design of micromouse and the maze algorithm. The research includes the knowledge of circuit design, the embedded microcontroller program and algorithms such.This paper firstly introduces the origin and development of micromouse. Then it analyzses the micromouse's hardware composition and working principles. After that we discuss the design and implementation of the software. It includes the maze map, absolute orientation, search strategy and optimal path method of the research. At last, the problems during the studying process are discussed and summarized.Keywords: Micromouse,;Flood Algorithm;Path Planning;Motor;Infrared目录第一章绪论 (1)1.1电脑鼠介绍 (1)1.2电脑鼠的国内外现状 (2)1.3电脑鼠比赛简述 (3)第二章迷宫的算法 (4)2.1迷宫坐标和方向 (4)2.2迷宫搜寻法则 (5)2.2.1基础的搜寻法则 (6)2.2.2中心搜寻法则 (7)2.3洪水算法简介 (8)2.4最优路径算法 (8)2.4.1等高图的制作原理 (9)2.4.2转弯加权的等高图 (10)2.5模拟最佳路径 (10)第三章运动控制 (12)3.1电脑鼠原理 (12)3.2底层驱动程序及顶层算法程序 (13)3.2.1两相四线制步进电机驱动时序 (13)3.2.2步进电机的加减速控制 (14)3.3电脑鼠转弯 (15)3.4电脑鼠运动状态的控制 (18)3.4.1电脑鼠姿势修正 (18)第四章软硬件原理 (21)4.1电脑鼠的硬件构造和特点 (21)4.2原理说明 (23)4.2.1电机驱动电路 (23)4.2.2红外线接收传感器 (24)4.2.3按键电路 (26)4.2.4处理器 (27)4.2.5机械结构 (29)4.3软件设计 (30)4.3.1软件开发环境 (30)4.3.2电脑鼠的主要程序 (33)第五章总结与展望 (34)参考文献 (36)附件 (38)附件1程序 (38)附件2英文文献 (43)附件3中文翻译 (54)谢辞 .............................................................................................. 错误!未定义书签。

死路排除算法_渗透法_待翻译_华已改

死路排除算法_渗透法_待翻译_华已改

电脑鼠走迷宫大赛探索过程算法优化研究——死路排除算法——死区域算法0摘要电脑鼠走迷宫大赛是由国际电工和电子工程学会(IEEE)举办的人工智能领域的一项国际性赛事,集机械、电子、控制、光学、程序设计和人工智能等多方面科技知识于一体[1],具有很高的知名度。

迷宫算法的优劣直接影响比赛的最终成绩。

本文从经典迷宫算法入手,先后提出了能排除单行当列死路的“死路排除算法”和能够排除任意形状死区域的“渗透法”,然后通过测试验证两种改进算法的优越性。

改进算法的核心思想是通过已经获得的迷宫信息排除不包含最短路径信息的死区域。

同时,文中创造性的将“渗透思想”用于迷宫算法当中,很好的实现了死区域的判定与排除。

与经典算法相比,改进算法在时间、空间方面都有良好的优化效果。

1背景简介电脑鼠走迷宫大赛是国际电工和电子工程学会(IEEE)每年都会举办的一项国际性赛事,于1972年由美国机械杂志发起。

比赛中的电脑鼠是一个小型的由微处理器控制的机器人车辆,在复杂迷宫中具有译码和导航功能。

该比赛自推出以来,受到了世界各国师生的青睐。

2007年和2008年,上海市计算机学会率先在中国主办了两次IEEE标准电脑鼠走迷宫邀请赛(长三角地区),有三十多所院校参加,反响强烈。

2009年比赛范围扩展到全国,共有9个赛区的52所高校参赛[2]。

1.1电脑鼠走迷宫大赛规则[3]电脑鼠的基本功能是从起点开始走到终点,这个过程称为一次“运行”,所花费的时间称为“运行时间”;电脑鼠从第一次激活到每次运行开始所花费的时间称为“迷宫时间”;电脑鼠在比赛时手动辅助的动作称为“碰触”。

竞赛使用这3个参数,从速度、求解迷宫的效率和电脑鼠的可靠性三个方面来进行评判。

电脑鼠的得分是通过计算每次运行的“排障时间”来衡量的,即将迷宫时间的1/30加一次运行时间;如果未被碰触过,则再减去10s(奖励时间),这样得到的就是排障时间。

电脑鼠在迷宫中停留或运行的总时间不可超过15min,在限时内允许运行多次。

电脑鼠软件系统关键技术研究(1)

电脑鼠软件系统关键技术研究(1)

Microcontrollers &Embe dded Systems 2011年第5期ww w .mesne 电脑鼠软件系统关键技术研究**基金项目:淮阴工学院青年教师科研基金(项目编号:2917372)。

李亚洲,严石(淮阴工学院电子与电气工程学院,淮阴223003)引 言电脑鼠(micro mouse)是一个由微处理器控制的集感知、判断、行走功能于一体,能够自动寻找最佳路径到达目的地的微型机器人。

电脑鼠走迷宫竞赛就是让电脑鼠在迷宫中从起点以最短的时间走到终点的过程[1]。

电脑鼠是集软件和硬件为一体的系统。

电脑鼠的软件系统是电脑鼠的大脑,需要具备获得迷宫信息、遍历迷宫、计算最优路径等功能。

同时,在没有硬件支持的情况下,电脑鼠软件系统应能够模拟迷宫,以验证算法的正确性。

1 总体设计根据电脑鼠比赛的要求,电脑鼠要遍历迷宫,以获得迷宫信息;电脑鼠要根据迷宫信息,获得最优路径;电脑鼠要根据最优路径,实现最终冲刺。

电脑鼠软件系统的设计包括迷宫表示、迷宫遍历、最优路径查找等模块。

2 电脑鼠软件系统关键技术2.1 迷宫表示电脑鼠迷宫由16 16个正方形单元格组成,单元格大小为18cm 18c m 。

俯视迷宫,每个单元只有4条边,每条边只能有两种状态 墙壁或通路。

针对这种情况,可以使用四维数组或者结构体表示单元格的4条边,用2个数字表示迷宫单元每条边的2种情况。

对于迷宫,可以使用坐标表示每个单元的位置。

假设电脑鼠置于起点,电脑鼠正对通路,电脑鼠正前方为正Y 方向,电脑鼠右方为正X 方向。

这样,对于迷宫中的每个单元格都对应一个确定的坐标。

设计时,可采用坐标值作为二维数组的索引。

2.2 迷宫遍历电脑鼠要尽可能遍历迷宫中每一个单元格,为寻找最优路径提供足够的信息。

对于电脑鼠探测墙壁,通过传感器得到的是前方、右方以及左方等相对方向上的信息,为了记录迷宫中每个单元格的信息,需要把相对方向转换为绝对方向。

相对方向,是指相对于电脑鼠正对的方向。

关于电脑鼠的论文(有框图)

关于电脑鼠的论文(有框图)

电脑鼠学习心得和遇到的问题及解决方法彭旺 16012126学习心得:在大一的时候就经常看见学长们整天在宿舍弄一个小车,后来才知道那就是视觉知道机器人。

于是到了大二选择选修课的时候就果断选了这个课。

本来我选的是机器人那个,上了才知道又要做实验还要参加比赛还要交押金甚是麻烦,顿时欲哭无泪,硬着头皮去上,因为分组问题被弄到了电脑鼠这边来,觉得比机器人那边要好玩得多。

第一次去上课就要交押金,并且那个电脑鼠还好贵的,整整两千多啊。

那是最开始就给我们讲了电脑鼠处理器运行的相关函数,后面几节课分别讲了电脑鼠在迷宫中搜索以及最后冲刺的相关程序。

好吧,我承认当时确实有点无聊。

直到后来,老师终于给了我们完整的程序,于是兴奋的我们毫不犹豫的把程序“捎”了进去,然后把电脑鼠放到迷宫中,结果发现它除了撞墙就是转圈。

探索调试:我们小组分工合作,一起研发。

电脑鼠走迷宫可以采用全迷宫探索策略,即将迷宫的所有单元均搜索一次,从中找出最佳的行走路径。

或者可以采用部分迷宫探索策略,即在有限的时间或探测次数下,只探测迷宫的一部分,从中找出次最佳的路径。

我们的电脑鼠要实现的功能有如下几个方面:路口检测:由安装在前、右、左的三个红外线发射对管SIR563ST3F 和IRM8601S实现, 发射信号为38KHz, 实现远红外测距功能, 探测前、右、左有无障碍。

行走控制:由左、右两个红外线发射对管SIR563ST3F和IRM8601S为实现, 发射信号为30.5KHz, 实现近红外测距功能, 保持电脑鼠在中轴线上行走, 避免撞墙。

路程控制:安装在左右轮内侧的红外收发对管IR204和PD204一6B, 对黑白码盘计数, 按照迷宫单元的长度为单位进行路程计数, 以记录老鼠在迷宫中的位置同时还可以准确地实现转弯。

微控制器和其它子系统共同构成一个闭环的反馈控制系统, 通过对三种传感器信号的检测行走信号、路口信号和黑白码盘计数信号, 由微控制器进行运算, 运算结果交给电机执行, 由此实现电脑鼠的智能穿越迷宫。

电脑鼠走迷宫技术报告

电脑鼠走迷宫技术报告

项目编号:31SZDYKC-090601 全国大学生电子设计竞赛项目名称:电脑鼠走迷宫学生班级:1104班学生姓名:王忆文所在系(部):通信工程系指导教师:摘要“电脑鼠”是使用嵌入式微控制器、传感器和机电运动部件构成的一种微型机器人,可以在“迷宫”中自动记忆和选择路径,快速地达到所设定的目的地。

电脑鼠走迷宫竞赛是一项具有一定难度、富有挑战性和趣味性的比赛。

能力。

通过系统分析、硬件设计、软件设计、整合电路设计、汇编语言、C语言专业知识解决问题的综合应用能力,激发我们对电脑鼠的研究兴趣。

创新点是提出了对电脑鼠电源电路、传感器电路的改进方案。

给出了电机控制算法、用于纠正姿态的算法、传感器驱动算法、连续转弯算法、迷宫信息采集算法以及迷宫搜索与迷宫最短路径算法等算法模块。

关键词:嵌入式系统,电脑鼠,智能算法ABSTRACT"Computer mouse" is the use of embedded microcontrollers, sensors and electromechanical moving parts consisting of a micro-robot maze memory and automatically select the path to reach the set destination. Computer Mouse Maze Competition is a certain degree of difficulty, challenging and fun game.completion of the research program circuit board testing, knowledge and technical skills in the school curriculum learning algorithm, data query and retrieval, project management, integration cultivate awareness of scientific and technological innovation and hands-on design capabilities. System analysis, hardware design, software design, integrated circuit design, assembly language, C language application of knowledge in the development of SCM culture integrated application skills, stimulate our interest in the study of computer mouse use our expertise to solve the problem.The innovation of the computer mouse power circuit, sensor circuit improvement program. Motor control algorithm, the algorithm used to correct posture, the sensor-driven algorithm, continuous turning algorithm, the maze information collection algorithms, and maze search maze shortest path algorithm, algorithm module.Keywords:Embedded System,Micromouse,Intellegent Algorithm目录摘要 (2)第一章前言 (2)1.1项目背景 (2)1.2项目介绍第三章电脑鼠硬件与软件 (2)第二章电脑鼠硬件及软件 (4)2.1电脑鼠的硬件 (4)2.1.1 电脑鼠硬件组成 (4)2.1.2电脑鼠基本动作 (6)2.2电脑鼠软件 (7)2.2.1等高图制作模块 (9)2.2.2冲刺模块 (10)2.2.3转弯模块 (10)2.2.4搜索模块 (11)2.2.5迷宫地图相对方向与绝对方向的建立 (11)2.2.6墙壁资料存储 (13)2.2.7电脑鼠搜索策略第四章问题总结及改进 (14)第三章问题总结及改进 (15)总结 (19)参考文献 (20)第一章前言所谓“电脑鼠”,英文名叫做MicroMouse,是使用嵌入式微控制器、传感器和机电运动部件构成的一种智能行走装置的俗称。

电脑鼠设计与制作——文档资料

电脑鼠设计与制作——文档资料
P1.0—P1.7: 通用I/O口(准双向口),有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可作输入口用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可作输入口用。作输入用时,被外部拉低的引脚因内部电阻,将输出电流(IIL)。此外,P1.0及P1.2分别作定时器/计数器2之外部计数输入(P1.0/T2)及时器/计数器2之触发输入(P1.1/T2EX),详见表1所示。在flash编程及校验时,P1口接收低8位地址字节。表1:
图7传动部件实物图
2.2电子部分
电脑鼠的硬件电路结构图如下。
图8硬件电路结构框图
(1)微控制器
微控制器是电脑鼠的核心,可以选择单片机,若RAM需求量大或者算法复杂或者性能要求高时,需要使用ARM等高性能的微处理器。
(2)传感器
传感器的作用是用来感知环境,探测电脑鼠的左、前、右是否有路可走。本设计中采用的是红外线方式,发射和接收分别受微控制器控制。由硬件电路部分结构框图可知,在电脑鼠的前、左、右、左前、右前方共有5组,其中左、右、前三组传感器是用于探测电脑鼠在当前迷宫格左、右、前三个方向上是否有支路的,左前、右前两组传感器呈45度安装,用于电脑鼠行进过程中进行பைடு நூலகம்态矫正,防止电脑鼠走偏而撞到迷宫墙。
例子:一个电脑鼠在迷宫中的搜索时间为4分钟,没有碰触过,运行时间使用了20秒,这次运行的排障时间就是:
20+(240×1/30)-10=18秒
1.
电脑鼠是指由车身、轮子、和相关软件构成。车体是电脑鼠最基本的架构,它的设计在电脑鼠的整体规划中战友想到重要的地位,应当遵守整体结构坚固耐用、材质轻、重心低的原则。在设计中,既要考虑到符合各零件的规格,又要考虑到配合迷宫的规格。

迷宫电脑鼠的设计报告

迷宫电脑鼠的设计报告
1、L9110器件的管脚图如图所示。
2、管脚定义如下:
3、通过L9110驱动芯片IA、IB输入的逻辑值的组合,不同高低电平的输入输出,控制电机正转、反转、停转。L9110的逻辑关系表如下表所示:
L9110逻辑关系
IA
IB
OA
OB
H
L
H
L
正转
L
H
L
H
反转
L
L
L
L
停止
H
H
L
L
停止
3.3
3.3.1
电脑鼠正常行走包括直走、左转弯、右转弯和向后转弯四个功能函数。这四个功能函数中要用到T0、T1定时/计数器;所以函数中首先初始化T0、T1。T0初始化:打开总开关EA=1;开T0中断ET0=1;设定T0模式2,8位自动重装值定时计数器TMOD&=0xf6; TMOD|=0x06;设定T0计数初值,定义中断脉冲数TH0=256-ICP;TL0=256-ICP;//启动T0计数TR0=1;T1初始化也是一样的。
传感器组是由38KHz的红外一体化接收头和红外发射管构成的障碍感测器。为了能够让传感器组正常工作,红外发射管需要一个38KHz的方波来驱动,使红外发射管发射出调制频率与接收头接收频率匹配的红外光。如图所示,是产生38KHz方波的载波发生器电路。
(4)传感器的调试
(主要写每组传感器如何进行调试。)
1、左右两边的传感器检测是否有墙壁。
sbit LED3=P0^2;
sbit LED4=P0^3;
sbit LED5=P0^4;
sbit LED6=P0^5;
sbit LED7=P0^6;
sbit LED8=P0^7;
//红外地址接口定义(74HC138译码器
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

左上区域
左上区域 左上区域 左上区域 右上区域 右上区域 右上区域 右上区域
上方 0
下方 2 左方 3 右方 1 上方 0 下方 2 左方 3 右方 1
右手法则
中左法则 左手法则 中右法则 左手法则 中右法则 中左法则 右手法则
4)回溯
• 当电脑鼠的四个方向都为不 可行(有墙或已走过)时,
• 栈顶元素出栈 • 电脑鼠返回栈顶位置
• 演示栈
1) 栈思考题
• a)若栈的输入序列是a、b、c、d,则可能的输出序列 有哪几种类?
• b)判断一个输入字符串是否为中心对称。例如xyx、 xyyx都是中心对称。 • c)假设一个算术表达式中包含括号、方括号和花括号3 种类型的括号,编写一个算法来判别表达式中的括号是 否配对,以字符“\0”作为算术表达式的结束符。
• 迷宫二维数组,每个结点定义为FFFF表示上右下左都有 墙。
• 迷宫鼠方向:电脑鼠放入方向,一般默认为向上(1000)
• 栈,加入起点坐标
• 下面以起点为(0,0),终点为(7,7)为例讲解
3)电脑鼠寻路
• While(当前结点不是终点){
• 记录电脑鼠所在点迷宫信 息,电脑鼠方向 • 按向心法则寻路 • If(没有可行路径) 回溯
传感 器
软件 设计
关键 技术
机械 结构 处理 器
驱动 装置
二、电脑鼠迷宫竞赛
目的
电脑鼠走迷宫竞赛的目的是制作一个微型机器人, 它能在最短的时间内穿越迷宫到达终点。参赛的机器人 称为“电脑鼠”,将电脑鼠放入迷宫并启动操作的人称 为“操作员”。
迷宫的规范
1) 迷宫由16×16个﹑18cm×18cm大小的正方形单 元所组成。 2)迷宫的起始单元可选设在迷宫四个角落之中的 任何一个。起始单元必须三面有隔墙,只留一个出口。
3) 回溯
3) 回溯
3) 回溯
3) 回溯
3) 回溯
3) 回溯
3) 回溯
3) 回溯
3) 回溯
3) 回溯
3) 回溯
3) 回溯
3) 回溯
3) 回溯
3) 回溯思考题——N皇后问题
• 在一个N*N的棋盘上 放置N个皇后,且使 得每两个之间不能 互相攻击,也就是 使得每两个不在同 一行,同一列和同 一斜角线上。
• 栈顶元素出栈 • 电脑鼠返回栈顶位置 • 从栈顶位置重新找路
• 当电脑鼠的四个方向都为不 可行(有墙或已走过)时,
• 栈顶元素出栈 • 电脑鼠返回栈顶位置
• 从栈顶位置重新找路
• 当电脑鼠的四个方向都为不 可行(有墙或已走过)时,
• 栈顶元素出栈 • 电脑鼠返回栈顶位置 • 从栈顶位置重新找路
迷宫电脑鼠算法
重庆理工大学 计算机科学与技术系
五大内容:

• 电脑鼠简介 • 电脑鼠走迷宫竞赛


• 电脑鼠走迷宫演示
• 电脑鼠走迷宫的设计与算法 • 电脑鼠走迷宫具体实现过程


一、电脑鼠简介
电脑鼠是一种具有人工智能的轮式机器人
它是多个学科交叉结合的结晶
软件
人工
智能
工程
运动
控制
电脑 鼠
电脑鼠走迷宫的关键技术
向心法策略表
小车当前所处区域 左下区域 左下区域 左下区域 左下区域 右下区域 右下区域 小车车头当前面向方向 上方 0 下方 2 左方 3 右方 1 上方 0 下方 2 应选择的策略 中右法则(中右左) 左手法则 右手法则 中左法则 中左法则 右手法则
右下区域
右下区域
左方 3
右方 1
中右法则
左手法则
• 当前结点入栈
• 电脑鼠进入下一结点
}
1、右手法则 小车在搜过程中有两个以上的搜索方向时,优先选择向右转 ,其次是向前行进,最后才考虑向左转弯。
2、左手法则
小车在搜过程中有两个以上的搜索方向时,优先选择向左转 ,其次是向前行进,最后才考虑向右转弯。
3、向心法则
把整个8 ×8的迷宫地图分解为左下,右下,左上,右上四个 均等的区域,在不同的区域中选择不同的转弯策略,使得小车 始终向着迷宫的中心靠近,这样就可以以最快的速度接近终点 ,总体上说,遍历迷宫时此方法更科学有效。
2) 队列思考题
• a) 入队顺序1、2、3、4,那么出队顺序是?
• b)某汽车轮渡口,过江渡船每次能载10辆车。车分客车类和 货车类,上渡船有如下规定:
• 客车先于货车上渡船,且每上4辆客车,才允许放一辆货车; • 若等待客车不足4辆,则以货车代替; • 若无货车等待,允许客车都上船。
• 试设计一个算法模拟渡口管理。
三、电脑鼠走迷宫演示
四、电脑鼠迷宫的设计与算法
电脑鼠走迷宫三个阶段 寻路:从给定起点走到给定终点 遍历:走遍整个迷宫,获得迷宫地图 寻优:获取最优路径进行最后冲刺
各阶段所用数据结构
寻路: 栈(存储走过的路径)、二维数组 遍历: 栈、二维数组(记录整个迷宫的墙信 息,每个数组元素为一个结构体结点包含一 个迷宫坐标点上右下左的墙信息) 寻优: 队列(建立等高表)、栈(记录最优路 径)
• 从栈顶位置重新找路
附:走过的迷宫记录中不为 FFFF
• 当电脑鼠的四个方向都为不 可行(有墙或已走过)时,
• 栈顶元素出栈
• 电脑鼠返回栈顶位置 • 从栈顶位置重新找路
• 当电脑鼠的四个方向都为不 可行(有墙或已走过)时,
• 栈顶元素出栈 • 电脑鼠返回栈顶位置 • 从栈顶位置重新找路
• 当电脑鼠的四个方向都为不 可行(有墙或已走过)时,
1) 栈
• 操作特点:先进后出(Last In First Out, LIFO)
• 结构特点:只允许一端插入、查看和删除,不允许对另 一端的操作
• 概念:
• 栈顶(入栈、出栈) • 栈底(固定,无操作) • 空栈
1) JAVA中栈的实现
• 类 Stack<E>实现
• 继承于Vector<E>, Object • 构造方法:Stack() • 方法: 创建一个空堆栈
6)电脑鼠遍历
• While(当前结点不是起点 || 起点处电脑鼠还有可行路经 ){
• 记录电脑鼠所在点迷宫信 息,电脑鼠方向
• 按某种法则寻路(此处选的 是左手法则) • If(没有可行路径) 回溯 • 当前结点入栈 • 电脑鼠进入下一结点
}
7)电脑鼠路径寻优
• 迷宫遍历结束后,电脑鼠 就会得到迷宫可到达的所 有结点墙信息。 • 此时电脑鼠不用动,在电 脑鼠机器内部计算得到( 通过计算等高表) 最优路 径。
各阶段所用的算法
寻路: 回溯 遍历: 回溯 寻优: 广度优先遍历
3) 回溯
• 算法思想:深度优先遍历
• 步骤一:先将根结点作为活结点; • 步骤二:向活结点的子结点扩展,若其存在,子结点作 为新的活结点,若不存在可扩展子结点,将当前活结点 设为不可扩展结点,其父节点作为当前的活结点; • 步骤三:重复步骤二,直至找到所求结点,输出路径, 或者到没有可扩展结点时结束,输出null。
2) 队列
• 操作特性:先进先出(First In First Out, FIFO)
• 结构特点:只允许一端入队,另一端查看和删除 • 概念:
• 队头(出队) • 队尾(入队) • 空队列
• 顺序队列(队列、循环队列) • 链式队列
• 两端队列
2) JAVA中队列的实现
• 接口Queue实现
• 继承了Collection接口 • LinkedList实现了Queue接口
• Queue接口窄化了对LinkedList的方法的访问权限(即在方法 中的参数类型如果是Queue时,就完全只能访问Queue接口所 定义的方法 了,而不能直接访问 LinkedList的非Queue的方法 )
2) JAVA中队列的实现
• remove、element、offer 、poll、peek 其实是属于Queue 接口 • 异常---提示---阻塞 • 队列演示
各阶段所用的算法
寻路: 回溯 遍历: 回溯 寻优: 广度优先遍历
4) 广度优先
• 特点:横向优先遍历
• 步骤一:先将跟结点入队列; • 步骤二:取队头元素,遍历队头元素的所有子结点,并 将所有子结点加入队列; • 步骤三:重复步骤二,直至找到所求结点,或者队列为 空。
4) 广度优先
4) 广度优先
竞赛主要规则
电脑鼠的基本功能是从起点开始走到终点,这个 过程称为一次“运行”,所花费的时间称为“运行时间 ”。从终点回到起点所花费的时间不计算在运行时间内 。从电脑鼠的第一次激活到每次运行开始,这段期间所 花费的时间称为“迷宫时间”。如果电脑鼠在比赛时需 要手动辅助,这个动作称为“碰触”。竞赛使用这三个 参数,从速度﹑求解迷宫的效率和电脑鼠的可靠性三个 方面来进行评分。
• 电脑鼠沿最优路径冲刺。
8)建立等高表
• 建立等高表要用到队列结构,使 用广度优先遍历算法 • 初始化队列,把起点加入队列, 并记起点路径长度为1 • While(队列不为空) { • 取队头元素 • 迷宫中当前结点可到达的结 点路径长度加1,且全部加入 队尾中 • } • 附:此处出队列的元素要记录下 来,可记录于线性表中
9)根据等高表查找最优路径
• 最优路径的查找要从终点开始
• 初始化栈,将终点坐标加入 • While(栈顶元素不是起点) {
• 查找栈顶元素可到达的,路径长度小于栈顶元素路径长 度的结点入栈
•}Leabharlann 10)路径寻优• 等高表建立与查 找最优路径的演 示如右图:
附加事项
• 节省内存空间
除边界,迷宫每个结点只记录up,left 栈和队列都用一个线性表实现
• 最优路径优化
相关文档
最新文档