算法小记

参考:《计算机算法设计与分析》王晓东

刷力扣用到的核心算法有:分治法,贪心法,动态规划法,回溯法,分支限界法。

代价:做选择付出的代价,越小越好。

收益:做选择获得的收益,越大越好。

最优值:一个问题的策略,获得的最大收益或最小代价。

最优解:一个问题的策略,获得最大收益或最小代价时,每一步所做的选择序列。

每种算法都有它的适用条件,我们来总结一下:

动态规划

(1)最优子结构性质   

问题的最优解包含子问题的最优解。反过来说就是,我们可以通过子问题的最优解,推导出问题的最优解。如果我们把最优子结构,对应到我们前面定义的动态规划问题模型上,那我们也可以理解为,后面阶段的状态可以通过前面状态推导出来。

(2)重叠子问题

不同的决策序列,到达某个相同的阶段时,可能会产生重复的状态。

套路:找到四个要素,即子问题、状态定义、状态边界、状态转移  【子状边转】

贪心法

(1)最优子结构性质

(2)贪心选择性

做出在当前看来是最好的选择。不是从整体最优加以考虑,仅做出某种意义上的局部最优选择。得到的是最优解的近似解。

书中的范例所用到的解法做个总结:

算法小记_第1张图片

 

 

你可能感兴趣的:(算法练习)