版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、实验内容和要求八数码问题:在3X3的方格棋盘上,摆放着1到8这八个数码,有1个 方格是空的,其初始状态如图1所示,要求对空格执行空格左移、空格右 移、空格上移和空格下移这四个操作使得棋盘从初始状态到目标状态。例如:283164705(a)初始状态图1八数码问题示意图请任选一种盲目搜索算法(广度优先搜索或深度优先搜索)或任选一 种启发式搜索方法(全局择优搜索,加权状态图搜索,A算法或A*算法) 编程求解八数码问题(初始状态任选)。选择一个初始状态,画出搜索树, 填写相应的OPEN表和CLOSED表,给出解路径,对实验结果进行分析总结, 得出结论。二、实验目的1 .熟悉人工智能系统中的问题求解
2、过程;2 .熟悉状态空间的盲目搜索和启发式搜索算法的应用;3 .熟悉对八数码问题的建模、求解及编程语言的应用。三、实验算法A*算法是一种常用的启发式搜索算法。在A*算法中,一个结点位置的好坏用估价函数来对它进行评估。A*算法的 估价函数可表示为:f' (n) = g' (n) + h,(n)这里,f'(n)是估价函数,g' (n)是起点到终点的最短路径值(也称为最小 耗费或最小代价),h' (n)是n到目标的最短路经的启发值。由于这个f' (n) 其实是无法预先知道的,所以实际上使用的是下面的估价函数:f (n) = g(n) + h(n)其中g
3、(n)是从初始结点到节点n的实际代价,h(n)是从结点n到目标结点 的最佳路径的估计代价。在这里主要是h(n)体现了搜索的启发信息,因为 g(n)是已知的。用f (n)作为f' (n)的近似,也就是用g(n)代替g' (n), h(n) 代替h' (n)。这样必须满足两个条件:(1) g(n)>=g (n)(大多数情况下都 是满足的,可以不用考虑),且f必须保持单调递增。(2) h必须小于等于 实际的从当前节点到达目标节点的最小耗费h(n)*h'(n)。第二点特别的 重要。可以证明应用这样的估价函数是可以找到最短路径的。*算法的步骤A*算法基本上与广度优先
4、算法相同,但是在扩展出一个结点后,要计算它 的估价函数,并根据估价函数对待扩展的结点排序,从而保证每次扩展的 结点都是估价函数最小的结点。A*算法的步骤如下:1)建立一个队列,计算初始结点的估价函数f,并将初始结点入队,设置队列头和尾指针。2)取出队列头(队列头指针所指)的结点,如果该结点是目标结点,则 输出路径,程序结束。否则对结点进行扩展。3)检查扩展出的新结点是否与队列中的结点重复,若与不能再扩展的结 点重复(位于队列头指针之前),则将它抛弃;若新结点与待扩展的结点 重复(位于队列头指针之后),则比较两个结点的估价函数中g的大小, 保留较小g值的结点。跳至第五步。4)如果扩展出的新结点与
5、队列中的结点不重复,则按照它的估价函数f 大小将它插入队列中的头结点后待扩展结点的适当位置,使它们按从小到 大的顺序排列,最后更新队列尾指针。5)如果队列头的结点还可以扩展,直接返回第二步。否则将队列头指针 指向下一结点,再返回第二步。四、程序框图开始五、实验结果及分析输入初始状态:2 8 3目标状态:12 3送定 CAUsersMinuxkADktop队工百蹴 demo2.exe髓JAW陵2H31G47MS输入目标状态1238 H 4765初始状态,2 8 316 47 0SSWD 1Process exited with return ualuc H Pi*ese any kgy to c
6、ontinue .CLOSE00 10 1 50 15 70 15 7 60 1 5 7 6 9运行结果屏幕打印OPEN 表与 CLOSE 表:OPEN12 3 4234562346723468923489102 3 4 8 11 12 132 3 4 8 12 13 14 150 1 5 7 6 9 113 4 8 12 13 14 15 16 170 1 5 7 6 9 11 24 8 12 13 14 15 16 17 18 19114 8 12 13 14 15 16 17 19 2011188 12 13 14 15 16 17 19 21 22111812 13 14 15 16
7、1719212223111812 13 14 15 16 17192122242511184 8 2312 13 14 15 16 17192122242611184 8 23 24发现26为目标节点搜索树:24注释:每个方格中最上面两个数 字分别为编号与启发值,下O 1 832-8 4 231-六、结论对于八数码问题,BFS算法最慢,A*算法较快。八数码问题的一个状态 实际上是09的一个排列,对于任意给定的初始状态和目标,不一定有解, 也就是说从初始状态不一定能到达目标状态。因为排列有奇排列和偶排列 两类,从奇排列不能转化成偶排列。如果一个数字08的随机排列0,用 F(X)表示数字X前面比它
8、小的数的个数,全部数字的F(X)之和为Y=£ (F(X),如果Y为奇数则称原数字的排列是奇排列,如果Y为偶数则称原 数字的排列是偶排列。因此,可以在运行程序前检查初始状态和目标状态 的排序的奇偶行是否相同,相同则问题可解,应当能搜索到路径。否则无 解。七、源程序及注释#include <iostream>#include <ctime>ttinclude <vector>usingnamespacestd;constintROW 二3;constintCOL 二3;constintMAXDISTANCE = 10000;constintMAXNUM
9、 = 10000;int abs(int a)if (a>0) return a;else return -a;typedef struct _Nodeint digitROWCOL;int dist; ist != MAXNUM)return false;return true;igitLi j !=bool isEqual(int index, int digitlCOL) digiti j)return false;return true;)ostream& operator<<(ostream& os, Node& node) for (int
10、 i = 0; i < ROW; i+) for (int j = 0; j < COL; j+)os << ij j ;os << endl;)return os;)void PrintSteps(int index, vector<Node>& rstep_v) ndex;while (index != 0) (node_vindex);index = node_vindex. index;)for (int i = () - 1; i >= 0; i)cout << "Step << () -
11、 i<< endl << rstep-vLi << endl;void Swap(int& a, int& b) igitiLj;)int GetMinNode() ist = MAXNUM) continue;else if (node_vi. dist + node_vLi. dep) < dist) loc = i;dist = node_vi. dist + node_vi. dep;)return loc;)bool isExpandable(Node& node) igit iLj= 0) x 二i; y = j;f
12、lag = true;break;)else flag = false;if(flag)break;Node node_up; ep + 1;(node_up);)Node node_down; ep + 1;(node_down);)Node node_left;ep + 1;(node_left);)Node node_right; ep + 1;(node_right);)node_vindex. dist = MAXNUM;)int main () int number;cout << 输入初始状态: << endl;for (int i = 0; i <
13、 ROW; i+)for (int j = 0; j < COL; j+) cin >> number;Li jj = number;)=0;=1;cout « 输入目标状态 endl;for (int m = 0; m < ROW; m+)for (int n = 0; n < COL; n+) cin >> number;nJ nJ = number;)(src);while (1) if (isEmptyOfOPENQ) cout <<找不到解! << endl;return -1;else (int loc; / the location of the minimize nodeloc = GetMinNode
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年度版权转让合同:文学作品出版与改编权2篇
- 基于二零二四年度生物识别技术的安防系统合同2篇
- 2024版工程合同管理制度设计合同2篇
- 2024年度广告设计分包合同执行细则与交底3篇
- 2024年度影视制作合同:电影剧本创作与影视版权授予2篇
- 2024年度影视制作委托合同.3篇
- 公路工程分包合同的验收复验
- 长期行销合作合同
- 海外劳务分包清工合同的签订注意事项
- 2024年度二手安置房买卖合同模板5篇
- 高三英语一轮复习阅读理解天天练(Agriculture+农业 Society社会)选自China+Daily
- 慢性病(高血压、糖尿病)培训资料
- 《创新创业基础-理论、案例与训练》教案 第10课 选择商业模式
- 纪录片创作与理论
- (HAF603)民用核安全设备焊工认证考试题库 (单选题)
- 小学五项管理家长会课件
- 微机原理与接口技术-基于8086和Proteus仿真(第3版)习题答案
- 10米深基坑施工方案
- 广东省广州市黄埔区2023-2024学年数学四年级第一学期期末达标检测试题含答案
- 开开心心上学去第一课时(说课稿)全国通用一年级下册综合实践活动
- 中药外敷疼痛方剂整理
评论
0/150
提交评论