算法设计与分析
文章平均质量分 78
笑遥小哥哥
山坡若陡缓步迈
展开
-
动态规划之最长公共子序列
问题描述若给定序列X={x1,x2,…,xm},则另一序列Z={z1,z2,…,zk},是X的子序列是指存在一个严格递增下标序列{i1,i2,…,ik}使得对于所有j=1,2,…,k有:zj=xij。例如,序列Z={B,C,D,B}是序列X={A,B,C,B,D,A,B}的子序列,相应的递增下标序列为{2,3,5,7}。给定2个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序...原创 2020-03-28 23:22:28 · 1553 阅读 · 0 评论 -
动态规划之0-1背包问题
问题描述给定一个物品集合s={1,2,3,…,n},物品i的重量是wi,其价值是vi,背包的容量为W,即最大载重量不超过W。在限定的总重量W内,我们如何选择物品,才能使物品的总价值最大。注:如果物品不能分割,即物品i要么整个选取,要么不选取;如果不能将物品i装入背包多次,也不能只装入部分物品i,则问题称为0-1背包问题。如果物品可以拆分,则问题称为背包问题,适合使用贪心算法。问题建模递...原创 2020-03-28 11:18:34 · 283 阅读 · 0 评论 -
最大子段和问题动态规划解法和分治策略解法深度分析
问题描述给定由n个整数(包括负整数)组成的序列a1,a2,…,an,求该序列子段和的最大值。(当所有整数均为负值时定义其最大子段和为0。)动态规划解法定义辅助子段数组bj:bi是1到j位置的最大子段和(必须包括bj)由bj的定义易知,当bj-1>0时bj=bj-1+aj,否则bj=aj。则计算bj的动态规划递归式:bj=max{bj-1+aj,aj},1<=j<=...原创 2020-03-26 22:31:18 · 719 阅读 · 0 评论 -
动态规划基本概念原理分析
一、动态规划的基本思想动态规划算法通常用于求解具有某种最优性质的问题在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解基本思想是将待求解问题划分成若干个子问题,先求解子问题,然后从子问题的解得到原问题的解。适合于动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解决这类问题,则分解得到的子问题数目太多,有些子问题被重复计算很多...原创 2020-03-25 22:43:18 · 1113 阅读 · 0 评论 -
动态规划之矩阵连乘积问题
矩阵连乘积问题m X n矩阵A与n X p矩阵B相乘需耗费的时间。我们把mnp作为两个矩阵相乘所需时间的测量值。现在假设三个矩阵A、B和C的乘积,有两种方式计算此乘积,那么有(AB)C和A(BC)两种方式计算此乘积。尽管两种不同的计算顺序所得的结果是相同的,但时间消耗会有很大差距。矩阵连乘积问题定义:给定n个矩阵{A1,A2,A3,……,An},其中Ai与Ai+1是可乘的,i=1,2,...原创 2020-03-25 22:13:15 · 735 阅读 · 0 评论