八数码 估价函数_搜索专题3 | 八数码 HDU 1043

本文介绍了八数码问题的解题思路,重点讨论了A*搜索算法的运用,通过计算曼哈顿距离作为估价函数。同时,提到了IDA*算法在处理大量状态搜索问题中的优势,并预告了下篇将讲解IDA*算法的迭代加深搜索应用。
摘要由CSDN通过智能技术生成

本搜索专题会参考vjudge上的《kuangbin带你飞》系列题目,前面2篇是基础题,后面会慢慢复杂起来!加油!

前两篇展示了DFS和BFS的基本应用,可能大家觉得比较简单,回顾一下,DFS一般用于求所有解的情况,BFS用于求最短路类型的问题,DFS缺点是容易迷失自己,优点是不用维护队列,省空间。BFS缺点是需要队列在处理寻路这样的问题时比较耗费空间,优点是循序渐进的容易找最优解。本篇接着看BFS的启发式搜索A*算法。虽然BFS搜索路径已经不错了,但是每次都是按部就班的从队列里先进先出的取元素,这样有点太古板了。于是在某些情况下可以采用优先队列来替代普通队列,优先队列这个BFS搜索本来打算写一篇文章的,现在直接放在A*里面理解吧。优先队列是指在搜索解时,选取一条最优路径,比如当前代价最小的路径。然而这样有一个缺点,那就是当前代价小并不代表最终这条路径是最小的。理想情况下是知道当前消耗和接下来需要消耗的,然而未知路径的消耗只有先知才知道 e9578ea9e1f71a1c93a2fb7106dbcb30.png。如下图:

16979965915683b254152df4a8e9e5cc.png

于是有人便想到了,虽然不能够确定未知路径的代价H,但是我们可以大概估算一下代价H啊,小学老师就说过,估算是一项非常重要的能力,A*算法里面估算就是核心了(虽然看上去会感觉不靠谱)。嗯,大概思路就有了,A*算法 = 优先队列 + 未知估值那么未知估值具体要怎么做呢?这又是一个类似于DP算法要怎么写呢的问题 36d22ed17d77d7a58f422d465ad48383.png 36d22ed17d77d7a58f422d465ad48383.png只有针对特定的题目,我们才知道要怎么写,适合意会不好言传,还是看题领悟吧。题目很简单,其实重点是看懂代码。代码其实也很清晰,重点是花点耐心看完~

The 15-puzzle has been around for over 100 years; even if you don't know it by that name, you've seen it. It is constructed with 15 sliding tiles, each with a number from 1 to 15 on it, and all packed into a 4 by 4 frame with one tile missing. Let's call the missing tile 'x'; the object of the puzzle is to arrange the tiles so that they are ordered as:

15谜题已经有100多年历史了。即使不知其名,肯定也见过。它由15个滑动块组成,每个滑动块由数字1到15标记,并且被放在4x4大小的框框里面,缺失一个块。缺失的称之为x。谜题的目标就是将这些块有序的整理起来。如下图:

1  2  3  4

5  6  7  8

9 10 11 12

13 14 15  x

where the only legal operation is to exchange 'x' with one of the tiles with which it

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值