数据结构课程实践2——隐式图的搜索问题(实验准备)

数据结构课程实践2——隐式图的搜索问题(实验准备)

实验内容

3х3九宫棋盘,放置数码为1~8的8个棋子,棋盘中留有一个空格,空格周围的棋子可以移动到空格中,从而改变棋盘的布局。根据给定初始布局和目标布局,移动棋子从初始布局到达目标布局,求解移动步骤并输出。请设计算法,使用合适的搜索策略,在较少的空间和时间代价下找到最短路径。
在这里插入图片描述

编程语言以及开发环境的选择

编程语言:java
开发环境:IDE使用的是idea,jdk版本为1.8

实验思路

1、对九宫重排问题,建立图的启发式搜索求解方法;
2、用A*算法求解九宫重排问题。

一、设计思路

题目要求能到达目标图形的最少步数,首先想到了深度优先遍历(DFS),如果使用DFS,它的特点是尽可能先对纵深方向进行搜索,这种操作太过于盲目,很容易出现超时现象,相比较而言,使用A*算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法,算法中的距离估算值与实际值越接近,最终搜索速度越快。

1、输入
输入第一行包含九宫的初态,第二行包含九宫的终态。
本题的输入为:

2.3184765
1238.4765

2、输出
输出最少的步数,如果不存在方案,则输出-1。

3、公式
f(n)=g(n)+h(n)
f(n) 是从初始状态经由状态n到目标状态的代价估计
g(n) 是在状态空间中从初始状态到状态n的实际代价
h(n) 是从状态n到目标状态的最佳路径的估计代价

二、准备工作

1、我们要声明一个表memery来保存之前的状态

//memery用于保存之前状态,key代表状态字符串,value代表到key状态所用的最小步数
 HashMap<String, Integer> memery = new HashMap<String, Integer>(100000);

2、由于采用了A*算法,那么应当是第一次能到达目标状态时,就是最少步数

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值