A* 算法求解八数码问题
前面见过宽度优先搜索和深度优先搜索求解八数码问题。那两个方法都是盲目搜索。
今天看启发式搜索。
A算法: 利用评价函数来选择下一个节点。 图引用自 -北京联合大学 彭涛老师在 中国慕课的 《人工智能概论》。
估价函数没有定论,可以有不同方法。 这里采用处在错误位置的数字的数量。
代码在: github
一组测试数据的 执行搜索的过程如下:
A* 算法 (宽度优先)求解八数码问题
========== 宽度优先求解八数码问题,搜索过程是 ==========
[[2 0 3]
[1 8 4]
[7 6 5]]
当前节点的深度:1, 代价 F= G+ H (4 = 0 + 4)
********************
[[2 8 3]
[1 0 4]
[7 6 5]]
当前节点的深度:2, 代价 F= G+ H (4 = 1 + 3)
********************
[[0 2 3]
[1 8 4]
[7 6 5]]
当前节点的深度:2, 代价 F= G+ H (4 = 1 + 3)
********************
[[1 2 3]
[0 8 4]
[7 6 5]]
当前节点的深度:3, 代价 F= G+ H (4 = 2 + 2)
********************
[[1 2 3]
[8 0 4]
[7 6 5]]
当前节点的深度:4, 代价 F= G+ H (3 = 3 + 0)
********************
求解路径:
[[2 0 3]
[1 8 4]
[7 6 5]]
当前节点的深度:1, 代价 F= G+ H (4 = 0 + 4)
********************
[[0 2 3]
[1 8 4]
[7 6 5]]
当前节点的深度:2, 代价 F= G+ H (4 = 1 + 3)
********************
[[1 2 3]
[0 8 4]
[7 6 5]]
当前节点的深度:3, 代价 F= G+ H (4 = 2 + 2)
********************
[[1 2 3]
[8 0 4]
[7 6 5]]
当前节点的深度:4, 代价 F= G+ H (3 = 3 + 0)
********************
总共搜索步骤是 5, 解决方案移动步骤是3
A* 算法求解八数码问题相关推荐
- 【人工智能实验】A*算法求解8数码问题
目录 实验一 A*算法求解8数码问题 一.实验目的 二.实验原理 三.实验结果 四.实验总结 附录代码 推荐文章 实验一 A*算法求解8数码问题 一.实验目的 熟悉和掌握启发式搜索的定义.估价函数和算 ...
- Python利用A*算法解决八数码问题
资源下载地址:https://download.csdn.net/download/sheziqiong/86790565 资源下载地址:https://download.csdn.net/downl ...
- 15数码 java_A*算法求解15数码问题
目录 一.问题描述 二.算法简介 三.算法步骤 四.评估函数 五.参考资料 六.源代码(Java实现) 一.问题描述 利用A*算法进行表1到表2的转换,要求空白块移动次数最少. 转换规则为:空白块只可 ...
- 利用Python求解八数码难题
实验目的 实验内容 八数码问题也称为九宫问题.在3×3的棋盘,摆有八个棋子,每个棋子上标有1至8的某一数字,不同棋子上标的数字不相同.棋盘上还有一个空格,与空格相邻的棋子可以移到空格中.要求解决的问题 ...
- 全局择优搜索、A*算法、宽度优先算法解决八数码问题
1问题描述 使用盲目搜索中的宽度优先搜索算法或者使用启发式搜索中的全局择优搜索或A算法,对任意的八数码问题给出求解结果.例如:对于如下具体的八数码问题: 通过设计启发函数,编程实现求解过程,如果问题有 ...
- A*算法求解15数码问题
目录 一.问题描述 二.算法简介 三.算法步骤 四.评估函数 五.参考资料 六.源代码(Java实现) 一.问题描述 利用A*算法进行表1到表2的转换,要求空白块移动次数最少. 转换规则为:空白块只可 ...
- a星算法实现8数码问题c语言,A星算法求八数码问题实验报告.doc
A星算法求八数码问题实验报告.doc 人工智能实验报告实验名称八数码问题姓名xx学号2012210 xx xx计算机学院 2014年1月14日1 实验目的 掌握A*的思想,启发式搜索,来求解在代价最小 ...
- 基于Python实现的AStar求解八数码问题
资源下载地址:https://download.csdn.net/download/sheziqiong/86776612 资源下载地址:https://download.csdn.net/downl ...
- A*算法解决八数码问题 Java语言实现
A*算法解决八数码问题 Java语言实现 参考文章: (1)A*算法解决八数码问题 Java语言实现 (2)https://www.cnblogs.com/beilin/p/5981483.html ...
- 题目2:隐式图的搜索问题(A*算法解决八数码)
数据结构课程实践系列 题目1:学生成绩档案管理系统(实验准备) 题目2:隐式图的搜索问题(A*算法解决八数码) 题目3:文本文件单词的检索与计数(实验准备) 文章目录 数据结构课程实践系列 题目1:学 ...
最新文章
- 【重磅】Tensorflow2.0实现29种深度强化学习算法大汇总
- ActionBar通过Tab进行不同的Fragment之间的交换
- django mysql debug_部署前准备--使用Mysql之Django Debug Toolbar安装以及配置
- 岗位内推 | 字节跳动招聘NLP、计算机视觉、推荐算法实习生
- PHP+百度地图API+JAVASCRIPT实现GPS坐标与百度坐标转换的实例
- linux 函数 增加用户,linux常用c函数用户组有哪些?
- linux将光驱挂载到目录下,Linux操作系统下关于光驱的挂载
- php 字符串 替换 最后,php如何替换字符串中的最后一个字符
- python大作业爬虫_爬虫大作业
- cookie代码加时间多久出现一次_一文彻底搞懂Cookie、Session、Token到底是什么
- vector容器易错知识点集锦
- Java中涉及线程和并发相关的内容
- 为什么有些公司不招大龄程序员?
- 使用什么协议扫描服务器端口,服务器端口扫描
- 抖音直播前需要准备什么,抖音直播带货详细流程步骤丨国仁网络资讯
- 荧光标记毛细管电泳应用---InDel标记筛选与验证
- 针对MacBook提示目前翻译不可用请稍后再试的解决方法
- ElasticSearch License 过期解决办法
- 商务智能-第二章 数据仓库
- 干掉Vivado幺蛾子(2)-- 快速替换debug probes