启发式搜索实验
更新时间:2023-12-08 13:44:01 阅读量: 教育文库 文档下载
实验三 搜索推理技术 启发式搜索算法—A*算法
1.实验目的
(1)了解搜索推理的相关技术;
(2)掌握启发式搜索算法或者基于规则推理的分析方法。 2.实验内容(2个实验内容可以选择1个实现)
(1)启发式搜索算法。熟悉和掌握启发式搜索的定义、估价函数和算法过程,并求解博弈问题,理解求解流程和搜索顺序;
(2)产生式系统实验。熟悉和掌握产生式系统的运行机制,掌握基于规则推理的基本方法。 3.实验报告要求
(1)简述实验原理及方法,并请给出程序设计流程图。
(A-Star)算法是一种静态路网中求解最短路最有效的直接搜索方法。
公式表示为: f(n)=g(n)+h(n),
其中 f(n) 是从初始点经由节点n到目标点的估价函数, g(n) 是在状态空间中从初始节点到n节点的实际代价, h(n) 是从n到目标节点最佳路径的估计代价。
保证找到最短路径(最优解的)条件,关键在于估价函数h(n)的选取:
估价值h(n)<= n到目标节点的距离实际值,这种情况下,搜索的点数多,搜索范围大,效率低。但能得到最优解。并且如果h(n)=d(n),
即距离估计h(n)等于最短距离,那么搜索将严格沿着最短路径进行, 此时的搜索效率是最高的。
然后我们通过图文结合的形式来解释下,如下图:
图中有这么几个要点先需要了解:
1、类似迷宫图,分开始节点(start)、障碍物、结束节点(end),我们需要从start节点探寻一条到end节点的路线
2、对于探寻的每一步,都会以当前节点为基点,扫描其相邻的八个节点
3、计算当前节点与start节点及到end的距离
4、计算出最短路径
如果明白了上面的场景描述,下面就可以进行分析了。
在A*算法中,核心思想是一个公式,上面已经提到过:
f(n)=g(n)+h(n) (2)源程序清单:
package com.itxxz.ui.suanfa.astar;
import java.util.Iterator; import java.util.LinkedList; import java.util.Queue;
import com.itxxz.ui.suanfa.astar.Point;
public class ItxxzAstar { // 开始节点
private Point startPoint = null; // 当前节点
private Point endPoint = null; // 结束节点
private Point currentPoint = null; // 最短距离坐标节点
private Point shortestFPoint = null;
// 迷宫数组地图
private static final int[][] mazeArray = { { 1, 0, 0, 0, 0 }, { 1, 0, 2, 0, 0 }, { 1, 0, 0, 0, 1 }, { 1, 0, 0, 0, 0 }, { 1, 1, 1, 1, 0 }, { 1, 0, 0, 0, 0 }, { 3, 0, 1, 1, 1 } };
// 迷宫坐标对象
private Point[][] mazePoint = null;
// 开启队列,用于存放待处理的节点 Queue
// 关闭队列,用于存放已经处理过的节点 Queue
// 起始节点到某个节点的距离 int[][] FList = null;
// 某个节点到目的节点的距离 int[][] GList = null;
// 起始节点经过某个节点到目的节点的距离 int[][] HList = null;
/**
* 构造函数 *
* @param maze
* 迷宫图 * @param startPoint
* 起始节点 * @param endPoint
* 结束节点 */
public ItxxzAstar(Point[][] mazePoint, Point startPoint, Point endPoint) { this.mazePoint = mazePoint; this.startPoint = startPoint; this.endPoint = endPoint;
openQueue = new LinkedList
closedQueue = new LinkedList
FList = new int[mazePoint.length][mazePoint[0].length]; GList = new int[mazePoint.length][mazePoint[0].length]; HList = new int[mazePoint.length][mazePoint[0].length];
for (int i = 0; i < mazePoint.length; i++) {
for (int j = 0; j < mazePoint[0].length; j++) { FList[i][j] = Integer.MAX_VALUE; GList[i][j] = Integer.MAX_VALUE; HList[i][j] = Integer.MAX_VALUE; } }
// 起始节点到当前节点的距离
GList[startPoint.getX()][startPoint.getY()] = 0; // 当前节点到目的节点的距离
HList[startPoint.getX()][startPoint.getY()] = getPointDistance( startPoint.getX(), startPoint.getY(), endPoint.getX(), endPoint.getY()); // f(x) = g(x) + h(x)
FList[startPoint.getX()][startPoint.getY()] = GList[startPoint.getX()][startPoint .getY()] + HList[startPoint.getX()][startPoint.getY()];
}
/**
* 计算当前坐标与结束坐标之间的距离 *
* 计算方法为每向相信坐标移动一次算作一个距离单位 * */
private int getPointDistance(int current_x, int current_y, int end_x, int end_y) {
return Math.abs(current_x - end_x) + Math.abs(current_y - end_y); }
/**
* 数组迷宫地图 *
* 0、可通行 1、障碍 2、开始节点 3、结束节点 * */
public static void main(String[] args) {
// 创建节点迷宫图
Point[][] mazePoint = new Point[mazeArray.length][mazeArray[0].length]; for (int i = 0; i < mazePoint.length; i++) {
for (int j = 0; j < mazePoint[0].length; j++) {
mazePoint[i][j] = new Point(i, j, mazeArray[i][j]); } }
Point start = mazePoint[1][2]; Point end = mazePoint[6][0];
ItxxzAstar star = new ItxxzAstar(mazePoint, start, end); star.start();
System.out.println(mazeArray.length + \
star.printPath();
}
/**
正在阅读:
启发式搜索实验12-08
2014河北通用技术题库05-23
热处理质量控制规程04-18
汽车检测常见问题106-02
晋江市人民政府文件03-14
岳飞墓导游词 岳飞墓导游词锦集04-28
高考英语必修3 Astronmy+the+science+of+the+stars(讲)-2018年05-14
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 启发式
- 实验
- 搜索
- 《老人与海》 课外阅读试卷含答案
- 昆虫部分试题
- 《病理生理学》第03章在线测试
- 用户自检程序代码
- 一年级第二学期数学期中测试卷
- 高中数学教学中应重视学生对一般性结论的记忆 - 图文
- 煤矿节能减排管理办法
- 常用溶液的配置
- XRL261说明书
- 立象木业工作危害分析(JHA+LS)评价记录
- 高三必备篇目情景式名篇名句默写
- 09-10学年第二学期(B)无机化学期终考试卷
- 计算机应用基础题库(笔试部分)
- 案例分析
- 《工程力学》综合复习资料
- 铜版纸(Art paper)
- 第三章 多组分系统热力学
- 五年级上册劳技教学设计
- 2019年初级会计职称《初级会计实务》考试试题B卷 附答案
- 关于做好站址变动对比观测资料分析工作的通知(气测函〔2012〕27号文)