C语言解八数码问题之人工智能实验报告.docVIP

C语言解八数码问题之人工智能实验报告.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《人工智能》上机实验 基于人工智能的状态空间搜索策略研究 ——八数码问题求解 (一)实验软件 TC2.0 或 VC6.0 编程语言或其它编程语言 (二)实验目的 1. 熟悉人工智能系统中的问题求解过程; 2. 熟悉状态空间的盲目搜索和启发式搜索算法的应用; 3. 熟悉对八数码问题的建模、求解及编程语言的应用。 (三)需要的预备知识 1. 熟悉TC2.0 或 VC6.0 编程语言或者其它编程语言; 2. 熟悉状态空间的宽度优先搜索、深度优先搜索和启发式搜索算法; 3. 熟悉计算机语言对常用数据结构如链表、队列等的描述应用; 4. 熟悉计算机常用人机接口设计。 (四)实验数据及步骤 1. 实验内容 八数码问题:在3×3的方格棋盘上,摆放着1到8这八个数码,有1个方格是空的,其初始状态如图1所示,要求对空格执行空格左移、空格右移、空格上移和空格下移这四个操作使得棋盘从初始状态到目标状态。 2 5 4 1 2 3 3 7 8 4 1 8 6 7 6 5 (a) 初始状态 (b) 目标状态 图1 八数码问题示意图 请任选一种盲目搜索算法(深度优先搜索或宽度优先搜索)或 任选一种启发式搜索方法(A 算法或 A* 算法)编程求解八数码问题(初始状态任选),并对实验结果进行分析,得出合理的结论。 2. 实验步骤 (1)分析算法基本原理和基本流程; 程序采用宽度优先搜索算法,基本流程如下: (2)确定对问题描述的基本数据结构,如 Open 表和 Closed 表等; OPEN CLOSED S ? A,B,C S B,C,D,E,F S,A C,D,E,F,G S,A,B D,E,F,G,H S,A,B,C E,F,G,H,I,J S,A,B,C,D F,G,H,I,J K,L S,A,B,C,D,E G,H,I,J K,L,M,N S,A,B,C,D,E,F H,I,J K,L,M,N,O,P S,A,B,C,D,E,F,G (3)编写算符运算、目标比较等函数; (4)编写输入、输出接口; (5)全部模块联调; (6)撰写实验报告。 (五)实验报告要求 所撰写的实验报告必须包含以下内容: 1. 算法基本原理和流程框图; 2. 基本数据结构分析和实现; 3. 编写程序的各个子模块,按模块编写文档,含每个模块的建立时间、功能、输入输出参数意义和与其它模块联系等; 4. 程序运行结果,含使用的搜索算法及搜索路径等; 5. 实验结果分析; 6. 结论; 7. 提供全部源程序及软件的可执行程序。 附:实验报告格式 一、实验问题 二、实验目的 三、实验原理 四、程序框图 五、实验结果及分析 六、结论 七、源程序及注释 #includestdio.h #includeconio.h int n,m; typedef struct Node { char matrix[10];/*存储矩阵*/ char operate;/*存储不可以进行的操作,L代表不能左移R代表不能右移U代表不能上移D代表不能下移*/ char extend;/*是否可以扩展,Y代表可以,N代表不可以*/ int father;/*指向产生自身的父结点*/ }Node; char start[10]=};/*此处没有必要初始化*/ char end[10]={1238 4765};/*此处没有必要初始化*/ Node base[4000]; int result[100];/*存放结果的base数组下标号,逆序存放*/ int match()/*判断是否为目标*/ { int i; for(i=0;i9;i++) { if(base[n-1].matrix[i]!=end[i]) { return 0; } } return 1; } void show()/*显示矩阵的内容*/ { int i=1; while(m=0) { int mm=result[m]; //clrscr(); printf(\n\n\n 状态方格\t\t步骤 %d,i); printf(\n\n\n\n\n\t\t\t%c\t%c\t%c\n,base[mm].matrix[0],base[mm].matrix[1],base[mm].matrix[2]); printf(\n\n\t\t\t%c\t%c\t%c\n,base[mm].matrix[3],base[mm].matrix[4],base[mm].matrix[5]); printf(\n\n\t\t\t%c\t%c\t%c\n,base[mm].matrix[6],base[mm].matrix[7],base[m

文档评论(0)

精品家园 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档