![](https://img-blog.csdnimg.cn/44a090b915534d1c9d3c21a649f7a2b9.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
文章平均质量分 63
amant 柒少
且行且珍惜 且惜且随缘
展开
-
动态规划(矩阵连乘)
由于矩阵乘法满足结合律,故计算矩阵的连乘积可以有许多不同的计算次序。这种计算次序可以用加括号的方式来确定。特征:计算A[i:j]的最优次序所包含的计算矩阵子链A[i:k]和A[k+1:j]的次序也是也是最优的。对于1≤i≤j≤n不同的有序对(i,j)对应于不同的子问题。不同子问题的个数最多只 有:O(n^2)矩阵连乘计算次序问题的最优解包含着其子问题的最优解->因此具备最优子结构。在递归计算时,许多子问题被重复计算多次->重叠子问题。如何确定运算顺序,可以使计算量达到最小化。原创 2022-12-01 23:04:45 · 795 阅读 · 0 评论 -
贪心算法.
1)贪婪算法(贪心算法)是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法2)贪婪算法所得到的结果不一定是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果。原创 2022-11-07 17:05:14 · 66 阅读 · 0 评论 -
KMP算法
KMP是一个解决模式串在文本串是否出现过,如果出现过,最早位置的算法。KMP方法算法就利用之前判断过信息,通过一个next数组,保存模式串中前后最长公共子序列的长度,每次回溯时,通过next数组找到,前面匹配过的位置省去了大量的计算时间。原创 2022-11-06 15:10:56 · 92 阅读 · 0 评论 -
动态规划(背包问题)
背包问题主要是指一个给定容量的背包、若干具有一定价值和重量的物品,如何选择物品放入背包使物品的价值最大。其中又分01背包和完全背包(完全背包指的是:每种物品都有无限件可用)这里的问题属于01背包,即每个物品最多放一个。而无限背包可以转化为01背包。原创 2022-11-05 20:17:02 · 201 阅读 · 0 评论 -
归并排序算法
输入数组 [ 2, 5, 3 , 10, -3, 1 , 6 , 4];首先把数组依次折半,分成小的子数组,直到每一个子数组的长度都为1;先将序列一次次分成子序列,直到子序列长度为1;再将已有序的子序列合并,得到完全有序的序列。可以看出归并排序运用了 分而治之的思想。然后合并子数组,在合并的过程中进行排序;原创 2022-11-04 22:08:31 · 58 阅读 · 0 评论 -
Strassen矩阵乘法
两个大小为 2 * 2 的矩阵相乘,一般需要进行 8 次乘法。而Strassen矩阵乘法可以减少一次乘法,只需要 7 次,看似很少,但当数据量很大时,效率就会有显著提升。不过使用 Strassen矩阵乘法需要满足矩阵边长为 2 的幂次方。因为该算法会用到分治,如果分治后矩阵两边边长不等,结果会出错。原创 2022-11-02 21:06:55 · 2957 阅读 · 0 评论 -
karatsuba算法(大整数乘法)
1、分解。将大整数X、Y(分别为n,m位)分别为A、B、C、D。值得注意的是如果位数n或m为奇数,则A为前n/2+1或m/2+1位,n/2或m/2向下取整;2、计算。分别计算AC、BD,并且利用AC和BD计算AD+BC;3、求解。原创 2022-10-26 20:56:52 · 3741 阅读 · 0 评论 -
欧几里得算法
我们观察到:欧几里德算法停止的状态是: a’= gcd , b’ = 0 ,(a’,b’是递归最后一层时参数的值)那么,这是否能给我们求解 x y 提供一种思路呢?(无所谓是多少,反正任何数乘以 0 都等于 0 但是a 的系数一定要是 1),这时,我们就会有: a’*1 + b’*0 = gcd。扩展欧几里得算法就是在求a,b的最大公约数d=gcd(a,b)的同时,求出贝祖等式ax+by=m的一个解(x0,y0)因为,这时候,只要 a = gcd 的系数是 1 ,那么只要 b 的系数是 0 或者其他值。原创 2022-10-24 17:24:04 · 1218 阅读 · 0 评论