15数码问题的解决算法(算法和具体代码)

15数码问题的解决算法(算法和具体代码)

ID:29359595

大小:141.50 KB

页数:38页

时间:2018-12-18

15数码问题的解决算法(算法和具体代码)_第1页
15数码问题的解决算法(算法和具体代码)_第2页
15数码问题的解决算法(算法和具体代码)_第3页
15数码问题的解决算法(算法和具体代码)_第4页
15数码问题的解决算法(算法和具体代码)_第5页
资源描述:

《15数码问题的解决算法(算法和具体代码)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实用标准文案〈〈人工智能〉〉题目:15数码问题实验1:要求:采用广度优先算法解决15数码问题,输出扩展结点,步数和最终结果算法描述:广度优先搜索,即BFS(BreadthFirstSearch),常常深度优先并列提及。这是一种相当常用的图算法,其特点是:每次搜索指定点,并将其所有未访问过的近邻加入搜索队列(而深度优先搜索则是栈),循环搜索过程直到队列为空。广度优先搜索算法的基本思想:从初始状态出发,按照给定的结点产生式规则(算符、结点扩展规则)生产第一层结点,每生成一个结点就检查是不是目标结点,如果是目标结点就搜索结束

2、,如果不是目标结点并且前面没出现过就保存该结点(入队列);再用产生式规则将所有第一层的结点依次扩展,得到第二层结点,同时检查是否为目标结点,是目标搜索停止,不是并且没出现过保存(入队);再把第二层的结点按产生规则扩展生产第三层结点,直至找到目标或所有的状态找完但找不到目标(队列空)。特点:先生成深度为1的所有结点,再生产深度为2的所有结点,依次类推。先横向,再纵向。这种方法找到目标,需要的步数一定最少。程序算法流程图:描述:(1).把起始结点放到OPEN表中。(2).如果OPEN表是个空表,则没有解,失败退出;否则继续

3、。(3).把第一个结点从OPEN表中移出,并把它放入CLOSE表的扩展节点表中。(4).扩展结点N。如果没有后继结点,则转向步骤(2)。(5).把N的所有后继结点放到OPEN表的末端,并提供从这些后继结点回到N的指针。(6).如果N的任意个后继结点是个目标结点,则找到一个解答,成功退出;否则转向步骤(2).流程图:精彩文档实用标准文案起点把S放入open表Open表是否为空表?是否有任何后继节点为目标节点把第一个节点N从open表移出。并把他放入closed表中扩展N,把它的后继节点放入open表的末端,提供返回到N的

4、指针。成功失败是否是否输入:初始态intA[N][N]={{1,2,3,4},{5,10,6,8},{0,9,7,12},{13,14,11,15}};目标状态:intB[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,0}};输出截图:由于输出的路径节点很多这里只是显示最终结果和步数。精彩文档实用标准文案实验2:要求:采用深度优先算法实现15数码问题。算法描述:设x是当前被访问顶点,在对x做过访问标记后,选择一条从x出发的未检测过的边(x,y)。若发现顶点y已访问过

5、,则重新选择另一条从x出发的未检测过的边,否则沿边(x,y)到达未曾访问过的y,对y访问并将其标记为已访问过;然后从y开始搜索,直到搜索完从y出发的所有路径,即访问完所有从y出发可达的顶点之后,才回溯到顶点x,并且再选择一条从x出发的未检测过的边。上述过程直至从x出发的所有边都已检测过为止。此时,若x不是源点,则回溯到在x之前被访问过的顶点;否则图中所有和源点有路径相通的顶点(即从源点可达的所有顶点)都已被访问过,若图G是连通图,则遍历过程结束,否则继续选择一个尚未被访问的顶点作为新源点,进行新的搜索过程。流程图:描述

6、:(1).把起始结点放到OPEN表中。如果此结点为一目标结点,则得到一个解。(2).如果OPEN表是个空表,则没有解,失败退出;否则继续。(3).把第一个结点从OPEN表中移出,并把它放入CLOSE表中。精彩文档实用标准文案(4).如果结点N的深度等于最大深度,则转向步骤(2)。(5).扩展结点N,产生其全部后裔,并把它们放入OPEN表的前头。如果没有后裔,则转向步骤(2)。(6).如果N的任意个后继结点是个目标结点,则找到一个解答,成功退出;否则转向步骤(2).流程图:是把S放入open表起点是否有任何后继节点为目标

7、节点成功是否扩展N,把它的后继节点放入open表的前头。节点N的深度是否等于深度界限把第一个节点N从open表移出。并把他放入closed表中Open表是否为空表?S是否为目标节点?成功失败否是是否精彩文档实用标准文案输入:初始态intA[N][N]={{1,2,3,4},{5,10,6,8},{0,9,7,12},{13,14,11,15}};目标状态:intB[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,0}};输出截图:由于输出的路径节点很多这里只是显示最终

8、结果和步数实验3:要求:采用启发式的A星算法实现15数码问题。算法描述:精彩文档实用标准文案启发式搜索算法A,一般简称为A算法,是一种典型的启发式搜索算法。其基本思想是:定义一个评价函数f,对当前的搜索状态进行评估,找出一个最有希望的节点来扩展。评价函数的形式如下:f(n)=g(n)+h(n)其中n是被评价的节点。f(n)、g(n

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。