动态规划和贪心算法笔记

动态规划

动态规划设计思路:

1.  寻找最优子结构
2.  证明分隔的剩下部分(通常是2个部分)也能满足最优子结构
3.  设计动态规划方程式,函数
4.  证明方法正确性
5.  迭代计算得出结果

算法实现

 算法中最直观的是自顶向下迭代,但是这样会形成一个2^n次方的时间复杂度的算法,可以使用备忘录和自底向上递归来实现。

通常最优子结构将整个问题分解为2部分,2部分中每部分都有最优子结构,依次迭代产生最终结果。

贪心算法

个人理解:贪心(贪婪)算法是动态规划算法的一种特殊算法。

  1.寻找寻找最优子结构
  2.设计递归算法
  3.证明我们做出的是一个贪心选择,只剩下一个子问题(和动态规划的最大区别)
  4.证明贪心选择总是安全的
  5.递归,实现算法

最大的区别在于做出贪心选择,贪心选择之后,只剩下一个子问题。这样我们可以设计出时间复杂度O(N)的算法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,025评论 25 708
  • 站在季节的岸边,秋天的气息如潮水般涌来。风里翻飞着落叶,原野的金色阳光,天空的纯净空旷,这个季节的每一根脉...
    四月芳菲五月红泥阅读 441评论 0 2
  • 禾谷, 今天晚上回到家得知你去同学家参加睡衣派对了,可以想像那一定是一个非常开心的聚会。我一个人安静的坐在沙发上,...
    草马束木阅读 86评论 0 0
  • rt
    16de687f9f78阅读 104评论 0 3