软件实习项目二——A-Star算法

实验内容

  • 对九宫重拍问题,建立图的启发式搜索求解方法

  • 用A*算法求解九宫重拍问题

实验目标

  • 3x3九宫棋盘,放置数码1~8的8个棋子,棋盘中留有一个空格,空格周围的棋子可以移动到空格中,从而改变棋盘的布局。

  • 根据给定初始布局和目标布局,移动棋子从初始布局达到目标定居,求解移动步骤并输出。

编程语言和开发环境

  • 由于对InteliJ IDEA比较熟悉,所系编程环境选择IntelliJ IDEA;

  • 编程语言选择JAVA

实验思路

1、存储初始和目标方格状态

  • 创建二维链表star用来存储方格初始状态

  • 创建二维链表Final用来存储目标方格状态

2、创建三个三维链表

  • 创建三维链表Close,用来存储每次比较H(x)值最小的二维链表

  • 创建三维链表Open,用来存储未放进Close链表的二维链表

  • 创建一个二维链表Open_0,用来存储对应Open链表中H(x)的值和对应二维表的下标

3、函数的创建

  1. 创建Next_Stemp函数,用来判断0值下一步可以移动的方向;

  2. 创建函数faction1,判断移动后的方格是否为目标方格;

  3. 创建函数faction2,判断移动后的方格是否出现在Open链表和Close链表中

  4. 创建insert函数,将下一步未出现在Open链表和Close链表中的情况存储在Open表中

实现的原理

  1. 将初始状态和目标状态录入,将初始状态存储在Open链表中

  2. 计算Open链表中所有表格的H(X)的值;

  3. 将H(X)值最小的表格存储到Close表格中,并从Open表中移除;

  4. 将第三步移入Close表格中的表格,求出下一步可以移动的方向即移动后的情况

  5. 比较移动后的情况,如果说移动后的表格为目标表格,则结束,如果移动后的表格不是目标表格也不在Open链表和Close链表中,则将移动后的表格放入Open链表中,重复第2步骤

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

L丶丨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值