动态规划
连人
这个作者很懒,什么都没留下…
展开
-
动态规划:0-1背包问题
对于一个可装重量为c的背包和一堆价值为v重量为w的货物,求背包能装下的最大价值。对于每件货物,只有1(装入)或0(不装入)两种状态,因此称为0-1背包问题。这个问题是有最优子结构的。对于货物是否装入的序列{y1,y2,…,yn},其子序列{y2,…,yn}也是相应子问题的最优解。设0-1背包问题的最优值为dp[ i ][ j ],意为包括前i件货物时,最大装载为j时的最佳装载。举个例子:...原创 2020-02-13 21:47:13 · 245 阅读 · 0 评论 -
动态规划:多边形游戏
大家好,我是连人。本期继续讨论动态规划的问题。已知一个n边的多边形,在n个顶点上都有一个整数,在n条边上都存在‘+’或‘*’号。游戏开始时,撤掉一条边。剩下的就会变成由n个顶点,n-1条边所组成的链条。将其中两个相邻的顶点按之间的运算符进行运算,这两个顶点和这条边被替换为运算结果,链条被削减为n-1个顶点,n-2条边。如此反复直到最后只剩下一个点。多边形游戏的目的是找到最大的最后一个...原创 2020-02-12 18:43:36 · 1970 阅读 · 2 评论 -
动态规划:凸多边形最优三角剖分
大家好,我是连人,本期接着说动态规划的问题。这是一个凸多边形。对于这个凸多边形,我们可以将弦连接,将其分为多个三角形。那么问题来了,怎么做才能使这些三角形的权值之和最小呢?在这里,权值可以是任何和弦长,边长有关的权函数,一般来说,我们使用三角形的边长作为权值。...原创 2020-02-09 21:15:38 · 2277 阅读 · 0 评论 -
动态规划:最大m子段和
大家好,我是连人。本次接上期 最大子段和及最大子矩阵和问题继续讲最大m子段和问题。在最大m子段和问题中,要求取m个互不相交子段,和为最大值。最大m子段和问题是最大子段和在子段个数上的推广,最大子段和问题是m=1的特殊情况。...原创 2020-02-04 14:06:57 · 3010 阅读 · 4 评论 -
动态规划:最大子矩阵和问题
大家好,我是连人。本期我们讨论最大子段和的第一个推广问题:最大子矩阵和问题。最大子段和问题:首先先简单介绍一下最大子段和问题:在数组a中存放着n个整数,求i,j∈[0,n](i<j)使i和j区间内所有整数相加和最大。如果a数组内全是负数,则最后结果记为0。针对这个问题,我们设立一个变量b,b的规则是:当b[j-1]>0时,b[j] = b[j-1] + a[j]否则b[j]...原创 2020-02-03 17:38:34 · 8420 阅读 · 2 评论 -
动态规划:最长公共子序列
大家好,我是连人。本期阐述最长公共子序列的问题。最长公共子序列要求在给定的两个序列中找到长度最长的且相同的序列。例如在"qwerty"和"ertyqw"中,"erty"相同且长度为4,“qw"长度为2,因此最长的子段是"erty"而不是"qw”。穷举法是最容易想到的办法,对于长度为m的序列X和长度为n的序列y(m<n),需要计算m×n+(m-1)×(n-1)+…+1×(n-m)次。实...原创 2020-01-31 18:30:13 · 298 阅读 · 0 评论 -
动态规划:矩阵连乘问题
大家好,我是连人。本期我们分享矩阵连乘问题。在矩阵乘法中,不同的加括号方式的计算顺序可能会有不同的计算次数。例如A:10×100,B:100×5,C:5×50以(AB)C计算时,需要10×100×5+10×5×50=7500以A(BC)计算时,需要100×5×50+10×100×50=75000显然第一种计算方式计算次数更少,矩阵连乘问题就是求出最佳匹配的顺序。我们将矩阵的维数记录到数...原创 2020-01-29 15:57:59 · 2332 阅读 · 2 评论