算法设计与分析

来源:互联网 发布:galgame制作软件 编辑:程序博客网 时间:2024/05/16 08:02

ref 《》by王秋芬
贪心算法:当前选择可能依赖已经做出的选择,但不依赖与还未作出的选择和子问题;特征:自顶向下,一步步做出贪心选择,但如当前选择可能要依赖子问题的解时,则难以通过局部的贪心策略达到整体最优解。

分治算法:分治法中各个子问题是独立的,即不包含公共的子问题,so 一旦递归的求出格子问题的解后,便可自下而上地将子问题的解合并成原问题的解。但如果各个子问题不是独立的,则分治法要做很多不必要工作,即重复解公共的子问题,对时间的消耗太大。

动态规划算法:问题经分解得到的各个子问题往往不是相互独立的。求解过程中,将已解决的解进行保存,在需要时可以轻松找出。比喵了大量的无意义的重复计算,从而降低算法的时间复杂性。通常用表的形式保存已解决的子问题的解。

求解步骤:分析最优解性质,–if fit this algorithm;
递归定义最优值(建立递归式orDP方程)
自底向上求出最优值,记录
根据计算出的最优值时得到的信息,构造出最优解。

基本要素:最优子结构;子问题重叠性质;自底向上的求解方法

ps. 递归算法的空间复杂度与递归深度有关 深度n O(n) logn O(logn)

0 0
原创粉丝点击