版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
宽度优先搜索引例1,12,33,21,54,41,32,45,32,53,44,55,5(1,1)(1,3)(1,5)(2,3)(2,4)(2,5)(3,2)(3,4)(3,5)(4,4)(4,5)(5,3)(5,5)11233215351324445325344555跳马搜索树(解答树)法3——BFS(宽度优先搜索)需引入数据结构——队列宽度优先搜索队列基本概念(queue)队列是限定在一端进行插入,在另一端进行删除的特殊的线性表。像食堂排队买饭,后来的人排在队尾(插入),队头上的人买完饭后出队(删除)。所有需要进队的数据项只能从队尾进入;所有需要出队的数据项只能从队头离开。先入队的元素先出队,这种表又称为先进先出表(FIFO表---firstinfirstout)。队列可用数组表示,在队列运算中要设两个指针:队头指针--------head
队尾指针--------tail假设我们约定:(1)head指向队列第一个元素的前一个单元;(2)tail指向队列最后一个元素;如下图状态:head=0;tail=5;显然,队列元素个数:n=tail-head;0123456123345671、初始化:head=tail=02、元素入队:tail++;q[tail]=data;01234560123456123、元素出队:head++;data=q[head];012345613124、判断队列空否:head>=tail?或元素个数为0否:tail-head==0?非空:head<tail012345612131617BFS框架1(仅供参考)int
bfs(){
队列初始化;
初始状态入队; while(队列不空) {
获取队头状态s;弹出队头状态s;
if(s是目标状态)
处理目标状态;
for(k=1;k<=扩展规则总数;k++)
{
利用扩展规则k扩展出s的子状态s’;
if(状态s’合法)
子状态s’入队;
} } return0;}BFS框架2(仅供参考)队列实现方法(1)用数组模拟队列,如上面的演示(2)使用C++标准模板库中的容器queue,详细用法见如下程序段:(见下页)#include<queue>………………structnode{ intx,y;//行列号}start,h,s;//声明三个状态对象queue<node>
q;//声明队列,<node>用来声明队列元素的类型intt[5][3]={{0,0,0},{0,-2,1},{0,-1,2},{0,1,2},{0,2,1}};//跳马规则,下一行是规则另外一种表示方式//inttx[5]={0,-2,-1,1,2};intty[5]={0,1,2,2,1};inthorse_bfs(){
start.x=1;start.y=1;//起始状态
q.push(start);//初始状态入队
while(!q.empty())//队列不空
{ h=q.front();q.pop();//获得队头状态后,让其出队
for(intk=1;k<=4;k++)
{
利用跳马规则k扩展出h的子状态s;
if(状态s合法)
if(s是目标状态)
处理目标状态;
else
q.push(s);//s状态入队;
} } return0;}练习
BFS基础练习1:跳马问题、骑士集结
跳马问题基础版:跳马跳数基础版跳马问题分析该问题遍历过程可以按照马前进的步数划分成若干阶段,每一个阶段的各个状态构成遍历树的某一层。某层某状态的最优值只与上一层的某些状体有关,无后效性体现的很明显。所以考虑用动态规划。由于只允许马向右跳,在二维数组中,某个状态所依赖的上一个阶段的那些状态都在该状态的左边两列,所以我们从左到右更新每一列即可保证每个状态的最优。跳马问题:法2——动态规划阶段x:马跳x步的可达状态,即解答树中第x层的状态;状态:f(i,j)表示(起点)到(i,j)的路径数;状态转移方程:f[i][j]+=f[i-2][j-1]+f[i-1][j-2]+f[i+1][j-2]+f[i+2][j-1];(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年四川省泸州市龙马潭区九年级第二次质量监测试题物理
- 维修人员巡检管理制度
- 关于物探单位实习报告总结
- 建筑施工的工作总结
- 【完整版】2020年北京市朝阳一模测试数学试卷整体评析
- 详细的离婚财产分割协议范例
- 关于大学教研活动总结范文
- 描写细节的片段摘抄
- 文化局实习报告
- 承重排架搭设、拆除专项安全技术措施
- 药用高分子材料在药物制剂方面的应用基础
- 2021年广东省深圳市第八届“鹏程杯”八年级初赛数学试卷
- 机场公安培训课件
- 2023年平顶山学院辅导员招聘考试真题
- 班主任基本功大赛:模拟情景题及参考答案汇编(高中组)
- 《幼儿园指导纲要》解读
- 山东省东营市河口区2023-2024学年部编版五四制六年级历史上学期期末考试题
- 食品安全培训互动游戏
- 0-6岁儿童健康管理服务规范
- 2024年江苏省环保集团有限公司招聘笔试参考题库含答案解析
- 2023-2024学年宁夏回族自治区吴忠市同心县韦州中学七年级(上)学期期末数学试题(含解析)
评论
0/150
提交评论