电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

人工智能_实验报告VIP免费

人工智能_实验报告_第1页
1/27
人工智能_实验报告_第2页
2/27
人工智能_实验报告_第3页
3/27
实验一:知识表示方法一、实验目的状态空间表示法是人工智能领域最基本的知识表示方法之一,也是进一步学习状态空间搜索策略的基础,本实验通过牧师与野人渡河的问题,强化学生对知识表示的了解和应用,为人工智能后续环节的课程奠定基础。二、问题描述有n个牧师和n个野人准备渡河,但只有一条能容纳c个人的小船,为了防止野人侵犯牧师,要求无论在何处,牧师的人数不得少于野人的人数(除非牧师人数为0),且假定野人与牧师都会划船,试设计一个算法,确定他们能否渡过河去,若能,则给出小船来回次数最少的最佳方案。三、基本要求输入:牧师人数(即野人人数):n;小船一次最多载人量:c。输出:若问题无解,则显示Failed,否则,显示Successed输出一组最佳方案。用三元组(X],X2,X3)表示渡河过程中的状态。并用箭头连接相邻状态以表示迁移过程:初始状态->中间状态->目标状态。例:当输入n=2,c=2时,输出:221->110->211->010->021->000其中:X]表示起始岸上的牧师人数;X2表示起始岸上的野人人数;X3表示小船现在位置(1表示起始岸,0表示目的岸)。要求:写出算法的设计思想和源程序,并以图形用户界面实现人机交互,进行输入和输出结果,如:Pleaseinputn:2Pleaseinputc:2SuccessedorFailed?:SuccessedOptimalProcedure:22]->]]0->2]]->0]0->02]->000四、实验组织运行要求本实验采用集中授课形式,每个同学独立完成上述实验要求。五、实验条件每人一台计算机独立完成实验。六、实验代码{public:staticintn;intiPastor;//牧师数量intiSavage;//野人数量intiBoatAtSide;//船所在河岸State*pPrevious;//前一个状态State(intpastor,intsavage,intboatAtSide);intgetTotalCount();//获得此岸总人数boolcheck();//检查人数是否符合实际boolisSafe();//检查是否安全Stateoperator+(Boat&boat);Stateoperator-(Boat&boat);booloperator==(State&state);};〃过河问题classRiverCrossing{private:std::list〈State*>openList,closeList;StateendState;boolmove(State*nowState.Boat*boat);//进行一次决策State*findInList(std::list〈State*>&listToCheck,State&state);//检查某状态节点是否在列表中voidprint(State*endState);//打印结果public:staticvoidShowInfo();RiverCrossing(intn,intc);boolsolve();//求解问题};RiverCrossing.cpp#include"RiverCrossing.h"#include#include〈stack>#includeusingnamespacestd;//类静态变量定义intState::n=0;intBoat::c=0;/*=========================Methodsforclass"Boat"=========================*/Boat::Boat(intpastor,intsavage){this->pastor=pastor;this->savage=savage;}/*=========================Methodsforclass"State"=========================*/〃构造函数State::State(intpastor,intsavage,intboatAtSide){this->iPastor=pastor;this—>iSavage=savage;this->iBoatAtSide=boatAtSide;this->pPrevious=NULL;}//获取此岸总人数intState::getTotalCount(){returniPastor+iSavage;}〃检查人数是否在0到n之间boolState::check(){return(iPastor>=0&&iPastor<=n&&iSavage>=0&&iSavage<=n);}//按照规则检查牧师得否安全boolState::isSafe(){//此岸的安全:x1==0||x1>=x2//彼岸的安全:(n-xl)==0||(n-xl)>=(n-x2)//将上述条件联立后得到如下条件return(iPastor==0||iPastor==n||iPastor==iSavage);}//重载+符号,表示船开到此岸StateState::operator+(Boat&boat){Stateret(iPastor+boat.pastor,iSavage+boat.savage,iBoatAtSide+1);ret.pPrevious=this;returnret;}//重载-符号,表示船从此岸开走StateState::operator-(Boat&boat){Stateret(iPastor-boat.pastor,iSavage-boat.savage,iBoatAtSide-1);ret.pPrevious=this;returnret;}//重载==符号,比较两个节点是否是相同的状态boolState::operator==(State&state){return(this->iPastor==state.iPastor&&this->iSavage==state.iSavage&&this->iBoatAtSide==state.iBoatAtSide);}/*=======================Methodsforclass"RiverCrossing"================...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

人工智能_实验报告

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部