八数码深度优先搜索_深度优先搜索与广度优先搜索

本文介绍了八数码问题中深度优先搜索(DFS)和广度优先搜索(BFS)的原理及应用。深度优先搜索类似于二叉树的x序遍历,是一种递归算法,而广度优先搜索则类似层次遍历,通过队列实现。文中以实例详细阐述了两种算法的遍历过程。
摘要由CSDN通过智能技术生成
图的遍历是指从图的某一顶点出发,按照某种搜索方式沿着图中所有的顶点访问一次且仅访问一次。二叉树相比于图来说,是弱化的图。

深度优先搜索与广度优先搜索是常用的对图进行遍历的算法。

一、深度优先搜索

深度优先遍历相当于二叉树的x序遍历。

所谓深度优先搜索,是从图中的一个顶点出发,每次遍历当前访问顶点的临界点,一直到访问的顶点没有未被访问过的临界点为止。然后采用依次回退的方式,查看来的路上每一个顶点是否有其它未被访问的临界点。访问完成后,判断图中的顶点是否已经全部遍历完成,如果没有,以未访问的顶点为起始点,重复上述过程。

01764c9544674c7bd334320c3d03e524.png

假如有上述的无向图,采用深度优先算法遍历这个图的过程为:

1. 首先任意找一个未被遍历过的顶点,例如从V1开始,由于V1率先访问过了,所以,需要标记V1的状态为访问过;

2. 然后遍历V1的邻接点,例如访问V2,并做标记,然后访问V2的邻接点,例如V4(做标记),然后V8,然后V5;

3. 当继续遍历V5的邻接点时,根据之前做的标记显示,所有邻接点都被访问过了。此时,从V5回退到V8 ,看V8是否有未被访问过的邻接点,如果没有,继续回退到V4,V2 ,V1;

4. 通过查看V1,找到一个未被访问过的顶点V3,继续遍历,然后访问V3 邻接点V6,然后V7;

5. 由于V7 没有未被访问的邻接点,所有回退到V6 ,继续回退至V3 ,最后到达V1 ,发现没有未被访问的;

6. 最后一步需要判断是否所有顶点都被访问,如果还有没被访问的,以未被访问的顶点为第一个顶点,继续依照上边的方式进行遍历。

经过上述流程,我们可以得到上述的图的深度优先遍历结果:

V1 -> V2 -> V4 -> V8 -> V5 -> V3 -> V6 -> V7

根据上面的描述,我们可以看得出来,深度优先搜索是一个递归的算法。即“找到一条路先走到黑”。

二、广度优先搜索

广度优先遍历则相当于二叉树的层次遍历。指从图中的某一顶点出发,遍历每一个顶点时,依次遍历其所有的邻接点,然后再从这些邻接点出发,同样依次访问它们的邻接点。按照此过程,直到图中所有被访问过的顶点的邻接

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值