分治递归:他是把原问题划分为各个子问题(形式相同,规模大子问题的解不依赖的规模小的子问题的解),各个子问题不重叠,然后把各个子问题的解通过递归求解出来,其实这时原问题的解也就出来了(可以理解为一种各个子问题的解组合成原问题);
回溯递归:
动态规划:他是把原问题划分为各个子问题(形式相同,规模大子问题的解依赖的规模小的子问题的解,并且规模大的子问题依赖于规模小子问题,这个子问题有多个,不止一个;或者说不通的子问题具有公共的子子问题);通常是从自底向上(从子问题的规模最小开始递归或者循环)的计算过程(循环或者递归)。对于动态规划不一定是数组,也可能是一个变量;我们应该根据要求定义存储空间。
【由于子问题的重叠,用分治与递归会重复多次的计算这些公共的子问题,通过动态规划可以用空间把之前的最优解保存下来】
动态规划满足的两个条件:第一个是最优子结构,意思是问题的最优解包含子问题(可能有多个子问题决定)的最优解;两个是子问题重叠,见上面分析。
贪心算法:子问题之一必须为空(为空的时候为递归的)。不同的问题有不同的选择满足贪心算法的方法;在用贪心算法时候,我们先找到一个递归贪心算法,然后才将其转化为迭代。
2万+

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



