Chinaunix首页 | 论坛 | 博客
  • 博客访问: 612837
  • 博文数量: 113
  • 博客积分: 2554
  • 博客等级: 少校
  • 技术积分: 1428
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-21 19:53
文章分类

全部博文(113)

文章存档

2014年(1)

2013年(2)

2012年(94)

2011年(16)

分类: LINUX

2012-03-09 10:46:14

利用动态规划求解最优问题的步骤:
(1)证明该问题具有最优子结构性质;
(2)根据最优子结构性质,写出最优值的递归表达式;
(3)根据递归式,说明该问题具有重叠子结构性质;
(4)采用自底向上的方式计算,写出求解最优值的非递归算法,同时构造最优解的解空间树;
(5)遍历解空间树,求得最优解。
利用贪心算法求解最优问题的步骤:
(1)选定合适的贪心选择的标准;
(2)证明在此标准下该问题具有贪心选择性质;
(3)证明该问题具有最优子结构性质;
(4)根据贪心选择的标准,写出贪心选择的算法,求得最优解。

动态规划算法和贪心算法都属于递推算法,并且这两个算法适用的问题都具有最优子结构,都利用局部最优解来推导全局最优解。

动态规划算法和贪心算法有一个显著区别:
1)在动态规划算法中,以自底向上的方式来利用最优子结构,也就是说,首先找到子问题的最优解,解决子问题,然后找到问题的一个最优解。
2)在贪心算法中,以自顶向下的方式使用最优子结构,也就是说,贪心算法会先做出选择,在当时看起来是最优的选择,然后再求解一个结果子问题,而不是先求解子问题的最优解,然后再做出选择。

两者的不同点:
1 贪心算法作出的每步贪心决策都无法改变,因为贪心策略是由上一步的最优解推导下一步的最优解,而上一部之前的最优解则不作保留。 
2 动态规划算法的全局最优解中一定包含某个局部最优解,但不一定包含前一个局部最优解,因此需要记录之前的所有局部最优解;
阅读(7330) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~