第十五章:数据结构及算法应用(软件设计师备考)


第一节:分治法

1. 概述

基本思想:

把一个比较大的、复杂的问题,拆分成一些比较小的子问题,然后将各个子问题的解合并并得到原问题的解。

基本原则:

  1. 该问题的规模缩小到一定的程度就可以容易地解决

  2. 该问题可以分解为若干个规模较小的相同问题

  3. 利用该问题分解出的子问题的解可以合并为该问题的解

  4. 该问题所分解出的各个子问题是相互独立的

2. 递归技术

image-20211017223639089

3. 二分查找法

image-20211017224354134

第二节:回溯法

基本概念:

回溯法是一种选优搜索法,按选优条件向前搜索,以达成目标。但当搜索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新进行选择。这种走不通就退回一步再继续往下走的技术就是回溯法。

图示:

image-20211017224626515

image-20211017224647290

第三节:贪心法

基本概念:

总是做出在当前来说是最好的选择,而并不从整体上加以考虑,它所做的每一步选择只是当前步骤的局部最优选择,但从整体来说不一定是最优的选择。由于它不必为了寻找最优解而穷尽所有可能解,因此其耗费时间少,一般可以快速得到满意的解,但得不到最优解。

实例——背包问题:

image-20211017224945123

有三个物品(每种物品仅存一个),其容量分别为:20,30,40;其价格分别为:140,180,200;而背包可容纳的总量为70,我们希望背包中能容纳尽可能多的物品,使其容纳的物品价值最高。

贪心法则会根据单位容量价值最高的原则优先将这个物品进行容纳,如物品1的每10个容量其价值为70,物品2则为60,物品3则为50;因此,若采用贪心法,其将会优先放入物品1到背包中,然后放入物品2,此时空间只剩下20,无法装下物品3,因此,方案到此结束,采用该方法得到了总价320的物品。

但这显然不是最优解,我们将物品3和物品2装入背包,得到的物品总价值为380。如果能够不限制每种物品的选择次数,还可以得到价值420的方案。

第四节:动态规划法

基本概念:

在求解问题时,对于每一步决策,列出各种可能的局部解,再根据某种判定条件,舍弃那些肯定不能得到最优解的局部解,在每一步都经过筛选,以每一步都是最优解来保证全局是最优解。

在动态规划法中,基本上都要用到查表这一步骤。


参考视频:https://www.bilibili.com/video/BV1yU4y1371J?p=184

猜你喜欢

转载自blog.csdn.net/weixin_45605541/article/details/120817911