人工智能大作业八数码问题.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
人工智能大作业八数码问题

基于A星算法的八数码问题求解 学号: 姓名: 摘要:在人工智能领域中, 八数码问题一直都是一个游戏难题。介绍了八数码问题, 然后在启发式有哪些信誉好的足球投注网站算法上对A * 算法定义进行了解释, 并在其旨在提高有哪些信誉好的足球投注网站效率的方面作了比较详尽的介绍, 详细描述了基于图有哪些信誉好的足球投注网站算法的解决此类问题的一种启发式有哪些信誉好的足球投注网站算法 A* 算法。再依据这种算法用可视化编程语言VC+ + 6. 0 来实现八数码问题的求解过程, 取得了预期的有哪些信誉好的足球投注网站解, 提高了有哪些信誉好的足球投注网站效率。 关键词:八数码问题; 启发式有哪些信誉好的足球投注网站; A* 算法 本组成员: 本人分工: 1 引言 八数码问题是人工智能的一个经典的问题。文中通过设计一个基于A* 算法的状态空间有哪些信誉好的足球投注网站程序, 对于给定的初始状态, 采用h ( n ) = p ( n ) 表示以每一个将牌与目标位置之间距离的总和作为启发函数的度量, 并用可视化编程语言VC+ + 来实现该问题。 2 算法原理与系统设计 1)A*算法思想 A*算法是对A算法的估价函数f(n)=g(n)+h(n)加上某些限制后得到的一种启发式有哪些信誉好的足球投注网站算法。A*算法对A算法中的g(n)和h(n)分别提出如下限制:第一,g(n)是对最小代价g*(n)的估计,且g(n)0;第二,h(n)是最小代价h*(n)的下界,即对任意节点n 均有h(n)≤h*(n)。即满足上述两条限制的A算法称为A*算法。 2)估价函数 用来估算节点希望程度的量度,叫估价函数f(x),f(x)=g(x)+h(x)。g(x)为从初始节点到当前节点已经付出的代价,h(x)为从当前节点到目标节点的最优路径的估计代价。本算法中令g(x)为当前节点的深度depth,h(x)为当前节点每个数字位与目标节点数字位间距离和dist,进一步考虑当前结点与目标结点的距离信息,令启发函数h ( n )为当前8个数字位与目标结点对应数字位距离和(不考虑中间路径),满足h ( n ) = h * ( n ), 且对于目标节点有 h ( t ) = 0,对于结点m和n (n 是m的子结点) 有h ( m ) – h ( n ) = 1满足单调限制条件。 3)open和closed表的数据结构表示 对open表的操作,每次需要得到所有待扩展结点中 f 值最小的那个结点。closed表存储已扩展的结点间的扩展关系,主要用于输出路径。closed表中任意一个结点都存储有它的前驱结点的信息,考虑closed表中任意一个结点,如果它是初始结点,它没有前驱结点,如果不是根结点,扩展该结点时它的前驱结点已经记录。从而在closed表中形成扩展关系的树状结构。因为只需要前驱点的下标位置,可以用数组实现。每个结点记录8数码格局和它的前驱结点的下标。 4)问题分析 首先,八数码问题包括一个初始状态(src) 和 目标状态(dest),所谓解八数码 问题就是在两个状态间寻找一系列可过渡状态。这个状态是否存在就是我们要解决的第一个问题。 解决八数码问题,主要面临的问题有: Q1)开始状态S到目标状态D是否可解; Q2)扩展节点的选择; Q3)扩展待扩展节点,该节点是否已扩展过; Q4)判断是否已达目标节点D; 问题Q 1)通过逆序数的奇数偶数来判断。因为在空白移动过程中,数码的逆序数不改变。左右移动,数码序列不变。上下移动,数码序列中某个数字则移动了两位。问题的实质就是:如果是N*N的数码盘的话,左右移动,数码序列不变;上下移动则数码序列变动N-1位。若N为奇数则在变动过程中其逆序数不会改变。而八数码问题为3*3矩阵,3为奇数,故逆序数不作改变。故可通过判断当前状态S的逆序数以及目标状态SD的数字序列的逆序数的奇偶性是否相同来判断该问题是否可解。 问题Q2)扩展节点的选择通过getmin函数,根据估价函数f来获得代价最小的节点。 问题Q3)扩展节点即为上下左右四个方向移动空格到没有扩展过的节点中去,要判断是否扩展过,只要跟之前的状态做比较即可。 问题Q4)是否达到目标节点,将当前节点和目标节点进行比较。 算法的功能:产生8数码问题的解(由初始状态到达目标状态的过程) 输入:初始状态,目标状态 输出:从初始状态到目标状态的一系列过程 算法描述: Begin: 读入初始状态和目标状态,并计算初始状态评价函数值f; 根据初始状态和目标状态,判断问题是否可解; If(问题可解) 把初始状态假如open表中; While(未找到解状态表非空) ①在open表中找到评价值最小的节点,作为当前结点; ②判断当前结点状态和目标状态是否一致,若一致,跳出循环;否则跳转到③; ③对当前结点,分别按照上、下、左、右方向移动空格位置来扩展新的状态结点,并计算新扩展

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档