人工智能实验指导书_第1页
人工智能实验指导书_第2页
人工智能实验指导书_第3页
人工智能实验指导书_第4页
人工智能实验指导书_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

《人工智能导论》试验 河南理工大学《人工智能》试验指导试验内容试验一状态空间搜寻试验试验二A*算法试验试验三子句消解试验试验四化为子句集的九步法试验试验五BP网络试验温馨提示:上述试验可以承受任何自己生疏的语言来实现0《人工智能导论》试验 河南理工大学试验一 状态空间搜寻试验——八数码问题〔必修,2学时〕一、试验目的及内容试验目的:理解和把握状态空间搜寻的策略试验内容要求:3X31—8求实现这个问题:将该九宫风格整为某种有序的形式,调整的原则为每次只能将空格〔上、下、左、右〕相邻的一个数字平移到空格中,试编程实现这一问题的求解二、试验原理及根本技术路线图〔方框原理图或程序流程图〕试验原理:算法分析:试验流程图:三、所用仪器、材料〔设备名称、型号、规格等或使用软件〕四、试验方法、步骤〔或:程序代码或操作过程〕试验步骤试验源程序六、试验结果、分析和结论1《人工智能导论》试验 河南理工大学试验二 A*算法试验〔2学时〕一、试验目的:A*算法求解N数码难题,理解求解流程和搜寻挨次。二、试验原理:A*算法是一种有序搜寻算法,其特点在于对估价函数的定义上。对于一般的有序搜寻,总是选择f值最小的节点作为扩展节点。因此,f是依据需要找到一条最小代价路径的观点来估算节点的,所以,可考虑每个节点n的估价函数值为两个重量:从起始节点到节点n的代价以及从节点n到达目标节点的代价。三、试验条件:N数码难题演示程序。IE6.0以上,可以上Internet。三、试验内容:815数码为例实际求解A*算法。画出A*算法求解框图。分析估价函数对搜寻算法的影响。分析A*算法的特点。四、试验步骤:开头演示。进入N815数码,点击“选择数码”按钮确定。第一次启动后,点击两次“缺省”或者“随机”按钮,才会消灭图片。2点击“缺省棋局列的初始节点。算法执行。点击“连续执行”则程序自动搜寻求解,并演示每一步结果;点击“单步运行”则每次执行一步求解流程15数码15数码难题演示实例。算法流程的任一时刻的相关状态,openclose5种形式在按钮上方同步显示,便于深入学习理解A*算法。依据程序运行过程画出A*算法框图。其它可参考帮助文件。五、试验报告要求:A*算法流程图和算法框图。试分析估价函数的值对搜寻算法速度的影响。依据A*算法分析启发式搜寻的特点。3《人工智能导论》试验 河南理工大学试验三子句消解试验〔2〕一、试验目的:理解含有变量的子句如何使用消解规章,把握子句消解的原理和规章,能娴熟进展任意两个子句的消解,了解消解推理的某些常用规章。二、试验原理:对子句集进展消解推理,得到相应的结论。为了对含有变量的子句使用消解规章,我们必需找到一个置换,作用于父辈子句使其含有互补文字。消解两个子句时,可能有一个以上的消解式,不过,在任何状况下最多有有限个消解式。三、试验条件子句消解推理演示程序。IE6.以上,可以上Internt四、试验内容:运行并观看演示实例。输入的子句,检查消解结果。依据消解过程理解消解原理和常用规章。五、试验步骤:默认例如演示。进入演示实例,点击“演示实例1消解结果。分别运行“演示实例”和“演示实例4用。自定义消解子句。点击“系统重置”按钮,再通过键盘与两个按钮“~”与“∨”结果。重复步骤3,屡次输入不同子句进展消解,生疏消解过程。六、试验结论:生疏消解过程,理解子句消解规章。给出自己输入的待消解子句、消解结果和具体过程。5《人工智能导论》试验 河南理工大学试验四化为子句集的九步法试验〔2学时〕一、试验目的:理解和把握消解原理,生疏谓词公式化为子句集的九个步骤,理解消解推理规章,能把任意谓词公式转换成子句集。二、试验原理消解是可用于肯定的子句公式的重要推理规章,任一谓词演算公式可以化成一个子句集。通过九步法消解可以从这两个父辈子句推导出一个子句。九步法消解包括消去蕴涵符号、减否认符辖域、对变量标准化、消去存在量词、化为前束型、化为合取范式、消去全程量词、消去合取符、更换变量名,依次变换即可得到子句集。三、试验条件:子句集转换演示程序。IE6.0以上,可以上Internet。四、试验内容:理解消解原理,生疏谓词公式转换成子句集的步骤。五、试验步骤:6程的九个步骤按钮,得到消解结果。自定义消解目标。点击“去除”删除默认公式,利用界面键盘输入的消解目标,语法检查。点击“语法检查”检查输入谓词公式的语法错误。如无错误,则依次点击步骤按钮进展消解。重复运行2、3步,生疏消解原理和消解过程。六、试验报告要求:了解每一步消解的规章和原则。给出一个谓词公式消解的具体过程和结果。分析消解原理的特点和原理。7《人工智能导论》试验 河南理工大学试验五 BP网络试验〔4学时〕一、试验目的:播公式。通过构建BP网络实例,生疏前馈网络的原理及构造。二、试验原理反向传播(BP)BP算法过程从输出节点开头,反向地向第一隐含层(即最接近输入层的隐含层)传播由总误差引起的权值修正。BP(层)节点。输入信号先向前传递到隐节点,经过作用后,再把隐节点的输出信息传递到输出节点,最终给出输出结果。三、试验条件:BP网络演示程序。IE5.0以上版本,能连通Internet。四、试验内容:通过BP网络各项参数的不同设置,观看BP算法的学习效果。观看比较BP网络各项参数变化对于训练结果的影响。五、试验步骤:设置各层神经元个数设置。用户点击下拉列表框选择输入、隐含、输出各层神经元个数,其中隐含层神经元个数自动设为输入层神经元个数(n)2n+1个,然后再点击“确定”BP神经网络示意图以及系统随机生成默认的各层权值。动量因子、迭代次数参数值。各层权值设置,假设用户使用系统随机生成默认的各层权值,则进展第4步。用户8或选中“自定义权”单项选择框自定义权各层权,在权值设置文本域设置权值后,单击其后“确定”按钮。或双击下方列表框选项,相应权值会在权值设置文本域消灭,则进“确定”后两种方式均会成功地激活“确定”按钮。学习样本设置,单文本域中消灭“入层”字样表示在单文本域中设置输入层神经元信号向量。单文本域中消灭“出层”字样表示在单文本域中设置输出层神经元信号如选中,则“校正网络”按钮会成功地激活。样本列表框也具有如步3的双击修改功能。“校正网络”按钮成功地激活后,单击“校正网络”按钮,进展网络学习。当学习完成后〔重设置初始权值、或学习样本等方式〕让网络重“学习六、试验结论:BP网络的根本构造及BP算法的训练过程。试述阈值函数和权值变化对BP网络推理结果的影响。9《人工智能导论》试验 河南理工大学试验一状态空间搜寻试验样例——八数码问题一、试验目的及内容试验目的:理解和把握状态空间搜寻的策略试验内容要求:3X31—8求实现这个问题:将该九宫风格整为某种有序的形式,调整的原则为每次只能将空格〔上、下、左、右〕相邻的一个数字平移到空格中,试编程实现这一问题的求解〕试验原理:也就是奇数排列和偶数排列。我们可以把一个随机排列的数组从左到右从上到下用一个数组表示,例如{8,7,1,5,2,6,3,4,0}其中0代表空格。它在奇序列位置上。在这个数组中我们首先计算它能够重排列出来的结果,公式就是:∑〔F〔X〕〕=Y,其中F〔X〕,就是一个数他前面比这个数小的数的个数,Y为奇数和偶数个有一种解法。那么上面的数组我们就可以解出它的结果。算法分析:九宫问题的求解方法就是交换空格〔0〕位置,直至到达目标位置为止。图形表示就是:因此可知:九宫的所以排列有9!种,也就是362880种排法,数据量是格外大的,我使用广度搜寻,需要记住每一个结点的排列形式,要是用数组记录的话会占用很多的内存,我们把数据进展适当的压缩。使用DWORD形式保存,压缩形式是每个数字用3位表示,这样就是3×9=27个字节,由于8的二进制表示形式1000,不能用3位表示,我使用了一个小技巧就是将8表示位000,然后用多出来的5个字表示8所在的位置,就可以用DWORD表示了。用移位和或操作将数据逐个移入,比乘法速度要快点。定义了几个结10果来存储遍历到了结果和搜寻完成后保存最优路径。试验流程图:开头开头0~8数码序列建立一个队列,将初始结点入队,并设置队列头和尾指取出队列头〔头指针所指〕的结点进展扩展,从它扩展出子结点,并将这些结点按扩展的挨次参加队列推断扩展出的结点与队列中的结点是否重复否是队列头的结点可以扩展,直接返回其次步。否则将队列头指针指向下一结点,再返回其次步。否推断扩展出的结点是否是目标结点,是显示路径程序完毕三、所用仪器、材料〔设备名称、型号、规格等或使用软件〕硬件:个人计算机 一台,MicrosoftVisualC++6.0四、试验方法、步骤〔或:程序代码或操作过程〕11试验步骤C++6.0得文档。输入源程序代码,进展编译,调试运行。运行结果,按提示要求输入1—8这八个数,进展程序测验。试验源程序#include<stdio.h>#include<stdlib.h>#include<windows.h>#include<queue>#include<stack>usingnamespacestd;#defineHashTableSize362881#defineNOT !#defineUP 0#defineDOWN 1#defineLEFT 2#defineRIGHT 3#defineBit typedefstructmaps{Bitdetail[9];intmyindex; //记录自己节点在hash表中的位置Bitposition; //记录空格〔0〕在序列中的位置}Map,*PMap;Map org; // 初始状态int EndIndex; 目标//上移,下移, 左移 ,右移intconstderection[4]={-3 ,3 , -1 ,1};//可移动的四个方向intconstFactorial[9]={40320,5040,720,120,24,6,2,1,1};intHashTable[HashTableSize]={0};//hash表,其中记录的是上一个父节点对应的位置voidinput12{inti,j;intsum,count,index;for(i=0;i<9;i++){scanf(“%1d“,&org.detail[i]);org.detail[i]||(org.position=i);}for(i0i9i //计算逆序{if(0==org.detail[i])continue;for(j=0;j<i;j++)sum+=(0!=org.detail[j]&&org.detail[j]<org.detail[i]);}for(i0index0i9i //hash{for(j=0,count=0;j<i;j++)count+=org.detail[j]>org.detail[i];index+=Factorial[org.detail[i]]*count;}org.myindex=index+1;EndIndexsum%2161328:322561; return;}/***hash值的计算*Parenthash*direcinlineintHashValue(Map&Parentint&direct{inti=Parent.position;intnewindex=Parent.myindex;Bit*p=Parent.detail;switch(direct){caseUP:{newindex-=3*40320;newindex+=(p[i-2]>p[i-3])?(Factorial[p[i-3]]):(-Factorial[p[i-2]]);newindex+=(p[i-1]>p[i-3])?(Factorial[p[i-3]]):(-Factorial[p[i-1]]);13break;}caseDOWN:{newindex+=3*40320;newindex-=(p[i+2]>p[i+3])?(Factorial[p[i+3]]):(-Factorial[p[i+2]]);newindex-=(p[i+1]>p[i+3])?(Factorial[p[i+3]]):(-Factorial[p[i+1]]);break;}caseLEFT:returnnewindex-40320;break;caseRIGHT:returnnewindex+40320;break;}returnnewindex;}/**** 宽度优先搜寻***/voidBfs{queue<Map>Queue;Queue.push(org);HashTable[org.myindex]=-1;while(NOTQueue.empty){Mapnode=Queue.front;Queue.pop;for(intk=0;k<4;k++){Maptmp=node;tmp.position=node.position+derection[k];if(tmp.position<0||tmp.position>8||(k>1&&tmp.position/3!=node.position/3))continue;tmp.myindex=HashValue(node,k);if(0!=HashTable[tmp.myindex])continue;tmp.detail[node.positiontmp.detail[tmp.position//移动空格tmp.detail[tmp.position]=0;HashTable[tmp.myindex]node.myindex; //状态记录到hashtable中if(node.myindex==EndIndex)return;Queue.push(tmp);}14}return;}/****通过hash表中记录的进展查找路径***/voidFindPath{intnowindex;intcount=0;intnixu[9],result[9];inti,j,k;stack<int>Stack;Stack.push(EndIndex);nowindex=EndIndex;while(-1!=HashTable[nowindex]){Stack.push(HashTable[nowindex]);nowindex=HashTable[nowindex];}printf(%d\n“,Stack.size-1);getchar;while(NOTStack.empty){nowindex=Stack.top-1;Stack.pop;for(i0i9;i //计算出逆序{nixu[i]=nowindex/Factorial[i];nowindex%=Factorial[i];}memset(result,-1,9*sizeof(int));for(i=0i9i //依据逆序计算排列{for(j=0,k=nixu[i];j<9;j++){if(result[

温馨提示

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

评论

0/150

提交评论