您好,欢迎访问三七文档
湖南中医药大学本科课程实验教学大纲《人工智能》计算机科学与技术专业执笔人:丁长松审定人:***学院负责人:***湖南中医药大学教务处二○一四年三月一、课程性质和教学目的《人工智能》是计算机专业本科生的一门专业必修课,适应于计算机科学与技术专业、医药信息工程专业。本课程是关于人工智能领域的引导性课程,通过本课程的学习,是使学生了解和掌握人工智能的基本概念、原理和方法,培养学生在计算机领域中应用人工智能技术提高分析和解决较复杂问题的能力,启发学生对人工智能的兴趣,培养知识创新和技术创新能力。《人工智能》主要研究智能信息处理技术、开发具有智能特性的各类应用系统的核心技术。本课程主要介绍人工智能的基本理论、方法和技术,主要包括常用的知识表示、逻辑推理和问题求解方法、人工智能发展学派以及主要理论。先修课程:高等数学、数据结构、数据库原理、算法设计与分析、数理逻辑二、课程目标人工智能实验应在一种为高效率开发专家系统而设计的高级程序系统或高级程序设计语言环境中进行。在目前开来,专家系统开发工具和环境可分为5种主要类型:程序设计语言、知识工程语言、辅助型工具、支持工具及开发环境。在这里主要是要求学生能用相关术语描述、表示一些问题;用程序设计语言如:C、C++、JAVA编程来实现一些基本的算法、推理、搜索等过程。三、实验内容与要求实验一:谓词表示【实验内容】设农夫、狼、山羊、白菜都在河的左岸,现在要把它们运送到河的右岸去,农夫有条船,过河时,除农夫外船上至多能载狼、山羊、白菜中的一种。狼要吃山羊,山羊要吃白菜,除非农夫在那里。试设计出一个确保全部都能过河的方案。【实验目的】让学生加深对谓词逻辑和谓词知识表示的理解。【实验要求】写出所用谓词的定义,并给出每个谓词的功能及变量的个体域,然后编程来实现。【参考学时】1.定义状态的谓词2.定义变元的个体域3.描述问题的初始和目标状态4.定义动作5.解释过程解:(1)先定义描述状态的谓词AL(x):x在左岸¬AL(x)表示x在右岸。(2)定义个体域x的个体域:{农夫,船,狼,羊,白菜}。(3)定义初始状态和目标状态问题的初始状态:AL(农夫),AL(船),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(狼),¬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:农夫划船从右岸到左岸条件:¬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)问题求解过程代码如下#includestdio.h#includemalloc.htypedefintdatatype;//datatype定义structseqque//队列结构体{intmaxnum;intf,r;//存放头尾下标datatype*q;};typedefstructseqque*pseqque;/*创建一个新的队列*/pseqquecreatemptyqueue(intm){pseqquepaqu=(pseqque)malloc(sizeof(structseqque));//申请结构体动态空间if(paqu!=NULL){paqu-q=(datatype*)malloc(sizeof(datatype)*m);//申请datatype动态空间if(paqu-q){paqu-maxnum=m;paqu-f=0;//置头下标为0paqu-r=0;//置尾下标为0returnpaqu;}elsefree(paqu);}printf(超出存储空间!);returnNULL;}/*入队运算函数*/voidenque(pseqquepaqu,datatypex){if((paqu-r+1)%(paqu-maxnum)==paqu-f)printf(队列已满!);else{paqu-q[paqu-r]=x;paqu-r=(paqu-r+1)%(paqu-maxnum);}}/*出队运算函数*/voiddeque(pseqquepaqu){if(paqu-f==paqu-r)printf(空队列!);elsepaqu-f=(paqu-f+1)%(paqu-maxnum);}/*取队列头元素*/datatypefrontque(pseqquepaqu){if(paqu-f==paqu-r)printf(队列为空!);elsereturn(paqu-q[paqu-f]);}/*判断是否为空队列函数*/intisemptyque(pseqquepaqu){if(paqu-f==paqu-r)return1;elsereturn0;}/*判断农夫位置*/intfarmer(intlocation){return(0!=(location&0x08));}/*判断狼位置*/intwolf(intlocation){return(0!=(location&0x04));}/*判断白菜位置*/intcabbage(intlocation){return(0!=(location&0x02));}/*判断羊位置*/intgoat(intlocation){return(0!=(location&0x01));}/*安全状态的判断函数*/intsafe(intlocation){if((goat(location)==cabbage(location))&&(goat(location)!=farmer(location)))return0;//羊吃白菜if((goat(location)==wolf(location))&&(wolf(location)!=farmer(location)))return0;//狼吃羊return1;}/*解决农夫问题函数*/voidfarmerproblem(void){inti,movers,location,newlocation;introute[16];//记录已走过的步骤pseqquemoveto;//存放安全的步骤moveto=createmptyqueue(16);//创建新队列enque(moveto,0x00);//置状态初值for(i=0;i16;i++)//置已走过步骤初值route[i]=-1;route[0]=0;while(!isemptyque(moveto)&&(route[15]==-1)){location=frontque(moveto);//取头状态为当前状态deque(moveto);//删除队列头状态for(movers=1;movers=8;movers=1)//依次考虑羊、白菜、狼、农夫的移动if((0!=(location&0x08))==(0!=(location&movers)))//判断是否和农夫同边{newlocation=location^(0x08|movers);//移动后的状态if(safe(newlocation)&&(route[newlocation]==-1))//判断是否为安全状态{route[newlocation]=location;//将新的安全状态赋给locationenque(moveto,newlocation);//新的状态入队列}}}if(route[15]!=-1)//到达最终状态{printf(过程是:\n);//输出过程和位置for(location=15;location=0;location=route[location]){printf(位置是:%d\n,location);if(location==0)exit(0);}}elseprintf(此问题无解!);}/*主函数*/voidmain(){farmerproblem();}实验二:一个用于动物识别的产生式系统【实验内容】设计该系统,让其实现可以识别老虎、金钱豹、斑马、长颈鹿、企鹅、信天翁这6种动物。【实验目的】让学生进一步加深对产生式系统的认识和理解。【实验要求】其规则库中应包含至少15条规则,假设推理开始时综合数据库中存放有以下事实:动物有暗斑,有长脖子,有长腿,有奶,有蹄。【参考学时】6课时:上机实验6课时。设计如下:(1)IDENTIFIER产生式规则规则I1:如果该动物有毛发那么它是哺乳动物规则I2:如果该动物有奶那么它是哺乳动物规则I3:如果该动物有羽毛那么它是鸟类动物规则I4:如果该动物能生蛋它能飞行那么它是鸟类动物给出的六种动物除了哺乳动物即是鸟类动物,故I1-I4这一组规则可用于区分这两类动物。规则I5:如果该动物是哺乳动物它吃肉那么它是肉食动物规则I6:如果该动物是哺乳动物它长有爪子它长有利齿它眼睛前视那么它是肉食动物规则I7:如果该动物是哺乳动物它长有蹄那么它是有蹄动物规则I8:如果该动物是哺乳动物它反刍那么它是有蹄动物,并且是偶蹄动物I5-I8用于区分哺乳动物中的食肉动物和有蹄动物。规则I9:如果该动物是食肉动物它有暗斑那么它是金钱豹规则I10:如果该动物是食肉动物它没有暗斑它有黄色条纹那么它是老虎I9-I10用于区分肉食动物。规则I11:如果该动物是有蹄动物它有长脖子那么它是长颈鹿规则I12:如果该动物是有蹄动物它没有长脖子它有黑白条纹那么它是斑马I11-I12用于区分蹄型动物。规则I13:如果该动物是鸟类它有能游水那么他是会水鸟类规则I14:如果该动物是鸟类它有长腿它会飞那么它是信天翁规则I15:如果该动物是会水鸟类它不会飞它是黑色和白色的那么它是信企鹅I13-I15用于区分鸟类动物。代码如下:#includestdio.h#includestdlib.hintmain(){inta[5]={0,0,0,0,0};printf(请输入该动物的特征有的特征输入1无的特征输入0\n\n);for(intk=0;k5;k++){if(k==0)printf(该动物是否有奶?\n);elseif(k==1)printf(该动物是否有蹄?\n);elseif(k==2)printf(该动物是否有长腿?\n);elseif(k==3)printf(该动物是否有暗斑?\n);elseif(k==4)printf(该动物是否有长脖子?\n);scanf(%d,&a[k]);}printf
本文标题:人工智能大作业实验
链接地址:https://www.777doc.com/doc-7030469 .html