(软考-软件设计师.下午)动态规划算法、回溯算法、贪心算法、分治算法的应用

导读:本篇文章讲解 (软考-软件设计师.下午)动态规划算法、回溯算法、贪心算法、分治算法的应用,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

分治 

关键字:【递归技术】【二分查找】

(软考-软件设计师.下午)动态规划算法、回溯算法、贪心算法、分治算法的应用分治法的设计思路:

将一个难以直接解决的大问题分解成一些规模较小的相同问题以便于逐个击破,分而治之。 

(软考-软件设计师.下午)动态规划算法、回溯算法、贪心算法、分治算法的应用 

分治法-递归技术

(软考-软件设计师.下午)动态规划算法、回溯算法、贪心算法、分治算法的应用 

 

int F(int n)
{
if(n == 0) return 1;
if(n == 1) return 1;
if(n > 1 ) return F(n-1) + F(n-2);
}

分治法-二分法查找

 (软考-软件设计师.下午)动态规划算法、回溯算法、贪心算法、分治算法的应用(108条消息) 【二分查找】有这一篇足够了_快到锅里来呀的博客-CSDN博客_二分查找icon-default.png?t=M85Bhttps://blog.csdn.net/m0_58761900/article/details/124664975?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166504720116782248515187%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=166504720116782248515187&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-124664975-null-null.nonecase&utm_term=%E4%BA%8C%E5%88%86&spm=1018.2226.3001.4450

由代码可以看出二分查找也属于分治法的一种,关于二分查找,这位博主总结的很详细。 

动态规划

关键字:【查表】

(软考-软件设计师.下午)动态规划算法、回溯算法、贪心算法、分治算法的应用

 

动态规划的设计思路:

与分治法类似,基本思想就是将待解决的问题分解成若干个子问题,先求解子问题,然后从子问题的解得到原问题的解。与分治法不同的是,适用于动态规划法求解的问题,经分解得到的子问题往往不是独立的。若用分治法求解类似问题,则相同的问题会被求解多次,以至于最后求解原问题需要耗费指数级时间

最常见的动态规划的题目:

(软考-软件设计师.下午)动态规划算法、回溯算法、贪心算法、分治算法的应用

 

爬上第 1 级只有一种方法:直接爬 1 级即可。 爬上第 2 级有两种方法:每次爬 1 级,爬两次;或者一次爬 2 级。 (数据量少我们可以尝试用列举法做出来)

动态规划的核心就是:拆分子问题,记住过往,减少重复计算

(软考-软件设计师.下午)动态规划算法、回溯算法、贪心算法、分治算法的应用

回溯

关键字:【优先搜索法(深度优先)】【迷宫问题(走不通就退后去)】

(软考-软件设计师.下午)动态规划算法、回溯算法、贪心算法、分治算法的应用

(软考-软件设计师.下午)动态规划算法、回溯算法、贪心算法、分治算法的应用

回溯法的设计思路:

一种既带有系统性又带有跳跃性的搜索算法。她在包含问题的所有解的解空间树中,按照深度优先的策略,从根节点出发搜索解空间树。

使用回溯法解决问题的过程,实际上是建立一棵“状态树(解空间树)”的过程。 

例如,在解决列举集合{1,2,3}所有子集的问题中,对于每个元素,都有两种状态,取还是舍,所以构建的状态树为:

(软考-软件设计师.下午)动态规划算法、回溯算法、贪心算法、分治算法的应用

 

贪心

关键字:【背包问题(得不到最优解)】【0-1背包问题】【每一步取最优,结果不见得最优】【最先适宜策略(能进则进)】【最优适宜策略(能进进最大)】

(软考-软件设计师.下午)动态规划算法、回溯算法、贪心算法、分治算法的应用

 

贪心算法的设计思路:

经常被用来解决最优化问题,但他的最优往往是从局部最优来考虑的,每一步都选最优的方案,但这种方案不一定能得到整体上最优

背包问题

背包问题是典型的算法问题,包括两种形式,【0-1背包问题】和【部分背包问题】。0-1背包问题是指每个物品或者全部放在背包中或者不放在背包中,求解在特定背包容量下装入背包物品的最大价值。部分背包问题中,每个物品可以部分地放入背包中,求解在特定背包容量下装入背包物品的最大价值。
基于单位重量价值最大优先的策略来将物品放入背包中,本质上是一种贪心的策略。在该策略下求0-1背包问题,不能确保得到最优解。而对于部分背包问题,是可以得到最优解的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/119548.html

(1)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!