电脑鼠算法汇总
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
竞赛主要规则
电脑鼠的基本功能是从起点开始走到终点,这个 过程称为一次“运行”,所花费的时间称为“运行时间 ”。从终点回到起点所花费的时间不计算在运行时间内 。从电脑鼠的第一次激活到每次运行开始,这段期间所 花费的时间称为“迷宫时间”。如果电脑鼠在比赛时需 要手动辅助,这个动作称为“碰触”。竞赛使用这三个 参数,从速度﹑求解迷宫的效率和电脑鼠的可靠性三个 方面来进行评分。
• Queue接口窄化了对LinkedList的方法的访问权限(即在方 法中的参数类型如果是Queue时,就完全只能访问Queue 接口所定义的方法 了,而不能直接访问 LinkedList的非 Queue的方法)
2) JAVA中队列的实现
• remove、element、offer 、poll、peek 其实是属于Queue 接口 • 异常---提示---阻塞 • 队列演示
寻优: 队列(建立等高表)、栈(记录最优路 径)
1) 栈
• 操作特点:先进后出(Last In First Out, LIFO)
• 结构特点:只允许一端插入、查看和删除,不允许对另 一端的操作
• 概念:
• 栈顶(入栈、出栈) • 栈底(固定,无操作) • 空栈
1) JAVA中栈的实现
• 类 Stack<E>实现
• 继承于Vector<E>, Object • 构造方法:Stack() • 方法: 创建一个空堆栈
Biblioteka Baidu
• 演示栈
1) 栈思考题
• a)若栈的输入序列是a、b、c、d,则可能的输出序列 有哪几种类?
• b)判断一个输入字符串是否为中心对称。例如xyx、 xyyx都是中心对称。 • c)假设一个算术表达式中包含括号、方括号和花括号3 种类型的括号,编写一个算法来判别表达式中的括号是 否配对,以字符“\0”作为算术表达式的结束符。
• 迷宫二维数组,每个结点定义为FFFF表示上右下左都有 墙。
• 迷宫鼠方向:电脑鼠放入方向,一般默认为向上(1000)
• 栈,加入起点坐标
• 下面以起点为(0,0),终点为(7,7)为例讲解
3)电脑鼠寻路
• While(当前结点不是终点){
• 记录电脑鼠所在点迷宫信 息,电脑鼠方向 • 按向心法则寻路 • If(没有可行路径) 回溯
4) 广度优先
4) 广度优先
4) 广度优先
4) 回溯思考题
• 用java代码实现前面查找的例子(找7)。
五、电脑鼠走迷宫的具体实现过程
1)电脑鼠每一步记录的数据
当前坐标四周的墙信息
下一步所要走的方向 Format: (towards)(up,right,down,left)
2)电脑鼠初始化
2) 队列思考题
• a) 入队顺序1、2、3、4,那么出队顺序是?
• b)某汽车轮渡口,过江渡船每次能载10辆车。车分客车类和 货车类,上渡船有如下规定:
• 客车先于货车上渡船,且每上4辆客车,才允许放一辆货车; • 若等待客车不足4辆,则以货车代替; • 若无货车等待,允许客车都上船。
• 试设计一个算法模拟渡口管理。
3) 回溯
3) 回溯
3) 回溯
3) 回溯
3) 回溯
3) 回溯
3) 回溯
3) 回溯
3) 回溯
3) 回溯
3) 回溯
3) 回溯
3) 回溯
3) 回溯
3) 回溯思考题——N皇后问题
• 在一个N*N的棋盘 上放置N个皇后,且 使得每两个之间不 能互相攻击,也就 是使得每两个不在 同一行,同一列和 同一斜角线上。
迷宫电脑鼠算法
重庆理工大学 计算机科学与技术系
五大内容:
一
• 电脑鼠简介
二
• 电脑鼠走迷宫竞赛
• 电脑鼠走迷宫演示 • 电脑鼠走迷宫的设计与算法
三
四
五
• 电脑鼠走迷宫具体实现过程
一、电脑鼠简介
电脑鼠是一种具有人工智能的轮式机器人
它是多个学科交叉结合的 结晶
软件 人工 智能
工程
运动 控制
电脑 鼠
电脑鼠走迷宫的关键技术
• 当前结点入栈
• 电脑鼠进入下一结点
}
1、右手法则 小车在搜过程中有两个以上的搜索方向时,优先选择向右转 ,其次是向前行进,最后才考虑向左转弯。
传感 器
软件 设计 驱动 装置
关键 技术
机械 结构 处理 器
二、电脑鼠迷宫竞赛
目的
电脑鼠走迷宫竞赛的目的是制作一个微型机器人, 它能在最短的时间内穿越迷宫到达终点。参赛的机器人 称为“电脑鼠”,将电脑鼠放入迷宫并启动操作的人称 为“操作员”。
迷宫的规范
1) 迷宫由16×16个﹑18cm×18cm大小的正方 形单元所组成。 2)迷宫的起始单元可选设在迷宫四个角落之中的 任何一个。起始单元必须三面有隔墙,只留一个出口。
2) 队列
• 操作特性:先进先出(First In First Out, FIFO)
• 结构特点:只允许一端入队,另一端查看和删除 • 概念:
• 队头(出队) • 队尾(入队) • 空队列
• 顺序队列(队列、循环队列) • 链式队列
• 两端队列
2) JAVA中队列的实现
• 接口Queue实现
• 继承了Collection接口 • LinkedList实现了Queue接口
各阶段所用的算法
寻路: 回溯 遍历: 回溯 寻优: 广度优先遍历
4) 广度优先
• 特点:横向优先遍历
• 步骤一:先将跟结点入队列; • 步骤二:取队头元素,遍历队头元素的所有子结点,并 将所有子结点加入队列; • 步骤三:重复步骤二,直至找到所求结点,或者队列为 空。
4) 广度优先
4) 广度优先
三、电脑鼠走迷宫演示
四、电脑鼠迷宫的设计与算法
电脑鼠走迷宫三个阶段 寻路:从给定起点走到给定终点 遍历:走遍整个迷宫,获得迷宫地图 寻优:获取最优路径进行最后冲刺
各阶段所用数据结构
寻路: 栈(存储走过的路径)、二维数组
遍历: 栈、二维数组(记录整个迷宫的墙信 息,每个数组元素为一个结构体结点包含一 个迷宫坐标点上右下左的墙信息)
各阶段所用的算法
寻路: 回溯 遍历: 回溯 寻优: 广度优先遍历
3) 回溯
• 算法思想:深度优先遍历
• 步骤一:先将根结点作为活结点; • 步骤二:向活结点的子结点扩展,若其存在,子结点作 为新的活结点,若不存在可扩展子结点,将当前活结点 设为不可扩展结点,其父节点作为当前的活结点; • 步骤三:重复步骤二,直至找到所求结点,输出路径, 或者到没有可扩展结点时结束,输出null。