就这!!就这!!就这!!哈哈哈哈。
(一)就自己对与这几个算法的一些总结。
1.动态规划法: 基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解,以自底向上的方式解各子问题。
2.分治法问题: 将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。
注: 你会发现,其实这两个没啥区别,都是大问题分解成小问题,然后找最优解的问题。不同的是分治法分解后的子问题是相互独立的,不相同。而动态规划法分解后的子问题有相同的,保存已解决的子问题的答案,而在需要时再找出已求得的答案,这样就可以避免大量的重复计算,节省时间。我们可以用一个表来记录所有已解的子问题的答案。不管该子问题以后是否被用到,只要它被计算过,就将其结果填入表中。
3.贪心算法问题: 采用自顶向下,以迭代的方法做出相继的贪心选择,每做一次贪心选择,就将所求问题简化为一个规模更小的子问题,通过每一步贪心选择,可得到问题的一个最优解。虽然每一步上都要保证能获得局部最优解,但由此产生的全局解有时不一定是最优的。
4.回溯法问题: 一般都是问题的解空间转化成了图或者树的结构表示,然后使用深度优先搜索策略进行遍历,遍历的过程中记录和寻找所有可行解或者最优解。
(二)各个方法的详解
1.动态规划法:
(1)在解决动态规划问题时一般分为四步:
1、定义一个状态,这是一个最优解的结构特征
2、进行状态递推,得到递推公式
3、进行初始化
4、返回结果
(2)适用性
1、最优子结构性质
2、无后效性
3、子问题的重叠性
2.分治法:
(1)在每一层的递归上的步骤
1、分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题。
2、解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题。
3、合并:将各个子问题的解合并为原问题的解。
它的一般的算法设计模式如下:
Divide-and-Conquer

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



