小白-关于DFS深度优先搜索算法的一些问题

本人小白,这是该账号的第一篇文章,开场白到此。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

最近在看《啊哈 算法》这本书,在第4章中介绍了DFS算法

DFS算法框架如下

void dfs(int step){

  判断边界

      for(int i=0;i<=n;i++)循环尝试每种可能{

         book[i]=1;

         尝试下一步dfs(step+1)

         book[i]=0;

       }

return;

}

尝试每种可能的过程中我们经常使用book数组判断该节点是否被访问过,并且在下一次尝试之后需要将所涉及的book数组中的节点位置归零。

在对本书后续问题的阅读当中,笔者发现book[i]=0似乎可以省去

 

笔者给出对于  “book[i]=0”  可以省去的一些条件:

1.大部分DFS都会需要book[i]归零;

2.是否需要归零取决于该节点在同一次搜索中是否可以被重复访问。

 

DFS算法由斯坦福大学John E.Hopcroft和Robert E.Tarjan发明。

 

无论是否需要book[i]=0这一条件:

DFS算法都保证了图的连通性(任意两点能否互相访问)和图的平面性(图中所有边不交叉)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值