人工智能大作业实验;_第1页
人工智能大作业实验;_第2页
人工智能大作业实验;_第3页
人工智能大作业实验;_第4页
人工智能大作业实验;_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、湖南中医药大学本科课程实验教学大纲人工智能计算机科学与技术专业执笔人:丁长松 审定人:*学院负责人:*湖南中医药大学教务处二一四年三月一、课程性质和教学目的人工智能是计算机专业本科生的一门专业必修课,适应于计算机科学与技术专业、医药信息工程专业。本课程是关于人工智能领域的引导性课程,通过本课程的学习,是使学生了解和掌握人工智能的基本概念、原理和方法,培养学生在计算机领域中应用人工智能技术提高分析和解决较复杂问题的能力,启发学生对人工智能的兴趣,培养知识创新和技术创新能力。人工智能主要研究智能信息处理技术、开发具有智能特性的各类应用系统的核心技术。本课程主要介绍人工智能的基本理论、方法和技术,主

2、要包括常用的知识表示、逻辑推理和问题求解方法、人工智能发展学派以及主要理论。先修课程:高等数学、数据结构、数据库原理、算法设计与分析、数理逻辑二、课程目标人工智能实验应在一种为高效率开发专家系统而设计的高级程序系统或高级程序设计语言环境中进行。在目前开来,专家系统开发工具和环境可分为5种主要类型:程序设计语言、知识工程语言、辅助型工具、支持工具及开发环境。在这里主要是要求学生能用相关术语描述、表示一些问题;用程序设计语言如:c、c+、java编程来实现一些基本的算法、推理、搜索等过程。 三、实验内容与要求实验一:谓词表示【实验内容】设农夫、狼、山羊、白菜都在河的左岸,现在要把它们运送到河的右岸

3、去,农夫有条 船,过河时,除农夫外船上至多能载狼、山羊、白菜中的一种。狼要吃山羊,山羊要吃白菜,除非农夫在那里。试设计出一个确保全部都能过河的方案。【实验目的】让学生加深对谓词逻辑和谓词知识表示的理解。【实验要求】写出所用谓词的定义,并给出每个谓词的功能及变量的个体域,然后编程来实现。 【参考学时】1. 定义状态的谓词2. 定义变元的个体域3. 描述问题的初始和目标状态4. 定义动作5. 解释过程解:(1) 先定义描述状态的谓词al(x):x在左岸al(x)表示x在右岸。(2)定义个体域x的个体域:农夫,船,狼,羊,白菜。(3)定义初始状态和目标状态 问题的初始状态:al(农夫),al(船),

4、al(狼),al(羊),al(白菜),问题的目标状态:al(农夫),al(船),al(狼),al(羊),al(白菜) (4) 定义动作4个动作:农夫不带来回农夫带来回l-r:农夫自己划船从左岸到右岸l-r(x):农夫带着x划船从左岸到右岸r-l:农夫自己划船从右岸到左岸r-l(x) :农夫带着x划船从右岸到左岸x的个体域是狼,羊,白菜。l-r:农夫划船从左岸到右岸 条件:al(船),al(农夫),al(狼)al(羊),al(羊)al(白菜) 动作:删除表:al(船),al(农夫) 添加表:al(船),al(农夫)l-r(狼):农夫带着狼划船从左岸到右岸 条件:al(船),al(农夫),al(狼

5、),al(羊) 动作:删除表:al(船),al(农夫),al(狼) 添加表:al(船),al(农夫),al(狼)l-r(羊):农夫带着羊划船从左岸到右岸 条件:al(船),al(农夫),al(羊), al(狼),al(白菜) 或:al(船),al(农夫),al(羊),al(狼),al(白菜) 动作:删除表:al(船),al(农夫),al(羊) 添加表:al(船),al(农夫),al(羊)l-r(白菜):农夫带着白菜划船从左岸到右岸 条件:al(船),al(农夫),al(白菜),al(狼) 动作:删除表:al(船),al(农夫),al(白菜) 添加表:al(船),al(农夫),al(白菜)r-l

6、:农夫划船从右岸到左岸 条件:al(船),al(农夫),al(狼)al(羊),al(羊)al(白菜) 或:al(船),al(农夫) ,al(狼),al(白菜),al(羊) 动作:删除表:al(船),al(农夫) 添加表:al(船),al(农夫)r-l(羊) :农夫带着羊划船从右岸到左岸 条件:al(船),al(农夫),al(羊) ,al(狼),al(羊),al(白菜) 动作:删除表:al(船),al(农夫),al(羊) 添加表:al(船),al(农夫),al(羊)(3) 问题求解过程代码如下#include#includetypedef int datatype;/datatype定义stru

7、ct seqque/队列结构体int maxnum;int f,r;/存放头尾下标datatype *q;typedef struct seqque *pseqque;/*创建一个新的队列*/pseqque createmptyqueue (int m)pseqque paqu=(pseqque)malloc(sizeof(struct seqque);/申请结构体动态空间if (paqu!=null)paqu-q=(datatype*)malloc(sizeof(datatype)*m);/申请datatype动态空间if (paqu-q)paqu-maxnum=m;paqu-f=0;/置头

8、下标为0paqu-r=0;/置尾下标为0return paqu;else free(paqu);printf(超出存储空间!);return null;/*入队运算函数*/void enque(pseqque paqu,datatype x)if (paqu-r+1)%(paqu-maxnum)=paqu-f)printf(队列已满!);else paqu-qpaqu-r=x;paqu-r=(paqu-r+1)%(paqu-maxnum);/*出队运算函数*/void deque(pseqque paqu)if (paqu-f=paqu-r)printf(空队列!);elsepaqu-f=(p

9、aqu-f+1)%(paqu-maxnum);/*取队列头元素*/datatype frontque (pseqque paqu)if (paqu-f=paqu-r)printf(队列为空!);else return (paqu-qpaqu-f);/*判断是否为空队列函数*/int isemptyque(pseqque paqu)if (paqu-f=paqu-r)return 1;else return 0;/*判断农夫位置*/int farmer(int location)return(0!=(location&0x08);/*判断狼位置*/int wolf(int location)re

10、turn(0!=(location&0x04);/*判断白菜位置*/int cabbage(int location)return(0!=(location&0x02);/*判断羊位置*/int goat(int location)return(0!=(location&0x01);/*安全状态的判断函数*/int safe(int location)if (goat(location)=cabbage(location)&(goat(location)!=farmer(location)return 0;/羊吃白菜if (goat(location)=wolf(location)&(wolf

11、(location)!=farmer(location)return 0;/狼吃羊return 1;/*解决农夫问题函数*/void farmerproblem(void)int i,movers,location,newlocation;int route16;/记录已走过的步骤pseqque moveto;/存放安全的步骤moveto=createmptyqueue(16);/创建新队列enque(moveto,0x00);/置状态初值for (i=0;i16;i+)/置已走过步骤初值routei=-1;route0=0;while(!isemptyque(moveto)&(route15

12、=-1)location=frontque(moveto);/取头状态为当前状态deque(moveto);/删除队列头状态for (movers=1;movers=8;movers=0;location=routelocation)printf(位置是:%dn,location);if (location=0)exit(0);else printf(此问题无解!);/*主函数*/void main()farmerproblem();实验二:一个用于动物识别的产生式系统【实验内容】设计该系统,让其实现可以识别老虎、金钱豹、斑马、长颈鹿、企鹅、信天翁这6种动物。【实验目的】让学生进一步加深对产生

13、式系统的认识和理解。【实验要求】其规则库中应包含至少15条规则,假设推理开始时综合数据库中存放有以下事实:动物有暗斑,有长脖子,有长腿,有奶,有蹄。【参考学时】6课时:上机实验6课时。设计如下:(1) identifier产生式规则规则i1:如果该动物有毛发 那么它是哺乳动物规则i2:如果该动物有奶 那么它是哺乳动物规则i3:如果该动物有羽毛 那么它是鸟类动物规则i4:如果该动物能生蛋 它能飞行 那么它是鸟类动物给出的六种动物除了哺乳动物即是鸟类动物,故i1-i4这一组规则可用于区分这两类动物。规则i5:如果该动物是哺乳动物 它吃肉 那么它是肉食动物规则i6:如果该动物是哺乳动物 它长有爪子

14、它长有利齿 它眼睛前视 那么它是肉食动物规则i7:如果该动物是哺乳动物 它长有蹄 那么它是有蹄动物规则i8:如果该动物是哺乳动物 它反刍 那么它是有蹄动物,并且是偶蹄动物 i5-i8用于区分哺乳动物中的食肉动物和有蹄动物。规则i9:如果该动物是食肉动物 它有暗斑 那么它是金钱豹规则i10:如果该动物是食肉动物 它没有暗斑 它有黄色条纹 那么它是老虎i9-i10用于区分肉食动物。规则i11:如果该动物是有蹄动物 它有长脖子 那么它是长颈鹿规则i12:如果该动物是有蹄动物 它没有长脖子 它有黑白条纹 那么它是斑马i11-i12用于区分蹄型动物。规则i13:如果该动物是鸟类 它有能游水 那么他是会水

15、鸟类规则i14:如果该动物是鸟类 它有长腿 它会飞 那么它是信天翁规则i15:如果该动物是会水鸟类 它不会飞 它是黑色和白色的 那么它是信企鹅 i13-i15用于区分鸟类动物。代码如下:#include#includeint main()int a5=0,0,0,0,0;printf(请输入该动物的特征 有的特征输入1 无的特征输入0nn);for(int k=0;k5;k+)if(k=0)printf(该动物是否有奶?n);else if(k=1)printf(该动物是否有蹄?n);else if(k=2)printf(该动物是否有长腿?n);else if(k=3)printf(该动物是否

16、有暗斑?n);else if(k=4)printf(该动物是否有长脖子?n);scanf(%d,&ak);printf(输入的序列为:);for(int j=0;j5;j+)printf(%d,aj);printf(n);int b=-1;for(int i=0;i5;i+)if(i=0)if(ai=1)printf(该动物是哺乳动物n);b=1;if(ai=0)printf(该动物不是哺乳动物n);b=0;if(i=1)if(ai=1&b=1)printf(该动物是有蹄动物n);b=11;if(ai=0&b=1)printf(该动物不是有蹄动物n);b=10;if(i=2)if(ai=1&b

17、=0)printf(该动物有长腿n);b=01;/信天翁if(ai=0&b=0)printf(该动物没有长腿n);b=00;/企鹅if(i=3)if(ai=1&b=10)printf(该动物有暗斑n);b=101;/猎豹if(ai=0&b=10)printf(该动物无暗斑nn);b=100;/老虎if(i=4)if(ai=1&b=11)printf(该动物有长脖子n);b=111;/长颈鹿if(ai=0&b=11)printf(该动物没有长脖子n);b=110;/斑马if(b=01)printf(该动物是信天翁n);else if(b=00)printf(该动物是企鹅n);else if(b=

18、101)printf(该动物是猎豹n);else if(b=100)printf(该动物是老虎n);else if(b=111)printf(该动物是长颈鹿n);else if(b=110)printf(该动物是斑马n);elseprintf(该动物不存在n);system(pause);return 0;实验三:子句消解代码如下#include#include#include#include#define n 50#define m 50void replacestring(char *src,char *a,char *b) char *ptr; int len = strlen(src)

19、; ptr = (char*)malloc(sizeof(char)*len + 10); strcpy(ptr, src); int sublen_a = strlen(a);int sublen_b=strlen(b);int j;int k=sublen_b-sublen_a; for ( int i=0; ilen; i+ ) if ( 0=strncmp(&ptri, a, sublen_a) )for(j=i+sublen_a;jlen;j+)ptrj+k=ptrj;strncpy(&ptri, b, sublen_b); ptrlen+k = 0;strcpy(src,ptr);

20、void xiaojie(char a,char b)char ann,bnn;int n=0,m=0,i,j;int lenth_a=strlen(a),lenth_b=strlen(b);for(i=0;ilenth_a;i+)if(ai!=v)anm=ai;m+;elseanm=0;m=0;n+;anm=0;int k=n;/a的记录行数n=0,m=0;for(i=0;ilenth_b;i+)if(bi!=v)bnm=bi;m+;elsebnm=0;m=0;n+;bnm=0;int r=n;/b的记录行数/检查两子句是否含有互补对for(n=0;n=k;n+)for(m=0;m=r;m+

21、)if(bm0=)&(bm1=an0)/出现互补对/置换char xnn,ynn;int g=0,h=0;lenth_a=strlen(an);lenth_b=strlen(bm);for(i=2;ilenth_a-1;i+)if(ani!=,)xgh=ani;h+;elsexgh=0;h=0;g+;xgh=0;g=0,h=0;for(i=3;ilenth_b-1;i+)if(bni!=,)ygh=bni;h+;elseygh=0;h=0;g+;ygh=0;for(int i=0;i=strlen(yi)coutxi/yiendl; for(j=0;j=r;j+)replacestring(b

22、j ,yi, xi); if(strlen(xi)strlen(yi) coutyi/xiendl; for(j=0;j=k;j+)replacestring(aj ,xi, yi);for(i=n;i=k;i+)/消去互补对strcpy(ai,ai+1);k=k-1;for(i=m;i=r;i+)strcpy(bi,bi+1);r=r-1;else if(an0=)&(an1=bm0)char xnn,ynn;int g=0,h=0;lenth_a=strlen(an);lenth_b=strlen(bm);for(i=3;ilenth_a;i+)if(ani!=,)xgh=ani;h+;e

23、lsexgh=0;h=0;g+;xgh=0;g=0,h=0;for(i=2;ilenth_b;i+)if(bni!=,)ygh=bni;h+;elseygh=0;h=0;g+;ygh=0;for(i=0;i=strlen(yi)coutxi/yiendl; for(j=0;j=r;j+) replacestring(bj ,yi, xi); if(strlen(xi)strlen(yi)cout&endl; coutyi/xiendl; for(j=0;j=k;j+)replacestring(aj ,xi, yi);for(i=n;i=k;i+)/消去互补对strcpy(ai,ai+1);k=k-1;for(i=m;i=r;i+)strcpy(bi,bi+1);r=r-1;else continue;/输出结果cout消解后的字句为:endl;for(n=0;n=k;n+)coutanv;for(m=0;mr;m+)coutbmv;coutbmendl;void main()char an,bn;cout请输入所要消解的第一个子句:a;cout请输入所要消解的第二个子

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论