当前位置:文档之家› 电脑鼠算法

电脑鼠算法

迷宫的规范
1) 迷宫由16×16个﹑18cm×18cm大小的正方形单 元所组成。
2)迷宫的起始单元可选设在迷宫四个角落之中的任 何一个。起始单元必须三面有隔墙,只留一个出口。 5
竞赛主要规则
电脑鼠的基本功能是从起点开始走到终点,这个 过程称为一次“运行”,所花费的时间称为“运行时间 ”。从终点回到起点所花费的时间不计算在运行时间内 。从电脑鼠的第一次激活到每次运行开始,这段期间所 花费的时间称为“迷宫时间”。如果电脑鼠在比赛时需 要手动辅助,这个动作称为“碰触”。竞赛使用这三个 参数,从速度﹑求解迷宫的效率和电脑鼠的可靠性三个 方面来进行评分。
货车类,上渡船有如下规定:
• 客车先于货车上渡船,且每上4辆客车,才允许放一辆货车; • 若等待客车不足4辆,则以货车代替; • 若无货车等待,允许客车都上船。
• 试设计一个算法模拟渡口管理。
16
各阶段所用的算法
17
3) 回溯
• 算法思想:深度优先遍历
• 步骤一:先将根结点作为活结点; • 步骤二:向活结点的子结点扩展,若其存在,子结点作
迷宫电脑鼠算法
重庆理工大学 计算机科学与技术系
1
五大内容:
2
一、电脑鼠简介
电脑鼠是一种具有人工智能的轮式机器人
它是多个学科交叉结合的结晶
3
电脑鼠走迷宫的关键技术
4
二、电脑鼠迷宫竞赛
目的
电脑鼠走迷宫竞赛的目的是制作一个微型机器人, 它能在最短的时间内穿越迷宫到达终点。参赛的机器人 称为“电脑鼠”,将电脑鼠放入迷宫并启动操作的人称 为“操作员”。
6
三、电脑鼠走迷宫演示
7
四、电脑鼠迷宫的设计与算法
电脑鼠走迷宫三个阶段
8
各阶段所用数据结构
9
1) 栈
• 操作特点:先进后出(Last In First Out, LIFO) • 结构特点:只允许一端插入、查看和删除,不允许对另
一端的操作 • 概念:
• 栈顶(入栈、出栈) • 栈底(固定,无操作) • 空栈
20
3) 回溯
1
2
5
3
4
6
7
1
2
3
4
5
4
7
5
6
6
5
6
21
3) 回溯
1
2
5
3
4
6
7
1
2
3
4
5
4
7
5
6
6
5
6
22
3) 回溯
1
2
5
3
4
6
7
1
2
3
4
5
4
7
5
6
6
5
6
23
3) 回溯
1
2
5
3
4
6
7
1
2
3
4
5
4
7
5
6
6
5
6
24
3) 回溯
1
2
5
3
4
6
7
1
2
3
4
5
4
7
5
6
6
5
6
25
3) 回溯
1
2
5
3
4
6
7
1
2
3
4
5
4
7
5
6
6
5
6
26
3) 回溯
1
2
5
3
4
6
7
1
2
3
4
5
4
7
5
6
6
5
6
27
3) 回溯
1
2
5
3
4
6
7
1
2
3
4
5
4
7
5
6
6
5
6
28
3) 回溯
1
2
5
3
4
6
7
1
2
3
4
5
4
7
5
6
6
5
6
29
3) 回溯
1
2
5
3
4
6
7
1
2
3
4
5
4
7
5
6
6
5
6
30
3) 回溯
1
2
5
3
4
6
7
1
2
3
4
5
4
7
5
6
6
5
6
31
3) 回溯
将所有子结点加入队列; • 步骤三:重复步骤二,直至找到所求结点,或者队列为
空。
35
4) 广度优先 1

2
5
3
4
6
7
2
3
4
5
4
7
5
6
6
5
6
36
4) 广度优先 1
1
2
5
3
4
6
7
2
3
4
5
4
7
5
6
6
5
6
37
4) 广度优先 1
1
2
5
3
4
6
7
2
3
4
5
4
7
5
6
6
5
6
38
4) 广度优先 1
1
2
5
3
4
6
7
2
为新的活结点,若不存在可扩展子结点,将当前活结点 设为不可扩展结点,其父节点作为当前的活结点; • 步骤三:重复步骤二,直至找到所求结点,输出路径, 或者到没有可扩展结点时结束,输出null。
18
3) 回溯
1
2
5
3
4
6
7
1
2
3
4
5
4
7
5
6
6
5
6
19
3) 回溯
1
2
5
3
4
6
7
1
2
3
4
5
4
7
5
6
6
5
6
• c)假设一个算术表达式中包含括号、方括号和花括号3 种类型的括号,编写一个算法来判别表达式中的括号是 否配对,以字符“\0”作为算术表达式的结束符。
12
2) 队列
• 操作特性:先进先出(First In First Out, FIFO)
• 结构特点:只允许一端入队,另一端查看和删除
• 概念:
• 队头(出队) • 队尾(入队) • 空队列
43
3)电脑鼠寻路
• While(当前结点不是终点){
• 记录电脑鼠所在点迷宫信 息,电脑鼠方向
3
4
5
4
7
5
6
6
5
6
39
4) 广度优先 1
1
2
5
3
4
6
7
2
3
4
5
4
7
5
6
6
5
6
40
4) 回溯思考题
• 用java代码实现前面查找的例子(找7)。
41
五、电脑鼠走迷宫的具体实现过程
1)电脑鼠每一步记录的数据
42
2)电脑鼠初始化
• 迷宫二维数组,每个结点定义为FFFF表示上右下左都有 墙。
• 迷宫鼠方向:电脑鼠放入方向,一般默认为向上(1000) • 栈,加入起点坐标 • 下面以起点为(0,0),终点为(7,7)为例讲解
• 顺序队列(队列、循环队列)
• 链式队列
• 两端队列
13
2) JAVA中队列的实现
• 接口Queue实现 • 继承了Collection接口 • LinkedList实现了Queue接口 • Queue接口窄化了对LinkedList的方法的访问权限(即在方法
中的参数类型如果是Queue时,就完全只能访问Queue接口 所定义的方法 了,而不能直接访问 LinkedList的非Queue的方 法)
14
2) JAVA中队列的实现
• remove、element、offer 、poll、peek 其实是属于Queue 接口
• 异常---提示---阻塞 • 队列演示
15
2) 队列思考题
• a) 入队顺序1、2、3、4,那么出队顺序是? • b)某汽车轮渡口,过江渡船每次能载10辆车。车分客车类和
1
2
5
3
4
6
7
1
2
3
4
5
4
7
5
6
6
5
6
32
3) 回溯思考题——N皇后问题
• 在一个N*N的棋盘上 放置N个皇后,且使 得每两个之间不能 互相攻击,也就是 使得每两个不在同 一行,同一列和同 一斜角线上。
33
各阶段所用的算法
34
4) 广度优先
• 特点:横向优先遍历
• 步骤一:先将跟结点入队列; • 步骤二:取队头元素,遍历队头元素的所有子结点,并
10
1) JAVA中栈的实现
• 类 Stack<E>实现 • 继承于Vector<E>, Object • 构造方法:Stack() 创建一个空堆栈 • 方法:
11
• 演示栈
1) 栈思考题
• a)若栈的输入序列是a、b、c、d,则可能的输出序列 有哪几种类?
相关主题