2023年人工智能大作业实验.pdf
湖南中医药大学本科课程实验教学大纲 人工智能计算机科学与技术专业执笔人:丁长松审定人:*学院负责人:*湖南中医药大学教务处二。一四年三月一、课程性质和教学目的 人工智能是计算机专业本科生的一门专业必修课,适应于计算机科学与技术专业、医药信息工程专业。本课程是关于人工智能领域的引导性课程,通过本课程的学习,是使学生了解和掌握人工智能的基本概念、原理和方法,培养学生在计算机领域中应用人工智能技术提高分析和解决较复杂问题的能力,启发学生对人工智能的爱好,培养知识创新和技术创新能力。人工智能重要研究智能信息解决技术、开发具有智能特性的各类应用系统的核心技术。本课程重要介绍人工智能的基本理论、方法和技术,重要涉及常用的知识表达、逻辑推理和问题求解方法、人工智能发展学派以及重要理论。先修课程:高等数学、数据结构、数据库原理、算法设计与分析、数理逻辑二、课程目的人工智能实验应在一种为高效率开发专家系统而设计的高级程序系统或高级程序设计语言环境中进行。在目前开来,专家系统开发工具和环境可分为5种重要类型:程序设计语言、知识工程语言、辅助型工具、支持工具及开发环境。在这里重要是规定学生能用相关术语描述、表达一些问题;用程序设计语言如:C、C+、JAVA编程来实现一些基本的算法、推理、搜索等过程。三 实验内容与规定实验一:谓词表达【实验内容】设农夫、狼、山羊、白菜都在河的左岸,现在要把它们运送到河的右岸去,农 夫 有 条 船,过河时,除农夫外船上至多能载狼、山羊、白菜中的一种。狼要吃山羊,山羊要吃白菜,除非农夫在那里。试设计出一个保证所有都能过河的方案。【实验目的】让学生加深对谓词逻辑和谓词知识表达的理解。【实验规定】写出所用谓词的定义,并给出每个谓词的功能及变量的个体域,然后编程来实现。【参考学时】1.定义状态的谓词2.定义变元的个体域3.描述问题的初始和目的状态4.定义动作5.解释过程解:(1)先定义描述状态的谓词AL(x):x 在左岸rAL(x)表达x 在右岸。(2)定义个体域x 的个体域:农夫,船,狼,羊,白菜。(3)定义初始状态和目的状态问题的初始状态:AL(农夫),AL(船),AL(狼),AL(羊),AL(白菜),问题的目的状态:L(农夫),R L(船),-AL(狼),rA L(羊)AL(白菜)(4)定义动作4 个动作:农夫不带来回农夫带来回L-R:农夫自己划船从左岸到右岸L-R(x):农夫带着x 划船从左岸到右岸R-L:农夫自己划船从右岸到左岸R-L(x):农夫带着x 划船从右岸到左岸x 的个体域是 狼,羊,白菜。L-R:农夫划船从左岸到右岸条件:AL(船),A L(农夫),rA L(狼)V”L(羊),-A L(羊)V rA L(白菜)动作:删除表:AL(船),AL(农夫)添加表:A L(船),-AL(农夫)L-R(狼):农夫带着狼划船从左岸到右岸条件:AL(船),AL(农夫),AL(狼),rAL(羊)动作:删除表:AL(船),AL(农夫),AL(狼)添加表:M L(船)A L(农夫),血(狼)L-R(羊):农夫带着羊划船从左岸到右岸条件:AL(船),A L(农夫),AL(羊),AL(狼),A L(白菜)或:AL(船),AL(农夫),A L(羊),M L(狼)AL(白菜)动作:删除表:AL(船),AL(农夫),A L(羊)添加表:AL(船),(农夫),F L(羊)L-R(白菜):农夫带着白菜划船从左岸到右岸条件:AL(船),AL(农夫),AL(白菜),-AL(狼)动作:删除表:A L(船),AL(农夫),A L(白菜)添加表AL(船),rAL(农夫),rA L(白菜)R-L:农夫划船从右岸到左岸条件:rA L(船),rAL(农夫),AL(狼)VAL(羊),AL(羊)V A L(白菜)或:rA L (船),rAL(农夫),rA L(狼)AL(白菜),AL(羊)动作:删除表:rAL(船),-A L (农夫)添加表:AL(船),AL(农夫)R-L (羊):农夫带着羊划船从右岸到左岸条件:r A L(船),rAL(农夫),rAL(羊),rA L(狼)JAL(羊),AL(白菜)动作:删除表:rA L(船),rAL(农夫),rA L(羊)添加表:AL(船),AL(农夫),AL(羊)(3)问题求解过程AL(农夫A1AL(狼)。AL(农夫WAL旧菜AAL(船 户L-R(羊*AL(白菜).,R-L AL(船)L-R(狼W-AL(农 R.L(羊)A L Q艮尸,f-AIX 农 o AL(狼)t=夫-AL(羊 W夫户AL(白菜WrAL(船 AAL旧菜)“、AL(船 rAL佯州rAL(狼)“AL(农夫),AL佯 AAL(农夫”-AIZ 农AL(船)川 L-R(白菜)山(农A Y,、1-rR-L AL(船 AL-R(羊)p%仅,二 夫)川A M干尸天A AL(羊”AL(白菜V3(船),AI/白*A L(羊 A血(狼)“rAL(白菜),rAL(白代码如下#i nc 1 ude#i ncludet y pe d ef i n tdatat y pe;/d a tatype 定义stru c t seqqu e/队列结构体1 n t max n u m;in tf,r;。存放头尾下标d a tatype*q;);t y p e d e f s tru c t s eqq u e*ps e qque;/*创建一个新的队列*/pseqque c r eatempt y qu e u e(i n t m)(pseqq u e pa q u=(p seqque)mall o c(sizeof(s tru c t s eqque);。申请结构体动态空间oif(paqu!=NULL)。(paq u-q=(datatype*)ma 1 loc(siz e of(d a t a t y p e)*m);申请 d a ta t ype 动态空间M f(paqu-q)(p a q u -maxnum=m;a 叩a qu-f=O;置头下标为0。p aqu-r=O;“/置尾下标为0。r e turn p aq u;00 Jelse free(paqu);)pr i nt f(超过存储空间!”);r e t u rn N U LL;)/*入队运算函数*/v o id enq u e(p s e q que paqu,datatype x)i f(paq u-r+1 )%(p a q u-m a x n u m)=paqu-f)P r intf(队列已满!”);oelsee paqu-qp a q u-r=x;pa q u-r=(p a q u-r+l)%(p a qu-maxnum);)/*出队运算函数*/void d eque(p s e q que paqu)(if(paq u f=p a q u r)P rin t f(空队列!);else。p aq u-f=(p a q u-f+1)%(paqu-maxnum);)/*取队列头元素*/d a t a t y p e f ro n tq u e(p seqque p a qu)(A f(paqu-f=paqu-r)p r intf(队列为空!);e 1 se retu r n(paq u qpaqu-f);)/*判断是否为空队列函数*/i n t isem p tyque(p seqque p aqu)。i f(paqu-f=p aqu-r)o o r e t u rn 1;oels ereturn 0;)/*判断农夫位置*/int farme r(i nt 1 oc a tion)(r e t u r n(0!=(lo c a t io n&0 x 0 8);)/*判断狼位置*/int w o 1 f(int 1 o c a tion)(ret u rn (0!=(location&0 x04);)/*判断白菜位置*/i n t cab b age(int locat i on)(retur n(0!=(loca t ion&0 x 0 2);)/*判断羊位置*/int goat(int 1 oc a ti o n)ret u rn(0!=(loc a t i o n&0 x0 1);)/*安全状态的判断函数*/int safe(i nt 1 o c a tion)(f(g o a t(1 o cation)=c abbag e(locat i o n)&(goat(location)!=farmer(lo c atio n)o r eturn 0产羊吃白菜i f(g oa t(locat i on)=wolf(1 ocat i o n)&(wolf(loc a tion)!=f a rmer(l o cat i on)好 et u rn 0;。“/狼吃羊return 1 ;)/*解决农夫问题函数*/void fa r m e rpr o b 1 e m(v oid)(int i,m o v e rs ,lo c ati o n,n e w locati o n;“nt r o utel!6;记录已走过的环节p s eqque moveto;g 存放安全的环节0 moveto二 ere a t emptyque u e(1 6);。/创建新队列oen q ue(mo vet o,0 x00);。/置状态初值for(i=0;il 6;i+)。/置已走过环节初值8rou t ei=-l;route0=0;owh i le(!isemptyque(mo v e t o)&(route 1 5 =-1)o 1 oc a tio n=fron t que(mov e t o);/取头状态为当前状态。dequ e(mov e t o);6/删除队列头状态f o r (mover s=1;mov e rs=8;mover s=0;lo c a t ion=r o u te E loc a tio n )00|o pri n tf(位置是:d n,l o c at i on);。if(location=0)一x i t(0);)oelse p r intf(此问题无解!”);/*主函数*/v o id main()(of a rmer p rob 1 em();实验二:一个用于动物辨认的产生式系统【实验内容】设计该系统,让其实现可以辨认老虎、金钱豹、斑马、长颈鹿、企鹅、信天翁 这6种动物。【实验目的】让学生进一步加深对产生式系统的结识和理解。【实验规定】其规则库中应包含至少1 5条规则,假设推理开始时综合数据库中存放有以下事实:动物有暗斑,有长脖子,有长腿,有奶,有蹄。【参考学时】6课时:上机实验6课时。设计如下:(1)IDENT I FIER产生式规则规 则1 1:假如该动物有毛发那么 它是哺乳动物规 则1 2:假如。该动物有奶那 么 它 是 哺 乳 动 物规 则I 3:假如该动物有羽毛那 么 它 是 鸟 类 动 物规 则14:假如 该动物能生蛋它能飞行那 么 它 是 鸟 类 动 物给出的六种动物除了哺乳动物即是鸟类动物,故11-14这一组规则可用于区分这两类动物。规 则I 5:假如。该动物是哺乳动物它吃肉那 么 它 是 肉 食 动 物规 则16:假如该动物是哺乳动物它长有爪子它长有利齿它眼睛前视那么。它是肉食动物规 则I 7:假如该动物是哺乳动物它长有蹄那么。它是有蹄动物规则瓜假如 该动物是哺乳动物它反刍那么。它是有蹄动物,并且是偶蹄动物I5-I 8用于区分哺乳动物中的食肉动物和有蹄动物。规则I 9:假如。该动物是食肉动物它有暗斑那么 它是金钱豹规则H 0:假如 该动物是食肉动物它没有暗斑它有黄色条纹那么它是老虎19110用于区分肉食动物。规则I l l:假如。该动物是有蹄动物它有长脖子那么。它是长颈鹿规则112:假如。该动物是有蹄动物它没有长脖子它有黑白条纹那么。它是斑马I11-H 2用于区分蹄型动物。规则I I 3:假如 该动物是鸟类它有能游水那么他是会水鸟类规则114:假如。该动物是鸟类它有长腿它会飞那么 它是信天翁规则115:假如该动物是会水鸟类它不会飞它是黑色和白色的那么 它是信企鹅113-11 5 用于区分鸟类动物。代码如下:#i n clu d e#includeint main()(int a 5 =0,0,0,0,0;p r in t f(请输入该动物的特性有的特性输入1fo r(int k=0;k 5;k+)g i f(k=0)。p ri n tf(该动物是否有奶?n);o els e if(k=l)。printf(该动物是否有蹄?n);“else if(k=2)。p rint f(该动物是否有长腿?n );。e Ise i f(k=3)p r i ntf(该动物是否有暗斑?n);e 1 se if(k=4)。p rin t f(该动物是否有长脖子?n);。s canf(%d,&ak);无的特性输入0nn );。0T r i nt f(输入的序列为:);for(in t j=O;j5;j+)(printf(%d,aj);叩 r i n tf(int b=-l;fo r(int i=0;i5;i+)(o i f(i=0)。oi f(a i=1 )p i n t f(该动物是哺乳动物n);8b=1 ;O b 。o i f(a i=o)甲r intf(该动物不是哺乳动物 n);。o b=0;0 0 if(i=l)08 i f(ai=1&b=1 )。printf(该动物是有蹄动物n”);ob=ll;008“f(ai=0&b=1)printf(n该动物不是有蹄动物n”);。ob=l 0;0b js i f(i=2)if(ai=1&b=0)ggpri n tf(该动物有长腿n);。b=0 1,信天翁)8,if(a i=0&b=0)。r i ntf(该动物没有长腿n);。b=0 0;/企鹅。if(i=3)i f(a i =l&b=10)p rintf(该动物有暗斑n);,b=l()1;猎豹6 6 6 。if(ai=0&b=10)sprint f(该动物无暗斑n n );gb=100;老虎0 0 J6 0 )8if(i=4)。if(ai=l&b=l 1)“叩 rint f(该动物有长脖子n”);o 由 二 111;长颈鹿0)。if(ai=O&b=11)“pr i n t f(该动物没有长脖子n)。8b=1 1 0;/斑马)。if(b=01)。P rin t f(该动物是信天翁n”);els e if(b=0 0)-print f(该动物是企鹅n)else i f(b=1 0 1)。叩 rintf(该动物是猎豹n“);else i f(b=l 0 0)“pr i n tf(该动物是老虎n);el s e if(b=111)P r i ntf(该动物是长颈鹿n);el s e if(b=110)“print f(该动物是斑马n)else叩 r in tf (该动物不存在 n”);s y stem(npauseM);r e turn 0;实验三:子句消解代码如下#i nclu d e#i n c 1 u de#in c 1 ude#i n c 1 ud e#d e f i ne N 50#d e fine M 50void R e p laceStrin g(ch a r*Src,c ha r*a,ch a r*b)(cha r*ptr;int 1 e n=s tr 1 en(S r c);ptr=(cha r*)ma 1 1 o c(si z e o f(c h a r)*1 e n+1 0);strcpy(p tr,Sr c);in t s ubL e n_ a=strle n(a);oint subLen_b=str 1 en(b);o i nt j;i nt k=subLen_ b-s u bL e n_ a;for(int i=0;ilen;i+)(0。时f(O=str n cm p(&p tri,a,s u b L e n a)0000f o r(j=i+s u bL e na;j len;j+)。ptrj+k=p t rj;。s trncpy(&pt r i,b,sub Len_b);1)p t r l e n +k =0;strep y(Src,pt r);)vo i d xiao j ie(c h ar a E,c harblJ)(char ANJNJ,B N N;i n t n=0,m=0,i,j;i n t lent h _a=st r I en(a),len t h _b=st r len(b);f o r(i=0;ilenth_a;i+)(i f(a i!=V)0 0 IAn m=ai;6 m+;)else6 oAn m=0;m=0;0 0n+;A n m=O,;o in t k=n;/A的记录行数n=0 ,m=0;o fo r(i=0;i 1 e n t h _ b;i+)o i f(b i !=Y)=b i ;3 m+;e l s e6(o B n mJ X O ;m=0 ;n+;。B n m=0,;。i n t r=n ;/B的记录行数0。/检查两子句是否具有互补对fo r(n=0;n =k;n +)(。fo r(m=0;m=r ;m+)o i f(B m 0 =,)&(B m 1 =A n )/出现互补对0 0 I/置换。c h ar x N N ,y N N ;i n t g=0 ,h=0;。l e n th _ a=s tr 1 e n (A n );1 e n th _ b=s tr i e n(B m);。fo r(i=2;i 1 e n th _ a-1 ;i +)a a(if(A n i!=;)。x g h =A n L i;s o e h+;)e l s e0 0|8 o x g h -0*;o o o o h=0;og+;-x g h =0,;8 g=0,h=0;“fo r (i=3;i lent h _ b-1;i +)|f(B n i !=;)8 gy g h =B n i ;。由+;b)o 1 s e0 0 I。y g h =o ;。h=0;o g+;0 8)0 0 )y g h =0;,fo r(in t i =0;i=s t r l e n (y i )6 0 6 C 0ut x i v ”/y i endl;。f o r (j=0;j =r ;j+)R e p 1 ac e S t r in g(B j ,y i,x i );d 0 I8 if(s tr l e n (x i)s tr 1 e n(y i)(8。c O U t y i ,7,x i e n d l;a。f o r (j =0 ;j=k;j+)R e p 1 a c e S tr in g(A j ,x i ,y i );)0 0 01()fo r(i=n;i =k;i+)/消去互补对s tr c py(A i,A i+l );“k=k -1 ;fo r(i=m;i=r ;i +)s tr c p y (B i,B i +1);o o r =r -1 ;)e 1 s e i f(A n 0=)&(A n l =B m 0 )c h ar x N N ,y N N ;in t g=0,h=0;3 1 e n th _ a=s t r l e n(A n );g 1 e n th _ b=s tr l e n (B m);fo r (i=3;i l e n th a;i +)。if(A n i!=7)x g h =A n i ;a 0 h+;b。else(。X g h =,0 ;O O o h=0;g+;。Ob b x g h =z 0 ;g g=0 ,h=0 ;。gf o r (i=2 ;i e l s e0000。y g h=,c r;。h=0 ;00 8 Q+y g h =0 ;OD。f o r (i=0;i=s tr l e n(y i )000 I尔 o u t x i Vn y i e n d 1;0000fo r(j =O;j v=r;j +)R e p 1 aceString(B j ,yi,x i);。if(strl e n(xi)st r len(y i)g“coutV”&*e n dl;。c o utyi 7 x Eiend 1 ;。for(j=0;j=k;j+)g Repla c eString(A j ,x Li,yi);0 0 0 80 f o r(i=n;i=k;i+)/消去互补对。8 s t r c py(Ai,Ai+1);。k=k-l;。匕 fo r(i=m;i=r;i+)g o strcpy(B i,B i+1 1);g r=r-l;O d d gge 1 se co n t i nu e;0 0 。输出结果。,c o u t 消解后的字句为:endl;。f o r(n=0;n=k;n+)ocoutA n,Vn;f o r(m=0;m r;m+)o o o c o u t B m nVu;。cout B m endl;v o id m a i n ()c h a r a N ,b N ;c o Ut v”请输入所要消解的第一个子句:e n d l;ci n a;c o ut b;x iao j ie (a,b);运营结果:D:学习软件MSDev98MyPrqjects子句消魁De W 2T请输入所要消解的第一个子句:Px,f(y)VQ(x)VR(f(a),y)请输入所要消解的第二个子句:Pf(f(a),zVR(z,w)f(f(a)/xf(y)/z消解后的字句为:Q(f(f(a)VR(f(a),y)VR(f(y),w)Press any key to continuerrr四、教材与教学资源选用教材:蔡自兴,徐光祐。人工智能及应用,第4版。清华大学出版社,2 0 2 3.参考书目:1.王 万 森.人工智能原理及其应用(第2版),电子工业出版社,2 0 23.1。普通高等教育“十一五”国家级规划教材,北京市精品教材。书号:I S B N:9 7 8-7-1 2 1-03 7 3 0-6.2.人工智能基础教材,邵军力、张景等编著,电子工业出版社3 .人工智能引论 美E.丽奇著,李卫华等译,广东科技出版社4 .人工智能导论林尧瑞、马少平著,清华大学出版社。五、教学时间分派序号实验名称内容提纲每组人数实验时数实验类型所在实验室1用谓词表达农夫、狼、山羊、白菜问题试设计出一个保证农夫、狼、山羊、白菜都能过河的方案。34基础机房2设计一个动物辨认的产生式系统设计让其实现可以辨认老虎、金钱豹、斑马、长颈鹿、企鹅、信天翁这6 种动物的系统36设计机房3八数码难题在 3x3的方格棋盘上,分别放置了标有数字1、2、3、4、5、6、7、8 的八张牌,初始状态S0按照规则移动到目的状态S 836设计机房4讨论人工智能的发展趋势12讨论教室六 大纲说明(一)合用对象与参考学时本课程合用于计算机专业本科学生,参考学时4 8 学时,其中上机实验16学时,讨论2 学时。(二)教学建议实践教学:在课程后半程安排适当的上机实验和课堂讨论,让学生应用人工智能的理论、方法,分组设计几个软件,使理论与实际相结合。测评:课程实验考试方式为考察;实验教学部分应占课程总成绩的比例20%:在课程考试笔试中,实验内容占考试内容的比例不超过5%。实验成绩中预习占0.1、操作占0.3、实验纪律占0.1、实验报告占0.5,以等级制(优=90、良 =80、中=7 0 、合 格 =60、差=50、零 =0 )记分并进行最终得分折算;本课程最后成绩=实验成绩*0.2+课程考试成绩*0.8。