美文网首页工作生活
数据结构与算法笔记day23:动态规划

数据结构与算法笔记day23:动态规划

作者: 楠楠喜欢泡枸杞 | 来源:发表于2019-07-02 16:31 被阅读0次

    1初识动态规划

        这节课的内容不涉及动态规划的理论,而是通过两个例子:0-1背包问题0-1背包问题升级版,展示了动态规划是如何解决问题的。这两个例子都是非常经典的动态规划问题,只要真正搞懂它们,基本上动态规划已经入门一半了。

        从例子中我们可以发现,大部分动态规划能解决的问题,都可以通过回溯法来解决,只不过回溯算法解决起来效率比较低,时间复杂度是指数级的。动态规划算法,在执行效率方面,要高很多。尽管执行效率提高了,但是动态规划的空间复杂度也提高了,所以很多时候,我们会说动态规划是一种空间换时间的算法思想。

    2动态规划理论

        什么样的问题适合用动态规划解决呢?这些问题可以总结概括为“一个模型三个特征”。其中,“一个模型”指的是,问题可以抽象成分阶段决策最优解模型。“三个特征”指的是最优子节无后效性重复性子问题

        动态规划的解题思路有两种,分别是状态转移表法和状态转移方程法。其中,状态转移表法解题思路大致可以概括为,回溯算法实现-定义状态-画递归树-找重复子问题-画状态转移表-根据递推关系填表-将填表过程翻译成代码。状态转移方程法的大致思路可以概括为,找最优子结构-写状态转移方程-将状态转移方程翻译成代码。

        对比之前讲过的四种算法思想,贪心、回溯、动态规划可以解决的问题模型类似,都可以抽象成多阶段决策最优解模型。尽管分治算法也能解决最优问题,但是大部分问题的背景都不适合抽象成多阶段决策模型。

    3动态规划实战

        这节课讲了一个例子:如何实现搜索引擎中的拼写纠错功能

        我们引入了编辑距离这个概念,它用来量化两个字符串的相似度,从而进行最合适的纠错提示。编辑距离有多种不同的计算方式,比较著名的有莱文斯坦距离最长公共子串长度

        当然,真正用于商用的的搜索引擎,拼写纠错功能没有我们例子中讲的那么简单,它有很多种优化思路。

相关文章

  • 动态规划-js

    动态规划 参考:算法分析与设计-贪心&动归 漫画:什么是动态规划? 【数据结构与算法】 DP 动态规划 介绍 介绍...

  • 数据结构与算法笔记day23:动态规划

    1初识动态规划 这节课的内容不涉及动态规划的理论,而是通过两个例子:0-1背包问题、0-1背包问题升级...

  • 一位算法工程师的自我修养

    数据结构与算法 基本算法思想动态规划贪心算法回溯算法分治算法枚举算法 算法基础 时间复杂度 空间复杂度 最大复杂度...

  • 七、动态规划

    记录一下对动态规划的学习。在学习数据结构与算法的过程中,觉得比较难的一个算法思想就是动态规划了。它的应用实在是多,...

  • 动态规划 Dynamic Programming

    从运筹学和算法的角度综合介绍动态规划 算法分类总结动态规划与静态规划的关系浅析静态规划和动态规划动态规划解非线性规...

  • 算法草稿

    常用算法集合 字符处理算法数组与查找链表树算法思路 递归、动态规划、BFS/DFS、双指针、二分法搜索数据结构的...

  • TsingHuaDSA-树

    该文章为清华大学数据结构与算法设计MOOC课程读书笔记. 1. 数据结构的静态操作与动态操作 静态操作(stati...

  • 动态规划理论

    学习笔记,来自数据结构与算法之美 动态规划问题的特点:符合一个模型,三个特征 一个模型:多阶段决策最优解模型 三个...

  • 4. 动态规划算法

    1. 动态规划算法总结2. 漫画:什么是动态规划?3.算法之动态规划4. 动态规划-算法

  • Swift 算法实战:动态规划

    Swift 算法实战:动态规划 Swift 算法实战:动态规划

网友评论

    本文标题:数据结构与算法笔记day23:动态规划

    本文链接:https://www.haomeiwen.com/subject/mmsocctx.html