人工智能(梵塔问题).doc
《人工智能(梵塔问题).doc》由会员分享,可在线阅读,更多相关《人工智能(梵塔问题).doc(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流人工智能(梵塔问题)【精品文档】第 8 页梵塔问题实验报告实验目的1. 熟悉和掌握问题规约法的原理、实质和规约过程2. 理解规约图的表示方法3. 熟悉并掌握递归解决问题的思想实验原理1. 利用问题规约法的原理进行问题的分析与描述2. 利用递归思想进行问题的解决实验条件1. Window NT/xp/7及以上的操作系统2. 内存在512M以上3. CPU在奔腾II以上实验内容梵塔问题源于印度古老的一个传说。相传开天辟地的神勃拉玛创造世界时在印度北部的佛教圣地的圣庙里,安放了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依
2、次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。值班僧侣按照法则日夜不停地搬运,当搬运完成时世界将在一声霹雳中毁灭。实验分析我们假设把该任务交给一个僧人,为了方便叙述,将他编号为64。僧人自然会这样想:假如有另外一个僧人能有办法将63个盘子从一个座移到另一个座,那么问题就解决了,此时僧人64只需这样做:1. 命令僧人63将63个盘子从A座移到C座2. 自己将最底下的最大的一个盘子从A座移到C座3. 再命令僧人63将63个盘子从B座移到C座为了解决将63个盘子从A座移到B座的问题,僧人63又想:如果能再有
3、一个僧人62能将62个盘子移动到另一座,我就能将63个盘子从A座移动到B座。他是这样做的:1. 命令僧人62将62个盘子从A移动到C2. 自己将一个盘子从A座移动到B座3. 再命令僧人62将62个盘子移到B座再进行一次递归。如此“层层下放”,直到后来找到第2个僧人,让他完成将2个盘子从一个座移到另一个座,进行到此,问题就解决了。最后找到第1个僧人,让他完成将一个盘子从一个座移动到另一个座,至此,全部工作已经完成,该烦他问题得到解决。实验步骤 主程序流程图初始化过程绘制初始图形汉诺塔求解开始输入盘子数结束主程序流程图 梵塔求解流程图开始将盘子从A座移到C座n为1?是否递归调用,初始n=n-1盘子
4、数为n结束梵塔问题递归过程流程图退出一级调用n=n+1程序代码#include #include #include #include #include #define PAOGAO 190 /*动画抛高,数值越小越高*/#define PANHOU 10/*#define PANAMOUNT 19盘子数*/ int PANAMOUNT;typedef int pans;typedef struct s_pillar int amount; int x,y; pans pan20; /*存放每个盘的代号*/pillars;pillars pillar4; /*三个台柱*/int movecoun
5、t=0; /*移动计数*/void drawpillar(pillars p);void init(); /*初始化函数*/void drawmat(char *mat,int matsize,int x,int y,int color); /* 点陈汉字 */void drawpan(pans p,int x,int y);void zimu(); /*显示字幕*/void drawpps(); /*画装盘的台柱*/void hanoi(); /*主算法*/void hanoi(int n,char one,char two,char three);void sdelay(int delay
6、_t); /*函数申明*/void finish(); /*完成!*/void main(void) /*主函数*/ printf(ntplease input n(n=19): );/*输入要演示的盘子数*/ scanf(%d,&PANAMOUNT); if(PANAMOUNT19) /*越界的话n当19处理*/ PANAMOUNT=19 ; init(); drawpps(); hanoi(PANAMOUNT,a,b,c); finish();void init() /* 初始化函数 */ int gd=DETECT,gm ; int i,n,color ; clrscr(); initg
7、raph(&gd,&gm,c:tc); cleardevice(); pillar1.amount = PANAMOUNT; pillar1.x = 105; pillar1.y = 405; for(i=1;i=pillar1.amount;i+) pillar1.pani=pillar1.amount-i+1; pillar2.amount = 0; pillar2.x = 320; pillar2.y = 405; pillar3.amount = 0; pillar3.x = 527; pillar3.y = 405; setcolor(YELLOW); /*柱座标记*/ settex
8、tstyle(0,0,2); outtextxy(105,418,A); outtextxy(320,418,B); outtextxy(527,418,C); setcolor(YELLOW); /*画框*/ setlinestyle(SOLID_LINE,0,NORM_WIDTH); line(0,0,0,479); line(0,0,639,0); line(639,0,639,479); line(0,479,639,479); line(0,PAOGAO-PANHOU-40,450,PAOGAO-PANHOU-40); /*黄金线*/ settextstyle(0,0,1); out
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人工智能 问题
限制150内