动态规划算法和贪心算法的比较
来源:互联网 发布:同城网络超市 编辑:程序博客网 时间:2024/05/17 07:49
利用动态规划求解最优问题的步骤:
(1)证明该问题具有最优子结构性质;
(2)根据最优子结构性质,写出最优值的递归表达式;
(3)根据递归式,说明该问题具有重叠子结构性质;
(4)采用自底向上的方式计算,写出求解最优值的非递归算法,同时构造最优解的解空间树;
(5)遍历解空间树,求得最优解。
(1)证明该问题具有最优子结构性质;
(2)根据最优子结构性质,写出最优值的递归表达式;
(3)根据递归式,说明该问题具有重叠子结构性质;
(4)采用自底向上的方式计算,写出求解最优值的非递归算法,同时构造最优解的解空间树;
(5)遍历解空间树,求得最优解。
利用贪心算法求解最优问题的步骤:
(1)选定合适的贪心选择的标准;
(2)证明在此标准下该问题具有贪心选择性质;
(3)证明该问题具有最优子结构性质;
(4)根据贪心选择的标准,写出贪心选择的算法,求得最优解。
动态规划算法和贪心算法都属于递推算法,并且这两个算法适用的问题都具有最优子结构,都利用局部最优解来推导全局最优解。
动态规划算法和贪心算法有一个显著区别:
1)在动态规划算法中,以自底向上的方式来利用最优子结构,也就是说,首先找到子问题的最优解,解决子问题,然后找到问题的一个最优解。
2)在贪心算法中,以自顶向下的方式使用最优子结构,也就是说,贪心算法会先做出选择,在当时看起来是最优的选择,然后再求解一个结果子问题,而不是先求解子问题的最优解,然后再做出选择。
两者的不同点:
1 贪心算法作出的每步贪心决策都无法改变,因为贪心策略是由上一步的最优解推导下一步的最优解,而上一部之前的最优解则不作保留。
2 动态规划算法的全局最优解中一定包含某个局部最优解,但不一定包含前一个局部最优解,因此需要记录之前的所有局部最优解;
(1)选定合适的贪心选择的标准;
(2)证明在此标准下该问题具有贪心选择性质;
(3)证明该问题具有最优子结构性质;
(4)根据贪心选择的标准,写出贪心选择的算法,求得最优解。
动态规划算法和贪心算法都属于递推算法,并且这两个算法适用的问题都具有最优子结构,都利用局部最优解来推导全局最优解。
动态规划算法和贪心算法有一个显著区别:
1)在动态规划算法中,以自底向上的方式来利用最优子结构,也就是说,首先找到子问题的最优解,解决子问题,然后找到问题的一个最优解。
2)在贪心算法中,以自顶向下的方式使用最优子结构,也就是说,贪心算法会先做出选择,在当时看起来是最优的选择,然后再求解一个结果子问题,而不是先求解子问题的最优解,然后再做出选择。
两者的不同点:
1 贪心算法作出的每步贪心决策都无法改变,因为贪心策略是由上一步的最优解推导下一步的最优解,而上一部之前的最优解则不作保留。
2 动态规划算法的全局最优解中一定包含某个局部最优解,但不一定包含前一个局部最优解,因此需要记录之前的所有局部最优解;
0 0
- 动态规划和贪心算法的比较
- 动态规划算法和贪心算法的比较
- 动态规划算法和贪心算法的比较
- 动态规划与贪心算法的比较
- 贪心算法与动态规划的比较
- 贪心算法和动态规划的区别
- 动态规划和贪心算法的区别
- 动态规划和贪心算法的区别
- 动态规划和贪心算法的区别
- 动态规划和贪心算法的区别
- 动态规划和贪心算法的区别
- 动态规划和贪心算法的区别
- 贪心算法和动态规划
- 动态规划和贪心算法
- 贪心算法和动态规划
- 贪心算法和动态规划
- 动态规划和贪心算法
- 分治法,动态规划,贪心算法比较
- 关于jdk的配置极其易出现问题详细解答
- 1月20号总结
- getopts 命令
- MD5在java中的使用
- 关于面试你不知道的几点
- 动态规划算法和贪心算法的比较
- Spring——IOC(二)
- iOS开发- 项目中常用的svn命令
- 记录一个小汇编加法
- UVa 1583打表
- loop设备及losetup命令介绍
- 浅谈技术管理
- 类型修饰符const关键字
- Eclipse中绑定android sdk源码