![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法导论
文章平均质量分 82
关于算法导论的笔记
Zarathustra如是说
这个作者很懒,什么都没留下…
展开
-
算法导论15.1动态规划之钢条切割
动态规划与钢条切割1.分治算法与动态规划相同点:都是通过组合子问题的解来求解原问题不同:1.分治将问题划分为互不相交的子问题,递归地求解子问题,在将它们的解组合起来,求出原问题。2.动态规划应用于子问题重叠的情况,即不同的子文问题具有公共的子问题。(这种情况下,分治会反复求解那些共子问题,而动态规划将每个子问题的解保存在表格中,从而无需重复计算子问题)2.钢条切割问题:给定一段长度为n英寸的钢条和一个价格表pi(i=1,2,3,…,n)p_i(i=1,2,3,…,n)pi(i=1原创 2022-03-21 17:24:25 · 520 阅读 · 0 评论 -
算法导论4.1最大子数组与分治算法
4.1求最大子数组问题根据这17天的股票价格分析何时买进,何时买进、何时卖出可达收益最大化?1.暴力求解通过 对(n2)\binom{n}{2}(2n)个日期组合处理来求解,时间复杂度为O(n)2.变换问题从Price的角度(值)变为Change(值的变化量),问题转化为寻找“Change数组”的和最大非空连续子数组。3.分治方法(分解、解决、合并)分治算法中,我们递归的求解一个问题,有三个步骤a.分解:将原问题变为规模更小的子问题b .解决:子问题规模足够小时停止递归,直接求解c原创 2022-03-09 16:24:43 · 845 阅读 · 0 评论 -
算法导论4.2矩阵乘法的strassen算法
4.2矩阵乘法的strassen算法1.点积方法计算C=A*B,(A、B都为n*n的方阵)cij=∑k=1naikbkjc_{ij}=\sum_{k=1}^na_{ik}b_{kj}cij=k=1∑naikbkj计算每个cijc_{ij}cij都要n步,而C矩阵共有n*n个cijc_{ij}cij需要计算,故时间复杂度为O(n3)O(n^3)O(n3);2.分治算法计算C将A、B、C均分解为4个n/2×n/2n/2\times n/2n/2×n/2的子矩阵:A=[A11A12A2原创 2022-03-09 21:30:09 · 373 阅读 · 0 评论