如何优雅地使用深度优先搜索?

7ff13e111b01e76d239b122ef74fd70f.png

点击蓝字 关注我们

ce629246d843a84eedb3c3d04a6be680.png

上周我们在【算法学与练】专栏中,讲到了排序中的循环排序、计数排序和归并排序,还有一种排序也需要大家重点掌握,这种排序叫做快速排序

想获取算法题解,回复【算法】即可~除此之外,蓝桥云课专属算法刷题群随时为你开放~

e2f11920875b96074a2ae5bcf3a321fd.png

快速排序

它是对冒泡排序算法的一种改进,它的基本思想是:通过一趟排序将待排记录分割成独立的两部分。

其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,已达到整个序列有序。

f0b3ef4bcc31b976de225c355664ef88.gif

排序的练习题来啦!

0cc8c1d9c28f6257249bde64bcf33c5b.png

想获取题解,在菜单栏回复【算法】即可哦!

上周算法刷题的知识点除了排序外,还有搜索。

搜索

搜索算法是利用计算机的高性能来有目的的穷举一个问题解空间的部分或所有的可能情况,从而求出问题的解的一种方法。

现阶段一般有枚举算法、深度优先搜索、广度优先搜索、A*算法、回溯算法、蒙特卡洛树搜索、散列函数等算法。

现在主要讲的是深度优先搜索,它所遵循的搜索策略是尽可能“深”地搜索树

它的基本思想是:为了求得问题的解,先选择某一种可能情况向前(子结点)探索,在探索过程中,一旦发现原来的选择不符合要求,就回溯至父亲结点重新选择另一结点,继续向前探索,如此反复进行,直至求得最优解。

792b6322162ed6c7c4f621e2e432918c.png

剪枝算法是一个搜索算法旨在减少在其搜索树中,被极大极小算法评估的节点数。这是一个常用人机游戏对抗的搜索算法,它的基本思想是根据上一层已经得到的当前最优结果,决定搜索是否要继续下去。

但是这个算法严重依赖于着法的寻找顺序,如果你总是先去搜索最坏的着法,那么 Beta 截断就不会发生,因此该算法就如同最小-最大一样,效率非常低。

e83464f64047af50a66a19ca561ce3d6.png

练习题来啦!

1.N 皇后问题

280eee9f15d45f27ffb38803cdb84e63.png

2.四平方和

5326522dadbe7e6233b4a236cca4a2d2.png

3.完美正方形

bdda3d22be080842a1ce78749c22980e.png

7e38ab6a93aa60f6ffd74849897697f9.png

4eb13a6f51c67a32fc6d84cfb50a5fce.png

蓝桥云课专属算法刷题群随时为你开放,提前祝贺你成为更优秀的自己~

▼欢迎加入算法刷题群▼

217b211cc706894205d7f0b7e52bbfbc.png

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值