首页 > 其他分享 >对八数码的一些解释

对八数码的一些解释

时间:2023-11-23 17:00:40浏览次数:35  
标签:解释 数字 状态 曼哈顿 博客 BFS 数码 一些 考虑

先简要解释一下从任何一个状态到目标状态的移动步数不可能小于所有数字当前位置与目标位置的曼哈顿距离之和

考虑一次移动,只能让一个数字的曼哈顿距离加一或者减一,而目标状态所有数字的曼哈顿距离都是0,所以得证

我们可以用普通的BFS做这道题目,由于边权是1,所以第一次搜索到的时候一定是最优情况

考虑用A*优化这个BFS

用上一篇博客相同的方法可以证明这个A*也满足上一篇博客的那个引理

所以当一个状态第一次被取出的时候,实际代价一定是最小的(因为同一状态估价函数相同,不用考虑估价函数的影响),也就只用考虑一次了,不会出现像上上篇博客说的那个问题

标签:解释,数字,状态,曼哈顿,博客,BFS,数码,一些,考虑
From: https://www.cnblogs.com/dingxingdi/p/17851975.html

相关文章

  • 对第K短路一题的一些解释
    首先证明那个比较显然的推论我们先证明一下一个小引理:这个BFS先出队的点一定比后出队的点的代价小或等于用数学归纳法,假设前面已经出队的点满足以上性质,之前最后一个出队的点为\(x\),现在队列里面的队首是\(y\),那我们就是要证明\(y\)的代价比\(x\)小或等于我们考虑一下\(y\)是怎......
  • 关于A*的一些理解
    A*算法,本质是对BFS的一种优化,无论这个BFS是普通的BFS(搜索树上边权为1)还是优先队列BFS(搜索树上的边权可能大于1)蓝书上论证正确性那一段说的\(s\)指的是目标状态的某一状态(即\(s\)已经到达了目标状态但不一定最优)然后再去理解那一段话但是,我想说的是,中间的点第一次被取出的时候不......
  • obproxy 源码编译以及一些问题整理-暂未编译成功
    尝试自己编译下oceanbase的obproxy并记录下一些问题,目前是暂未编译成功,因为是openssl版本包的问题环境说明基于了RockyLinuxrelease8.8,同时obproxy使用了4.2.1版本的构建参考命令这个官方已经提供了,主要就是initdebug,makeshbuild.shinitshbuild.sh......
  • 之后的一些计划
    数据结构待写vectorhash平衡树(splay,treap,AVL树)Link-Cut-Tree树套树不想写heap红黑树舞蹈链DLX主席树已写kdtree算法待写拓扑排序KMPmanacher树上启发式合并cdq分治不想写莫队已写逆元......
  • Ego_planner_swarm之minimum snap(jerk)代码解释
    首先是minimumsnap的理论推导过程https://blog.csdn.net/u011341856/article/details/121861930我对他的博客的一些笔记https://pan.quark.cn/s/8549109ff930#/list/share下面就是对高飞老师egoplanner中的minimumsnap(jerk)的注释解析#include<iostream>#include<traj......
  • npm install 遇到的一些问题
    node不是命令符快捷键win+R,输入cmd,打开命令窗口,输入node,如果出现了版本信息,就说明安装成功了node.js。右键以管理员身份打开vsCode,打开项目,打开终端,再次输入npminstall,就不会报此错误了。npmERR!codeERR_SOCKET_TIMEOUT原因:没有更改npm镜像源,国内访问官方源网速......
  • 七段数码管绘制
      importturtle,datetime#定义一个,用于绘制代码管的间隙defdraw_gap():turtle.penup()turtle.forward(5)#定义一个函数,用于绘制一段代码管,这里传入的参数输一个bool类型defdraw_line(draw):draw_gap()turtle.pendown()ifdrawelseturtle.penup()......
  • 7段数码管绘制(小时,分,秒)
    7段数码管绘制(小时,分,秒)python代码:#七段数码管的绘制.pyfromturtleimport*#调用turtle、random、time库fromrandomimport*importtimedefdrawGap():penup()#提笔fd(5)defdrawLine(draw):drawGap()ifdraw:#除了七段数码管提笔,其......
  • 数码管问题
    importturtle,datetimedefdrawGap(): #绘制数码管间隔  turtle.penup()  turtle.fd(5)defdrawLine(draw): #绘制单段数码管  drawGap()  turtle.pendown()ifdrawelseturtle.penup()  turtle.fd(40)  drawGap()  turtle.right......
  • 7段数码管绘制
    7段数码管绘制运行代码importturtle,datetimedefdrawGap(): #绘制数码管间隔  turtle.penup()  turtle.fd(5)defdrawLine(draw): #绘制单段数码管  drawGap()  turtle.pendown()ifdrawelseturtle.penup()  turtle.fd(40)  draw......