探索法的应用Word下载.docx
《探索法的应用Word下载.docx》由会员分享,可在线阅读,更多相关《探索法的应用Word下载.docx(12页珍藏版)》请在冰豆网上搜索。
学习态度及平时成绩(30)
技术水平与实际能力(20)
创新(5)
说明书撰写质量(45)
总分(100)
指导教师签名:
年月日
目录
1引言1
1.1问题的提出1
1.2国内外研究的现状1
1.3任务与分析1
2程序的主要功能2
2.1新建数组2
2.2判定数组2
2.3设定需要的界面2
3程序运行平台3
4总体设计4
5程序类的说明5
6模块分析7
6.1迷宫问题主函数模块7
6.2迷宫问题中,方位为上、下、左、右位置可到达7
6.3迷宫问题判断出口位置10
6.4预先设定迷宫12
6.5计算机进程调度全局数据结构和变量12
6.6计算机进程调度函数说明13
7系统测试14
8结论27
参考文献28
1引言
1.1问题的提出
在很多研究中,数学问题的形式千变万化,结构错综复杂,寻找正确有效的解题途径,以为着寻找一条摆脱困境,绕过障碍的途径。
在这些问题的解决过程中,探索法无疑成为了一种最有效的方法。
由此提出了迷宫问题等问题的探索法,要解决此类问题,向各个方向考虑,由此找到一条最有效的解决途径,由此来解决问题。
正是探索法的探索解决问题的优点,由此有很多问题需要用这种方法解决。
1.2国内外研究的现状
探索法在现代研究和学习中,起着非常重要的作用。
在各个科学、人文等领域占据着非常重要的作用,有很多科学研究需要在问题的提出时,探索问题的各种有效途径,由此来获得解决问题的最有效方法。
1.3任务与分析
本课题主要的目的是用探索法解决各类问题,由此获得各类问题的最有效途径。
探索法实现过程中,在对问题的解决过程中,先假设问题的各个解决途径,在对问题进行分析。
用探索法来研究发现和发明的规律和方法,解决迷宫问题时,分为4个方向去试探路径,如果遇到下一个路径为1,表示此路径不能行走,返回上一位置,再寻找其他路径;
如果不是1,继续向前行走,知道找到出口。
2程序的主要功能
2.1新建数组
1、在解决迷宫问题时,新建一个数组,用来判定迷宫问题的出口
2、对计算机作业调度问题,新建一个数组,对计算机各个正在运行的作业进行判定
2.2判定功能
1、对迷宫问题进行编译,分别编译判定迷宫中方位为上、下、左、右的位置可到达;
然后编译判定迷宫问题的入口,分别编译迷宫入口是否在上、下、左、右。
2、对计算机作业调度问题编译,编译能判定计算机正在调度的进程。
2.3设定需要的界面
1、设定一个已知的迷宫,由此能有前面的程序判定出迷宫的可以出行的路径。
2、设定计算机作业调度的界面,由此来运行计算机作业调度的程序。
3程序运行平台
VC++6.0。
具体操作如下:
新建win32ConsoleApplication工程,添加相应的源文件,再添加新建工程,再编译,链接,执行等。
4总体设计
图4.1迷宫问题系统总体框架图
图4.2计算机进程调度系统总体框架图
5程序类的说明
∙迷宫问题数据结构
intsearchNext(intc[3][4],intk,intl);
voidfindEnterence(intc[3][4],int*k,int*l);
voidsearchPath(intc[3][4])
{
intk=0,l=0;
findEnterence(c,&
k,&
l);
searchNext(c,k,l);
}
计算机进程管理数据结构
/*PCB结构*/
structPCB{
intpname;
intpri;
intruntime;
intwaittime;
structPCB*next;
}pcb[7];
/*运行指针*/
structPCB*running;
/*高优先级就绪队列头指针*/
structPCB*Hready;
/*低优先级队列头指针*/
structPCB*Lready;
/*等待队列头指针*/
structPCB*wait;
intsig=0;
6模块分析
6.1迷宫问题主函数模块
迷宫问题中,主要的头文件函数
6.2迷宫问题中,方位为上、右、下、左的位置可到达
现实迷宫问题中,方位为上、右、下、左的位置时,可到达的情况
if((k>
=0&
&
k<
m)||(l>
l<
m))
{
printf("
(%d,%d)"
k,l);
if(c[k][l]==3)//出口
return1;
}
else
if(k-1>
=0)//方位为“上”的位置可到达{
if((c[k-1][l]==0)||(c[k-1][l]==3))
if(searchNext(c,k-1,l))
//printf("
pass\n"
);
//break;
printf("
nopass"
return0;
6.3迷宫问题判断出口位置
判断迷宫问题的出口
inti;
//*k保存行,*l保存列
//入口是否在左边
for(i=0;
i<
m;
i++)
if(c[i][0]==2)
(*k)=i;
(*l)=0;
return;
6.4预先设定迷宫
预先设定固定的迷宫,修改迷宫,由此来设置迷宫的路径
intc[m][n]={{2,1,1,1},
{0,0,0,0},
{1,1,1,3}};
searchPath(c);
\n"
6.5计算机进程调度全局数据结构和变量
编写计算机进程调度全局数据结构,为运行程序做准备
/*运行指针*/
structPCB*running;
structPCB*Hready;
/*低优先级队列头指针*/
structPCB*Lready;
structPCB*wait;
6.6计算机进程调度函数说明
对程序中的函数进行说明
voiddelay();
/*模拟进程3-9*/
voidproc(structPCB*running);
/*将node插入到head所指示的队列的尾部*/
voidInsertIntoQueueTail(structPCB**head,structPCB*node);
/*进程调度函数*/
intproc_switch();
/*进程等待函数*/
voidproc_wait();
/*进程唤醒函数*/
intproc_wakeup();
7系统测试
首先进入VC++6.0,打开工程冯涛.cpp,然后进入源程序,接着编译、运行即可。
对迷宫问题进行运行,预先设置迷宫1,如下图:
图7.1迷宫1
8结论
探索法在对迷宫问题和计算机进程调度解决过程中有很大作用,在解决这类问题的过程中,探索法是一种性能卓越的方法,在迷宫问题中,通过设计迷宫的出口和各个方位,来解决获得迷宫的最好的出口。
通过探索法来探索迷宫问题的最好的路径,探索法在解决此类问题中效果明显优于其他算法。
通过此次课程设计,我对用探索法解决迷宫问题等问题有了深入的认识,并且更深入了解了C++的使用,对以后的学习有很大的帮助。
参考文献
[1]李建学等.数据结构课程设计案例精编(用C/C++描述).清华大学出版社.2007
[2]佐兹戴克.数据结构与算法(C++版影印版).清华大学出版社.2002
[3]严蔚敏.数据结构(C语言版).清华大学.2004
[4]耿国华.数据结构——C语言描述.高等教育出版社.2005
[5]徐孝凯.数据结构实用教程(第二版).清华大学出版社.2006