1.算法思想
1.1贪心思想
在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。通俗讲:就是求解问题时,先去判断第一步的最优解,然后讲下面看作一个递归的过程;
该算法在不考虑任何后果的情况下,选择了当时可行的最佳解决方案。贪婪方法说,应该分阶段解决问题,在这种情况下,应考虑到每个输入都是可行的。由于这种方法只关注即时结果,而没有考虑更大的局面,因此被认为是贪婪的。
1.2动态规划思想
将待求解的问题分解成若干个子问题,先分别求解每一个子问题,在求解每一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,最后一个子问题就是最初待求解问题的解。
2.算法步骤
2.1贪心算法步骤
(1)建立数学模型描述问题;
(2)将求解的问题分为若干个子问题;
(3)对每个子问题求解,得到子问题的局部最优解;
(4)把每个子问题的局部最优解合为求解问题的一个解;
2.2动态规划算法步骤
(1)分析最优解的性质,并刻画其结构特征,分解子问题;
(2)递归的定义最优解;
(3)以自底向上或自顶向下的记忆化方式(备忘录法)计算出子问题最优值;
(4)根据计算最优值时得到的信息,构造问题的最优解;
3.算法特点
3.1贪心
优点:适合大多数问题,相比其他算法易于实现且高效
缺点:未能产生最优的解决方案(贪心算法基本上是将当前问题分解为子问题建立解决方案,然后选择下一部分,以便立即产生当前问题的最佳解决方案(局部最优解)。结果,无需考虑或担心当前决定的后果。从来没有重新考虑以前的选择,尽管贪心算法给出了接近最优的解决方案,但它未能产生最优的解决方案。)
3.2动态规划
优点:
(1)能够得到全局最优解;
(2)由于动态规划方法反映了动态过程演变的联系和特征,在计算时可以利用实际知识和经验提高求解效率;
缺点:
(1)没有统一的处理方法,必须根据问题的各种性质并结合一定的技巧来处理;
(2)当变量的维数增大时,总的计算量及存贮量急剧增大。受计算机的存贮量及计算速度的限制,当今的计算机仍不能用动态规划方法来解决较大规模的问题,会产生“维数障碍”问题;
枯燥的理论知识后,往往需要“理论联系实际”;可以通过下面这个栗子更好的理解:https://blog.youkuaiyun.com/weixin_44369212/article/details/107298661