- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实用文档
文案大全
〈〈人工智能〉〉
题目:15数码问题
实验1:
要求:
采用广度优先算法解决15数码问题,输出扩展结点,步数和最终结果
算法描述:
广度优先搜索,即BFS(Breadth First Search),常常深度优先并列提及。这是一种相当常用的图算法,其特点是:每次搜索指定点,并将其所有未访问过的近邻加入搜索队列(而深度优先搜索则是栈),循环搜索过程直到队列为空。
广度优先搜索算法的基本思想:从初始状态出发,按照给定的结点产生式规则(算符、结点扩展规则)生产第一层结点,每生成一个结点就检查是不是目标结点,如果是目标结点就搜索结束,如果不是目标结点并且前面没出现过就保存该结点(入队列);再用产生式规则将所有第一层的结点依次扩展,得到第二层结点,同时检查是否为目标结点,是目标搜索停止,不是并且没出现过保存(入队);再把第二层的结点按产生规则扩展生产第三层结点,直至找到目标或所有的状态找完但找不到目标(队列空)。
特点:先生成深度为1的所有结点,再生产深度为2的所有结点,依次类推。先横向,再纵向。这种方法找到目标,需要的步数一定最少。
程序算法流程图:
描述:
(1).把起始结点放到OPEN表中。
(2).如果OPEN表是个空表,则没有解,失败退出;否则继续。
(3).把第一个结点从OPEN表中移出,并把它放入CLOSE表的扩展节点表中。
(4).扩展结点N。如果没有后继结点,则转向步骤(2)。
(5).把N的所有后继结点放到OPEN表的末端,并提供从这些后继结点回到N的指针。
(6).如果N的任意个后继结点是个目标结点,则找到一个解答,成功退出;否则转向步骤(2).
流程图:
起点
起点
把S放入open表
Open表是否为空表?
是否有任何后继节点为目标节点
把第一个节点N从open表移出。并把他放入closed表中
扩展N,把它的后继节点放入open表的末端,提供返回到N的指针。
成功
失败
是
否
是
否
输入:初始态int A[N][N]={
{1,2,3,4},
{5,10,6,8},
{0,9,7,12},
{13,14,11,15}
};
目标状态:int B[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已访问过,则重新选择另一条从x出发的未检测过的边,否则沿边(x,y)到达未曾访问过的y,对y访问并将其标记为已访问过;然后从y开始搜索,直到搜索完从y出发的所有路径,即访问完所有从y出发可达的顶点之后,才回溯到顶点x,并且再选择一条从x出发的未检测过的边。上述过程直至从x出发的所有边都已检测过为止。此时,若x不是源点,则回溯到在x之前被访问过的顶点;否则图中所有和源点有路径相通的顶点(即从源点可达的所有顶点)都已被访问过,若图G是连通图,则遍历过程结束,否则继续选择一个尚未被访问的顶点作为新源点,进行新的搜索过程。
流程图:
描述:
(1).把起始结点放到OPEN表中。如果此结点为一目标结点,则得到一个解。
(2).如果OPEN表是个空表,则没有解,失败退出;否则继续。
(3).把第一个结点从OPEN表中移出,并把它放入CLOSE表中。
(4).如果结点N的深度等于最大深度,则转向步骤(2)。
(5).扩展结点N,产生其全部后裔,并把它们放入OPEN表的前头。如果没有后裔,则转向步骤(2)。
(6).如果N的任意个后继结点是个目标结点,则找到一个解答,成功退出;否则转向步骤(2).
流程图:
是把S放入open表起点是否有任何后继节点为目标节点成功是
是
把S放入open表
起点
是否有任何后继节点为目标节点
成功
是
否
扩展N,把它的后继节点放入open表的前头。
节点N的深度是否等于深度界限
把第一个节点N从open表移出。并把他放入closed表中
Open表是否为空表?
S是否为目标节点?
成功
失败
否
是
是
否
输入:初始态int A[N][N]={
{1,2,3,4},
{5,10,6,8},
{0,9,7,12},
{13,14,11,15}
};
目标状态:int B[N][N]={
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
您可能关注的文档
最近下载
- 人教版地理必修一教材解读(2019年版).pptx VIP
- 初中音乐教学课件走进京剧.ppt VIP
- 2022年土地登记代理人题库700道及参考答案【培优b卷】.docx
- 药剂职业生涯规划目标.pptx VIP
- 2025年SpaceX火箭推进系统技术创新及市场影响报告.docx VIP
- (新版)油品计量工(技师)职业鉴定考试题库资料(浓缩400题).pdf VIP
- 全国大学生职业规划大赛《法学》专业生涯发展展示PPT【最新版】.pptx
- (精选)实践是认识的基础教学课件.ppt VIP
- 2023年市政工程质量检测见证取样员手册培训资料.doc VIP
- 【MOOC】微观经济学-浙江大学 中国大学慕课MOOC答案.docx VIP
原创力文档


文档评论(0)