DFS 和 BFS 的做题感受

本文作者分享了自己对于DFS(深度优先搜索)和BFS(广度优先搜索)的理解,强调了DFS在寻找多个解或步数已知问题时的空间效率优势,而BFS通常用于寻找单一最短路线。作者指出,DFS适用于八皇后问题等,而BFS适用于最短路径问题。同时,文章探讨了两种搜索方法在搜索顺序、内存需求以及适用场景上的不同,并分析了它们的时间复杂度。
摘要由CSDN通过智能技术生成

最近,很是不在状态啊。
第一,自从回家之后,很是膨胀,大概有十天时间没有更新过博客了,而且暑假学的东西虽然当时可能理解了,但是现在从头开始复习,各种不会,我的天呐,我是怎么了!!!!!
第二,开学了,自己能水的特点又出来了,各种水群,真的是太浪费时间和生命了啊!! 很尴尬,这种事情又没法控制,只能说,我就是一个大水比!!!!!!! 改,以后让人给我禁言了算了。
第三,刚刚开学,这学期不想逃课了,想把成绩弄上去,虽然别人说成绩可能不太重要,但是我不行啊,我有自己的认知,这学期课程主要有1概率论2数据结构3java4逻辑与代数5大学物理6数字逻辑。总体来说,数据结构和java必须学好 没的说,概率论,逻辑与代数,数字逻辑也大部分时间来学吧。至于大物,基本放弃吧。。。。。真的不适合学了、没有思想了这种事情上学期就感觉出来了。
第四,自从暑假集训开始,自己的锻炼计划就失效了,现在开始要进行恢复训练了,每个星期三,五,天跑步。每次速度要逐渐提升到最后一小时能跑10公里就行。 接下来是做DFS 和BFS 的一些看法了,从网上别人那里摘取来的

一般来说,广搜常用于找单一的最短路线,或者是规模小的路径搜索,它的特点是”搜到就是最优解”, 而深搜用于找多个解或者是”步数已知(比如3步就必须达到条件)”的问题,它的空间效率高,但是找到的不一定是最优解,必须记录并完成整个搜索,故一般情况下,深搜需要非常高效的剪枝(优化).

像搜索最短路径这些的很明显要是用广搜,因为广搜的特性就是一层一层往下搜的,保证当前搜到的都是最优解,当然,最短路径只是一方面的应用,像什么最少状态转换也是可以应用的。
深搜就是优先搜索一棵子树,然后是另一棵,它和广搜相比,有着内存需要相对较少的优点,八皇后问题就是典型的应用,这类问题很明显是不能用广搜去解决的。或者像图论里面的找圈的算法,数的前序中序后序遍历等,都是深搜

深搜和广搜的不同之处是在于搜索顺序的不同。

深搜的实现类似于栈,每次选择栈顶元素去扩展,

广搜则是利用了队列,先被扩展的的节点优先拿去扩展。

搜索树的形态:深搜层数很多,广搜则是很宽。

深搜适合找出所有方案,广搜则用来找出最佳方案

深搜和广搜的区别:

深搜并不能保证第一次遇到目标点就是最短路径,因此要搜索所有可能的路径,因此要回溯,标记做了之后还要取消掉,因此同一个点可能被访问很多很多次。而广搜由于它的由近及远的结点扩展顺序,结点总是以最短路径被访问。一个结点如果第二次被访问,第二次的路径肯定不会比第一次的短,因此就没有必要再从这个结点向周围扩展――第一次访问这个结点的时候已经扩展过了,第二次再扩展只会得到更差的解。因此做过的标记不必去掉。因此同一个点至多只可能被访问一次。每访问一个结点,与它相连的边就被检查一次。因此最坏情况下,所有边都被检查一次,因此时间复杂度为O(E)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值