试题详情
- 简答题动态规划的基本思想是什么?
-
动态规划的实质是分治思想和解决冗余,因此,动态规划是一种将问题实例分解为更小的、相似的子问题,并存储子问题的解而避免计算重复的子问题,以解决最优化问题的算法策略。
由此可知,动态规划法与分治法和贪心法类似,它们都是将问题实例归纳为更小的、相似的子问题,并通过求解子问题产生一个全局最优解。
贪心法的当前选择可能要依赖已经作出的所有选择,但不依赖于有待于做出的选择和子问题。因此贪心法自顶向下,一步一步地作出贪心选择;
而分治法中的各个子问题是独立的(即不包含公共的子问题),因此一旦递归地求出各子问题的解后,便可自下而上地将子问题的解合并成问题的解。
不足之处:如果当前选择可能要依赖子问题的解时,则难以通过局部的贪心策略达到全局最优解;如果各子问题是不独立的,则分治法要做许多不必要的工作,重复地解公共的子问题。
解决上述问题的办法是利用动态规划。该方法主要应用于最优化问题,这类问题会有多种可能的解,每个解都有一个值,而动态规划找出其中最优(最大或最小)值的解。若存在若干个取最优值的解的话,它只取其中的一个。在求解过程中,该方法也是通过求解局部子问题的解达到全局最优解,但与分治法和贪心法不同的是,动态规划允许这些子问题不独立,(亦即各子问题可包含公共的子问题)也允许其通过自身子问题的解作出选择,该方法对每一个子问题只解一次,并将结果保存起来,避免每次碰到时都要重复计算。
因此,动态规划法所针对的问题有一个显著的特征,即它所对应的子问题树中的子问题呈现大量的重复。动态规划法的关键就在于,对于重复出现的子问题,只在第一次遇到时加以求解,并把答案保存起来,让以后再遇到时直接引用,不必重新求解。 关注下方微信公众号,在线模考后查看
热门试题
- 数据结构与算法里,简单选择排序和冒泡排序
- 如《孙子算经》中描述的鸡兔同笼问题之穷举
- n个人拎着水桶在一个水龙头前面排队打水,
- 搜索算法常用的解空间树有()、()。
- 数据结构与算法里,装填因子又称为()。
- C语言是高级语言的一种,是面向过程的。
- 使用二分搜索算法在1000个有序元素表中
- 数据结构与算法里,5的阶乘结果是()。
- 通过键盘输入一个高精度的正整数n(n的有
- 以下代码的功能是:()
- 数据结构与算法中,快速排序属于()。
- 当一个确定性算法在最坏情况下的计算复杂性
- 数据结构与算法里,下列数字不是完数的是(
- 已知序列X={x1
- 用分支限界法设计算法的步骤是什么?
- 数据结构与算法里,属于内排序的包含()。
- 请说明动态规划方法为什么需要最优子结构性
- 数据结构与算法里,稳定排序是指排序前后不
- 数据结构与算法里,设fun(n)表示斐波
- 数据结构与算法里,从大类上讲,简单选择排