一、实验内容和要求

八数码问题:在3×3的方格棋盘上,摆放着1到8这八个数码,有1个方格是空的,其初始状态如图1所示,要求对空格执行空格左移、空格右移、空格上移和空格下移这四个操作使得棋盘从初始状态到目标状态。

例如:

28

4 7 6 5 7 0 5

目标状态初始状态 (b) (a)

图1 八数码问题示意图

请任选一种盲目搜索算法(广度优先搜索或深度优先搜索)或任选一种启发式搜索方法(全局择优搜索,加权状态图搜索,A 算法或 A* 算法)编程求解八数码问题(初始状态任选)。选择一个初始状态,画出搜索树,填写相应的OPEN表和CLOSED表,给出解路径,对实验结果进行分析总结,得出结论。

二、实验目的

1. 熟悉人工智能系统中的问题求解过程;

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(n)是从初始结点到节点n的实际代价,h(n)是从结点n到目标结点的最佳路径的估计代价。在这里主要是h(n)体现了搜索的启发信息,因为g(n)是已知的。用f(n)作为f'(n)的近似,也就是用g(n)代替g'(n),h(n)代替h'(n)。(大多数情况下都是满足的,可以不g(n)>=g'(n))1(这样必须满足两个条件:

用考虑),且f必须保持单调递增。(2)h必须小于等于实际的从当前节点到达目标节点的最小耗费h(n)<=h'(n)。第二点特别的重要。可以证明应用这样的估价函数是可以找到最短路径的。

*算法的步骤

A*算法基本上与广度优先算法相同,但是在扩展出一个结点后,要计算它的估价函数,并根据估价函数对待扩展的结点排序,从而保证每次扩展的结点都是估价函数最小的结点。

A*算法的步骤如下:

1)建立一个队列,计算初始结点的估价函数f,并将初始结点入队,设置队列头和尾指针。

2)取出队列头(队列头指针所指)的结点,如果该结点是目标结点,则输出路径,程序结束。否则对结点进行扩展。

3)检查扩展出的新结点是否与队列中的结点重复,若与不能再扩展的结点重复(位于队列头指针之前),则将它抛弃;若新结点与待扩展的结点重复(位于队列头指针之后),则比较两个结点的估价函数中g的大小,保留较小g值的结点。跳至第五步。

4)如果扩展出的新结点与队列中的结点不重复,则按照它的估价函数f大小将它插入队列中的头结点后待扩展结点的适当位置,使它们按从小到大的顺序排列,最后更新队列尾指针。

5)如果队列头的结点还可以扩展,直接返回第二步。否则将队列头指针指向下一结点,再返回第二步。

四、程序框图

五、实验结果及分析

输入初始状态:2 8 3 目标状态: 1 2 3

8 0 4 1 6 4

7 6 5 7 0 5

运行结果屏幕打印

OPEN表与CLOSE表:

OPEN CLOSE

0 1 2 3 4

0 1 2 3 4 5 6

0 1 5 2 3 4 6 7

0 1 5 7 2 3 4 6 8 90 1 5 7 6 2 3 4 8 9 10

0 1 5 7 6 9 2 3 4 8 11 12 13

0 1 5 7 6 9 11 2 3 4 8 12 13 14 15

0 1 5 7 6 9 11 2 3 4 8 12 13 14 15 16 170 1 5 7 6 9 11 2 3 4 8 12 13 14 15 16 17 18 190 1 5 7 6 9 11 2 3 18 4 8 12 13 14 15 16 17 19 200 1 5 7 6 9 11 2 3 18 4 8 12 13 14 15 16 17 19 21 22

0 1 5 7 6 9 11 2 3 18 4 8 12 13 14 15 16 17 19 21 22 23

0 1 5 7 6 9 11 2 3 18 4 8 23 12 13 14 15 16 17 19 21 22 24 250 1 5 7 6 9 11 2 3 18 4 8 23 24 12 13 14 15 16 17 19 2

数码显示实验报告C语言,数码问题C语言A星算法详细实验报告含代码(9页)-原创力文档...相关推荐

  1. c语言八数码A星算法代码解析,八数码问题c语言a星算法详细实验报告含代码解析...

    八数码问题c语言a星算法详细实验报告含代码解析 (13页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 一.实验内容和要求 八数码问题:在3 ...

  2. 每个c语言程序写完后 都要按照,c语言基础学习小结(习题总结)(5页)-原创力文档...

    书山有路勤为径 学海无涯苦作舟 一.思考题. 1.你如何向别人解释清楚什么是编程.什么是计算机语言? 2.什么是C语言? 二.解答题. 1.用C语言编写程序:求任意两个整数的和.如果是小数的话,要求输 ...

  3. c语言中奇数导通,多功能电脑时钟设计报告含正确C语言程序96分(58页)-原创力文档...

    精品 多功能电脑时钟设计报告 一.实训目的意义及任务要求 1.1 目的意义 在如今,单片机的使用领域已十分广泛,它在智能仪器仪表.实时工控.通 讯设备.导航系统.家用电器等均有很广泛的应用. 单片机又 ...

  4. html新闻网页包括主页面,工作报告之html网页制作实验报告(8页)-原创力文档...

    html网页制作实验报告 [篇一:html实验报告] 武夷学院实验报告 课程名称:电子商务网站设计与开发_ 项目名称:_基于html的网页设计 姓名:林元卿专业:旅游管理 班级:3班学号:201360 ...

  5. 大学计算机实验报告信息的表示与转换,大学计算机实验报告一(8页)-原创力文档...

    北京信息科技大学 信息管理学院 实 验 报 告 课程名称 信息系统基础 实验项目 实验一 计算机数据信息化和指令执行过程 实验仪器 PC.Office2003 专 业 **** 班级/学号 *** 学 ...

  6. c语言课程设计报告15页左右,C语言课程设计报告——学生信息管理系统(15页)-原创力文档...

    C语言程序设计 课程设计报告 设计题目:学生信息管理系统 专 业 电子信息工程 班 级 学 生 指导教师 年 学期 设计任务: C语言课程设计任务书及指导书 5 题目:学生信息管理系统 功能:学生信息 ...

  7. 在c语言如何对拨码开关编程,实验四 指示灯和拨码开关实验_百度文库(15页)-原创力文档...

    实验四 指示灯和拨码开关实验 一.实验目的 1.了解F2812-A 评估板在TMS320F2812DSP 外部扩展存储空间上的扩展. 2.了解F2812-A 评估板上指示灯扩展原理. 3.了解F281 ...

  8. 深圳大学 c语言,深圳大学C语言实验(3页)-原创力文档

    精品文档 PAGE . 得分 教师签名 批改日期 深 圳 大 学 实 验 报 告 课程名称: 高级语言程序设计 实验名称: 学院: 信息工程学院 指导教师:张金凤 报告人: Kingsta 学号: 实 ...

  9. 5乘7的c语言程序,C语言程序设计实验5-7教案(20页)-原创力文档

    第 7-8 次 课程名称 程序设计基础 课程性质 实验课 授课班级 网络 16-1 .2 授课地点 1402 2016 年 11 月 9 日第 5 小节 ~第 8 小节 授课时间 2016 年 11 ...

  10. 买三种文具编程C语言,C语言程序设计实验的个人物品管理系统程序(33页)-原创力文档...

    实用标准文案 实用标准文案 精彩文档 精彩文档 <程序设计与算法综合实习I> 个人物品管理程序2015.05.16题 目: 班 级: 学生学号: 学生姓名: 指导老师: 提交时间: 成 绩 ...

最新文章

  1. Python快速学习10: 循环的对象及设计 (生活的规律)
  2. selenium+python面试题目总结,完整度80%,看看你会多少?
  3. java B2B2C Springboot电子商城系统 (六) 分布式配置中心(Spring Cloud Config)
  4. echarts 图表配置tooltip 的formatter
  5. 使用aconda3-5.1.0(Python3.6.4) 搭建pyspark远程部署
  6. 全局莫兰指数_空间自相关 | 莫兰指数
  7. 【算法系列之七】合并两个有序链表
  8. 《深入Linux内核》 UNIX的一些故事
  9. HTML和CSS 基本要点必看
  10. C语言编译php环境,vscode中C语言编译环境的配置方法(分享)
  11. linux 用户与工作组
  12. node中exports和module.exports的关系及使用
  13. c4d语言在哪个文件夹,c4d的插件目录是哪个文件夹(c4d插件怎么安装)
  14. 基于树莓派的智能图像识别垃圾分类系统
  15. MyBatis 大于等于、小于等于的写法
  16. 蓝凌工作ekp开发使用一些js编写开发记录
  17. 腾讯云轻量服务器Centos 7.6安装redis 5.0.4教程
  18. HTML DOM nextSibling 和nextElementSibling属性
  19. matlab 怀特图,怀特异方差检验方法在matlab中的实现,以及广义最.....
  20. 【.NET资源收集】C#与时俱进的知识点...

热门文章

  1. 【数据库范式】 分析题第一范式
  2. read write spinlock
  3. Base64 加密字符串和文件
  4. 全国汽车牌照号详解细表(各省市区)
  5. 39道高级java面试题及答案(最新)
  6. C# 创建Windows服务
  7. shell脚本常用参数与格式
  8. Elasticsearch和HDFS 容错机制 备忘
  9. win7的python3.5安装numpy包
  10. HttpServletRequest的方法详细说明