DFS(深度优先遍历搜索解析)

深度优先搜索(DFS)是一种图遍历方法,类似于树的先序遍历。在给定图中,从任意顶点开始,访问未被访问的邻接点,将visited数组置1,并继续搜索这些邻接点,防止重复访问。文中通过实例介绍了如何使用DFS解决杭电ACM的解救公主、素数圈和倒油问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  深度优先搜索思想

    深度优先搜索遍历类似于树的先序遍历。假定给定图G的初态是所有顶点均未被访问过,在G中任选一个顶点i作为遍历的初始点,则深度优先搜索递归调用包含以下操作:

(1)访问搜索到的未被访问的邻接点;

(2)将此顶点的visited数组元素值置1;

(3)搜索该顶点的未被访问的邻接点,若该邻接点存在,则从此邻接点开始进行同样的访问和搜索。

深度优先搜索DFS可描述为:

1)访问v0顶点;

2)置visited[v0]=1

3搜索v0未被访问的邻接点w若存在邻接点wDFS(w)

 实例:



  图中可能存在回路,且图的任一顶点都可能与其它顶点相通,在访问完某个顶点之后可能会沿着某些边又回到了曾经访问过的顶点。为了避免重复访问,可设置一个标志顶点是否被访问过的辅助数组visited [ ],它的初始状态为0,在图的遍历过程中,一旦某一个顶点i被访问,就立即让visited [i]为1,防止它被多次访问。


 

下面来看几个实例,运用深搜解题:


杭电ACM2102A计划解救公主问题

杭电ACM1016素数圈问题


倒油问题


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值