问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

深度优先算法解决八数码问题

发布网友 发布时间:2022-05-16 01:36

我来回答

1个回答

热心网友 时间:2023-10-08 18:51

首先我们来想象一只老鼠,在一座不见天日的迷宫内,老鼠在入口处进去,要从出 口出来。那老鼠会怎么走?当然是这样的:老鼠如果遇到直路,就一直往前走,如果遇到分叉路口,就任意选 择其中的一个继续往下走,如果遇到死胡同,就退回到最近的一个分叉路口,选择另一条道路再走下去,如果 遇到了出口,老鼠的旅途就算结束了。深度优先搜索法的基本原则就是这样:按照某种条件往前试探搜索,如 果前进中遭到失败(正如老鼠遇到死胡同)则退回头另选通路继续搜索,直到找到条件的目标为止。
  实现这一算法,我们要用到编程的另一大利器--递归。递归是一个很抽象的概念, 但是在日常生活中,我们还是能够看到的。拿两面镜子来,把他们面对着面,你会看到什么?你会看到镜子中 有无数个镜子?怎么回事?A镜子中有B镜子的象,B镜子中有A镜子的象,A镜子的象就是A镜子本身的真实写 照,也就是说A镜子的象包括了A镜子,还有B镜子在A镜子中的象………………好累啊,又烦又绕口,还不好理 解。换成计算机语言就是A调用B,而B又调用A,这样间接的,A就调用了A本身,这实现了一个重复的功能。再 举一个例子;从前有座山,山里有座庙,庙里有个老和尚,老和尚在讲故事,讲什么呢?讲:从前有座山,山 里有座庙,庙里有个老和尚,老和尚在讲故事,讲什么呢?讲:从前有座山,山里有座庙,庙里有个老和尚, 老和尚在讲故事,讲什么呢?讲:…………。好家伙,这样讲到世界末日还讲不玩,老和尚讲的故事实际上就 是前面的故事情节,这样不断地调用程序本身,就形成了递归。 万一这个故事中的某一个老和尚看这个故事不 顺眼,就把他要讲的故事换成:“你有完没完啊!”,这样,整个故事也就嘎然而止了。我们编程就要注意这 一点,在适当的时候,就必须要有一个这样的和尚挺身而出,把整个故事给停下来,或者使他不再往深一层次 搜索,要不,我们的递归就会因计算机存储容量的*而*溢出,切记,切记。
  我们把递归思想运用到上面的迷宫中,记老鼠现在所在的位置是(x,y),那它现在有 前后左右4个方向可以走,分别是(x+1,y),(x-1,y),(x,y+1),(x,y-1),其中一个方向是它来时的路,我们先不 考虑,我们就分别尝试其他三个方向,如果某个方向是路而不是墙的话,老鼠就向那个方向迈出一步。在新的 位置上,我们又可以重复前面的步骤。老鼠走到了死胡同又是怎么回事?就是除了来时的路,其他3个方向都是 墙,这时这条路就走到了尽头,无法再向深一层发展,我们就应该沿来时的路回去,尝试另外的方向。
  例:八皇后问题:在标准国际象棋的棋盘上(8*8格)准备放置8只皇后,我们知 道,国际象棋中皇后的威力是最大的,她既可以横走竖走,还可以斜着走,遇到挡在她前进路线上的敌人,她 就可以吃掉对手。要求在棋盘上安放8只皇后,使她们彼此互相都不能吃到对方,求皇后的放法。
  这是一道很经典的题目了,我们先要明确一下思路,如何运用深度优先搜索法,完 成这道题目。我们先建立一个8*8格的棋盘,在棋盘的第一行的任意位置安放一只皇后。紧接着,我们就来放 第二行,第二行的安放就要受一些*了,因为与第一行的皇后在同一竖行或同一对角线的位置上是不能安放 皇后的,接下来是第三行,……,或许我们会遇到这种情况,在摆到某一行的时候,无论皇后摆放在什么位 置,她都会被其他行的皇后吃掉,这说明什么呢?这说明,我们前面的摆放是失败的,也就是说,按照前面 的皇后的摆放方法,我们不可能得到正确的解。那这时怎么办?改啊,我们回到上一行,把原先我们摆好的 皇后换另外一个位置,接着再回过头摆这一行,如果这样还不行或者上一行的皇后只有一个位置可放,那怎 么办?我们回到上一行的上一行,这和老鼠碰了壁就回头是一个意思。就这样的不断的尝试
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
酸醋萝卜怎么做又脆又好吃 账簿启用及交接表填写的步骤 账簿启用及交接表怎样填写 说的是精神分裂症,吃了二年多的药,分别是利培酮片,苯海索片,补脑_百度... 精神分裂症急性期适当的治疗方法 快递三斤荔枝的话要多少钱? 求高手指点一个plc编程问题,计算时间差,还有时间比较后,输出执行... 你好高手 我现在买了个松下fp0的PLC我想写一个步进程序,请问能否... 【plc执行程序步骤】 plc执行程序时 若有一步不能满足条件而执行不了... 电脑屏幕的壁纸怎么更换? 可以搜索所有网页的引擎,不管在哪个网站上的?或者软件也行,Google有许多还是搜索不到。 西门子双开门冰箱哪个好? 企业经济类型填写的是全民的是什么意思 南宁市那有人会手机定位 微信聊天记录删除了,请问怎么恢复! 20g防晒霜能用多久 10ml的防晒霜能用多久 一般一瓶50ML的防晒霜各位用多久 花西子防晒三合一可以用多久 宝宝便秘的原因是啥?哪3件事不避免,会加重病情? 新生宝宝总是便秘,应该考虑哪些原因? 国产4K电视为何便宜 为什么同是4K电视,价格会差那么多? 小学科学豆芽的生长过程 九个月怎么断夜奶? 怎么断夜奶最合适 线上考试作文800字是打字吗 过敏性咳嗽怎么办?闻到油漆,化学气体和怪味都咳嗽,吃什么药💊最好? 只知道,但不是好友能举报吗? 怎么样把nexus 7 二代刷回原生系统 请问地基的深度限制如何界定 和建筑的标高是如何限定的 北京深度搜索科技有限公司怎么样? 建筑挖掘地下部分深度限制 搜索引擎技术的智能技术 求 翻译 学校范围内的搜索引擎技术上要求高吗? 美蓓亚锂电角磨机质量好吗 光纤正常!路由器连手机打不开网页!看不了微信朋友圈! 手机在家里路由器wifi状态下上微信看不到朋友圈图片,人人可以看。 多亲2pro怎么连接otg 你好 我的路由器有毛病,微信朋友圈不显示图片。是什么问题,能帮忙弄弄吗 新买的路由器电脑联网朋友联网都没问题,而我。。微信朋友圈加载不出来,或者就是朋友圈刷不出来。 家里wifi连上打不开微信朋友圈链接 长城宽带手机wifi微信朋友圈总刷不出照片,于路由器有关吗?换个路由器会好吗? wifi打不开微信朋友圈 用单位的TP-LINK路由器无法看微信朋友圈的图片,用家里的水星路由器可以看到,怎么回事? 明明路由器信号很好为什么就是打不开微信朋友圈里发表的文章? 为什么手淘搜索的词和我的产品没有关系? 广告栏设计尺寸1920 1080 15s里面的15S是什么意思 EEF大型灯箱广告的设计需要满足哪些条