ImageVerifierCode 换一换
格式:DOC , 页数:11 ,大小:282.50KB ,
资源ID:12090196      下载积分:8 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/12090196.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(人工智能大作业.doc)为本站上传会员【鼓***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

人工智能大作业.doc

1、人工智能基础 大作业 —---八数码难题  学院:数学与计算机科学学院     班级:计科14—1          姓名:王佳乐       学号:12                  2016、12、20 一、 实验名称 八数码难题得启发式搜索 二、 实验目得 八数码问题:在3×3得方格棋盘上,摆放着1到8这八个数码,有1个方格就是空得,其初始状态如图1所示,要求对空格执行空格左移、空格右移、空格上移与空格下移这四个操作使得棋盘从初始状态到目标状态. 要求:1、熟悉人

2、工智能系统中得问题求解过程; 2、熟悉状态空间得启发式搜索算法得应用; 3、熟悉对八数码问题得建模、求解及编程语言得应用。 三、 实验设备及软件环境 1. 实验编程工具:VC++ 6、0 2. 实验环境:Windows7 64位 四、 实验方法:启发式搜索 1、算法描述 1. 将S放入open表,计算估价函数f(s) 2. 判断open表就是否为空,若为空则搜索失败,否则,将open表中得第一个元素加入close表并对其进行扩展(每次扩展后加入open表中得元素按照代价得大小从小到大排序,找到代价最小得节点进行扩展) 注:代价得计算公式f(n)=d(n)+w(n)、其中f(

3、n)为总代价,d(n)为节点得度,w(n)用来计算节点中错放棋子得个数. 判断i就是否为目标节点,就是则成功,否则拓展i,计算后续节点f(j),利用f(j)对open表重新排序 2、算法流程图: 3、程序源代码: # include<stdio、h> # include<string、h> # include # include〈stdlib、h> typedef struct node { ﻩint i,cost,degree,exp,father; ﻩint a[3][3]; ﻩstruct node *bef,*late; struct

4、node *son; }treenode; int flag=0,count=1,num=0,i=0; void set(treenode *s); void cpynode(treenode *s1,treenode *s2); void add1(treenode *s,treenode *open); void adjust1(treenode *close); void jscost(treenode *s); void tiaozheng(treenode *open); void sortopen(treenode *open); int test(treeno

5、de *s1,treenode *s2); void position(treenode *s,treenode *open,treenode *close,treenode *s1); void printstr(treenode *open); int search(treenode *s1,treenode *s2); void input(treenode *s); int cmpnode(treenode *s1,treenode *s2); void print(treenode *s); void add(treenode *s,treenode *close);

6、 void xuhao(treenode *s); void extend(treenode *r1,treenode *s,treenode *s1,treenode *open,treenode *close); void main() { treenode *s0,*s1,*s; ﻩtreenode *open,*close,*opend,*closed; open=(treenode*)malloc(sizeof(treenode)); close=(treenode*)malloc(sizeof(treenode));   open->late=NULL;

7、ﻩclose->late=NULL; ﻩopend=open; ﻩclosed=close; ﻩs0=(treenode*)malloc(sizeof(treenode)); set (s0); ﻩs1=(treenode*)malloc(sizeof(treenode)); set(s1); printf("请输入八数码得初始状态:(以空格为分隔)\n”); input (s0); printf("请输入八数码得目标状态 :(以空格为分隔)\n”); input(s1); xuhao(s0); ﻩadd (s0,opend); ﻩwhile(open—

8、>late!=NULL && flag==0) { ﻩ s=(treenode*)malloc(sizeof(treenode)); ﻩ  cpynode(s,open-〉late); ﻩopen=open—〉late; ﻩ add(s,close); ﻩ if(test(s,s1)==0){ ﻩ ﻩflag=1;ﻩ} else{ position(s,open,close,s1); ﻩ sortopen(open); };}; ﻩif(open-〉late!=NULL) { ﻩﻩprintf("搜索过程如下:\n "); ﻩ  adjust1(clo

9、se); ﻩﻩprintstr(close); printf("\n%d 步,%d 个节点\n",num,count);} ﻩelse { ﻩﻩprintf("查找错误 ! \n");}; } void set(treenode *s) { s—〉i=i; s—>father=0; ﻩs->degree=0; s—〉bef=NULL; s->son=NULL; ﻩs-〉late=NULL; }; void input(treenode *s) { int j,k; ﻩfor(j=0;j〈3;j++) ﻩﻩfor(k=0;k<3;k++) ﻩﻩ s

10、canf("%d",&s—>a[j][k]); }; int cmpnode(treenode *s1,treenode *s2){ ﻩint j,k; for(j=0;j<3;j++) ﻩ for(k=0;k〈3;k++) { ﻩﻩ if(s1—〉a[j][k]!=s2—>a[j][k]) ﻩ ﻩ return 0; }; ﻩreturn 1; } int test(treenode *s1,treenode *s2) { int j,k,n=0; for(j=0;j<3;j++) ﻩﻩfor(k=0;k〈3;k++) { ﻩ if(s1-〉a[j][k]!=

11、s2-〉a[j][k]) ﻩﻩ ﻩn++; }; s1-〉exp=n; return n; }; void xuhao(treenode *s) { ﻩi++; s—〉i=i; } void cpynode(treenode *s1,treenode *s2) { ﻩ int j,k; ﻩfor(j=0;j<3;j++) ﻩ for(k=0;k<3;k++) ﻩﻩs1—〉a[j][k]=s2->a[j][k]; s1—〉bef=s2—>bef; s1-〉cost=s2-〉cost; s1-〉exp=s2->exp; ﻩs1—〉degree=s2->de

12、gree; ﻩs1—>i=s2—>i; s1->father=s2—>father; }; void print(treenode *s) { ﻩint j,k; ﻩfor(j=0;j<3;j++) { ﻩ for(k=0;k<3;k++) { ﻩﻩ   printf(”%2d",s->a[j][k]); } ﻩﻩif(j==1)  printf(" n=%2d d=%2d f=%2d”,s—>i,s-〉degree,s-〉father); printf("\n"); } ﻩprintf("\n"); } void position(treenode *s,tre

13、enode *open,treenode *close,treenode *s1) { ﻩint m,n,t,k; treenode *r1; ﻩfor(m=0;m<3;m++) { ﻩ for(n=0;n〈3;n++) { ﻩﻩk=s—〉a[m][n]; ﻩﻩif(k==0) ﻩﻩﻩbreak; }; ﻩif(k==0) break; } ﻩif(m+1<=2&&flag==0)ﻩ{ ﻩ r1=(treenode*)malloc(sizeof(treenode));   ﻩ cpynode(r1,s); ﻩﻩt=r1->a[m+1][n];  

14、 r1—〉a[m+1][n] = r1->a[m][n]; r1—>a[m][n]=t; ﻩextend(r1,s,s1,open,close); }; if(m-1>=0&&flag==0)ﻩ{ ﻩ r1=(treenode*)malloc(sizeof(treenode)); ﻩ   cpynode(r1,s); ﻩ t=r1—>a[m—1][n]; ﻩ   r1—>a[m-1][n]=r1->a[m][n];   r1->a[m][n]=t; extend(r1,s,s1,open,close); }; ﻩif(n-1〉=0 && flag

15、==0) { ﻩﻩr1=(treenode*)malloc(sizeof(treenode));    ﻩcpynode(r1,s); ﻩ t=r1->a[m][n-1]; ﻩ   r1—>a[m][n-1]=r1—>a[m][n]; ﻩ r1-〉a[m][n]=t; ﻩﻩextend(r1,s,s1,open,close); }; ﻩif(n+1〈=2 && flag==0) { ﻩ r1=(treenode*)malloc(sizeof(treenode));    cpynode(r1,s); ﻩﻩt=r1->a[m][n+1];    r1-〉a

16、[m][n+1]=r1->a[m][n];   r1->a[m][n]=t; ﻩextend(r1,s,s1,open,close); }; } void printstr(treenode *s) { ﻩtreenode *t; ﻩt=s-〉late; ﻩwhile(t!=NULL) { ﻩ num++; print(t); ﻩﻩt=t->son; }; } void extend(treenode *r1,treenode *s,treenode *s1,treenode *open,treenode *close) { ﻩ r1—〉father=s—>i

17、 r1->degree=s—>degree+1; ﻩﻩif(test(r1,s1)!=0) { ﻩ ﻩjscost(r1); if(search(r1,close)==1 && search(r1,open)==1) { ﻩxuhao(r1); ﻩadd1(r1,open); ﻩr1—〉bef=s; ﻩﻩﻩ count++; } ﻩ else free(r1); } else { ﻩ xuhao(r1); ﻩﻩﻩjscost(r1); ﻩ count++; ﻩ ﻩadd(r1,close); ﻩﻩr1—〉bef=s;

18、 flag=1; } } int search(treenode *s1,treenode *close) { ﻩtreenode *r,*t; ﻩr=s1; t=close->late; ﻩwhile(t!=NULL) { ﻩﻩif(r—〉exp==t—〉exp) { ﻩif(cmpnode(r,t)==1) ﻩreturn 0; }; ﻩﻩt=t—>late; }; return 1; } void add(treenode *s,treenode *close) { ﻩtreenode *r,*t; ﻩt=s; r=close; ﻩwhi

19、le(r—>late!=NULL) ﻩr=r—>late; r->late=t; t—〉late=NULL; } void add1(treenode *s,treenode *open){ ﻩtreenode *t; ﻩt=open; s->late=t->late; ﻩt-〉late=s; } void adjust1(treenode *close) { treenode *s,*t; ﻩs=close; s—>late->bef=NULL; ﻩwhile(s—〉late!=NULL) s=s—〉late; s->son=NULL; w

20、hile(s->bef!=NULL) { ﻩﻩt=s->bef; t-〉son=s; s=s->bef; }; } void jscost(treenode *s) { s->cost=(s-〉exp)+s-〉degree; } void sortopen(treenode *open) { ﻩtreenode *t,*s,*r; ﻩint k; r=(treenode*)malloc(sizeof(treenode)); t=open-〉late; ﻩwhile(t!=NULL && t—>late!=NULL) { ﻩﻩs=t->late; ﻩﻩ

21、k=t->cost; ﻩﻩﻩwhile(s!=NULL) { if(k > s—>cost) { ﻩ ﻩk=s—>cost; ﻩ cpynode(r,t); ﻩ ﻩ cpynode(t,s); ﻩ ﻩcpynode(s,r); } s=s->late; } ﻩﻩﻩt=t->late; }; } 五、 实验结果: 1、程序截图 2、搜索过程 请输入八数码得初始状态:(以空格为分隔)ﻫ2 8 3 1 0 4 7 6 5 请输入八数码得目标状态 :(以空格为分隔) 1 2 3 8 0 4 7 6 5ﻫ搜索过程如下:ﻫ  2 8 

22、3ﻫ 1 0 4 n= 1 d= 0 f= 0ﻫ 7 6 5ﻫ  2 0 3ﻫ 1 8 4 n= 3 d= 1 f= 1  7 6 5 ﻫ 0 2 3  1 8 4 n= 8 d= 2 f= 3  7 6 5  1 2 3ﻫ 0 8 4 n=10 d= 3 f= 8ﻫ 7 6 5  1 2 3  8 0 4 n=12 d= 4 f=10  7 6 5ﻫﻫ 5 步,12 个节点ﻫPress any key to continue 六、 实验分析: 在进行搜索得过程中,同时记录了扩展新节点得个数。启发式搜索仅扩展12个新节点。可见,在本实验中启发式搜索更优,效率更

23、高。而在求解最短路径得问题上盲目搜索能更高效一点.在实际得应用中应根据具体情况灵活选择不同得策略,提高程序执行效率 启发式搜索就就是在状态空间中得搜索对每一个搜索得位置进行评估,得到最好得位置,再从这个位置进行搜索直到目标。这样可以省略大量无谓得搜索路径,提高了效率。 七、 结论 此次实验用启发式搜索方法求解问题得使用,让我们明白了具体问题具体分析,更明白了算法得重要,好得算法能够极大得提高程序得运行效率。同时,通过此次实践,也对课本知识有了更深刻得认识与体会,真正将课本知识融于实践中就是对我们得最大考验。 这次试验让我更加深入了解了什么就是人工智能,让我了解了人工智能得作用以及含义与人工智能得使用范围以及对于我们未来生活得作用得广大.用机器语言解决实际问题得,提高了动手能力。

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服