基础算法(四)---动态规划算法
来源:互联网 发布:路由器有信号无网络 编辑:程序博客网 时间:2024/05/17 08:38
动态规划(Dynamic programming)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。
动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。
动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解。
通常许多子问题非常相似,为此动态规划法试图仅仅解决每个子问题一次,从而减少计算量: 一旦某个给定子问题的解已经算出,则将其记忆化存储,以便下次需要同一个 子问题解之时直接查表。
这种做法在重复子问题的数目关于输入的规模呈指数增长时特别有用。
关于动态规划最经典的问题当属背包问题。
算法步骤:
1.最优子结构性质。
如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有最优子结构性质(即满足最优化原理)。
最优子结构性质为动态规划算法解决问题提供了重要线索。
2.子问题重叠性质。
子问题重叠性质是指在用递归算法自顶向下对问题进行求解时,每次产生的子问题并不总是新问题,有些子问题会被重复计算多次。
动态规划算法正是利用了这种子问题的重叠性质,对每一个子问题只计算一次,然后将其计算结果保存在一个表格中,当再次需要计算已经计算过的子问题时,只是在表格中简单地查看一下结果,从而获得较高的效率。
这里写代码片
0 0
- 基础算法(四)---动态规划算法
- 算法基础---动态规划
- 算法基础--动态规划
- 四、算法_动态规划
- 算法训练-动态规划基础
- 基础算法之动态规划
- 基础算法之动态规划
- 算法分析与设计(四)动态规划(二)
- 算法课笔记系列(四)—— 动态规划
- 算法--动态规划算法
- 【算法之动态规划(四)】动态规划笔试例题详解
- 算法学习基础篇(三):动态规划(DP)
- 基础算法学习笔记(二)----动态规划
- [Coursera]算法基础_Week4_动态规划(1)_Q1
- [Coursera]算法基础_Week4_动态规划(1)_Q2
- [Coursera]算法基础_Week5_动态规划(2)_Q1
- [Coursera]算法基础_Week5_动态规划(2)_Q2
- 动态规划1-滑雪(算法基础 第4周)
- 结合上一篇进制转化知识完成各进制之间的转化
- 基础算法(四)---Dijkstra算法
- python-如何统计序列中元素的出现频率?
- POJ 2362 square(DFS范例题)
- tp框架中的内容替换机制
- 基础算法(四)---动态规划算法
- 创建通知中心
- 一些跟开源相关的文章链接
- Java中的ArrayList集合容器
- shell脚本中使用tr命令实现对字符串删除、替换和赋值
- redis档次提高(主从、哨兵)与spring结合
- 欢迎使用CSDN-markdown编辑器
- HDU 1043 eight (Astar 八数码)
- WinCE生成安装包报错