开始,我先完整的分析一个动态规划问题,叫做钢条切割问题,这个问题从递归开始导入,然后引入带备忘录的自顶向下方法,最后得到动态规划的解法。所有的问题都可以遵循这样的解决方法。然后开始分析如何用递归求解动态规划问题,最后分析如何使用动态规划的解法。 钢条切割问题: 问题描述,给定一个数组,表示的是出售长 ...
分类:
其他好文 时间:
2018-07-14 21:34:42
阅读次数:
184
概述 动态规划我们在工作中会经常用到,有时候你会有这个意识,而且我相信你在项目中肯定使用过,只是你不了解这种方式是“动态规划”而已。它最大的特点就是“空间换时间“。 如果你想大致了解下,你可以直接略过细节,直接看“使用动态规划方法求解最优钢条切割问题”这一部分。细节部分,只是使用案例和数学公式教大家 ...
分类:
其他好文 时间:
2018-05-22 22:05:14
阅读次数:
197
算法导论的第一个动态规划问题--钢条切割 我们知道钢条的长度和价格为: 书上的两种方法已经很清楚,这里主要说一下课后练习里面15-3钢条成本加上切割成本,即要切割的次数最少。15-4返回切割方案 ...
分类:
编程语言 时间:
2018-05-06 22:55:15
阅读次数:
232
前言:动态规划的概念 动态规划(dynamic programming)是通过组合子问题的解而解决整个问题的。分治算法是指将问题划分为一些独立的子问题,递归的求解各个问题,然后合并子问题的解而得到原问题的解。例如归并排序,快速排序都是采用分治算法思想。本书在第二章介绍归并排序时,详细介绍了分治算法的 ...
分类:
其他好文 时间:
2018-02-23 15:53:49
阅读次数:
211
今天看了算法导论里面的动态规划(DP),有个有意思的问题:钢条切割来获取最大的收益。 书中讲到了几种求解方法,包括递归求解法、备忘录DP解法、自底向上的解法以及对解的重构。书中给出不同解法的伪码,刚好需要练习c++,就有c++来实现DP求解钢条切割问题。 【递归求解】 【自底向上DP重构解】 自底向 ...
分类:
编程语言 时间:
2017-06-12 00:38:17
阅读次数:
273
动态规划算法概述 动态规划(dynamic programming)1是一种与分治方法很像的方法,都是通过组合子问题的解来求解原问题。不同之处在于,动态规划用于子问题重叠的情况,比如我们学过的斐波那契数列。在斐波那契数列的求解问题中,我们经常要对一个公共子问题进行多次求解,而动态规划算法,则对每个子 ...
分类:
编程语言 时间:
2017-04-02 00:46:48
阅读次数:
528
1.问题描述 对一个长为n的钢条,给出不同长度钢条对应的单价,求出如何切割能使得该钢条的收益最大化。 2.问题解析 (1)暴力法 找出所有切割方案(共2^(n-1)种),计算出每种切割方案的收益,求最大值。 时间复杂度:O(2^(n-1)) (2)动态规划 这一问题是《算法导论》中,讲解动态规划的例 ...
分类:
其他好文 时间:
2017-03-12 19:38:34
阅读次数:
128
解释:动态规划(dynamic programming)与分治方法相似,都是通过组合子问题的解来求解原问题。 优点:动态规划比分治方法高明之处在于对每个子子问题只求解一次,将其保存,无需重新计算。 动态规划设计步骤: 钢条切割问题 描述:给定一段长度为n英寸的钢条和一个价格表Pi(i = 1,2,. ...
分类:
编程语言 时间:
2017-02-06 00:06:39
阅读次数:
212
钢条切割问题求解方法及相关思考 题目来源于《算法导论》第15章第一节。问题如下: 给定一个长度为n英寸的钢条和一个价格表pi(i=1,2,3,...n),求能够使销售收益rn最大的切割方案。 问题1:一共有多少种切割方式? 思路一:对于一个长度为n英寸的钢条,其中一共有n-1个节点可供切割,在每一个 ...
分类:
其他好文 时间:
2016-09-28 19:30:41
阅读次数:
185
线性规划是一类问题。目标函数为特定变量的线性函数,约束是这些变量的线性不等式(standard form)或等式(slack form),目的是求目标函数的最大值或最小值。这类动态规划是平时比较常见的一类动态规划问题。
一、钢条切割问题:
假设公司出售一段长度为i英寸的钢条的价格为Pi(i = 1, 2, …单位:美元),下面给出了价格表样例:
长度i...
分类:
其他好文 时间:
2016-07-10 19:12:41
阅读次数:
481