type
Post
status
Published
date
Feb 27, 2026
slug
summary
tags
算法笔记
category
笔记
icon
password
1.两个十进制n位数的积的位数范围
答案:积最少有 2n−1位,最多有 2n位。
解题思路:
1.十进制n位数的最小值是 ,最大值是 。
- 最少位数与最多位数:
- 两个数都取最小值:。其中 是2n-1位数。(通过 有1位, 有3位可知, 包含n+1位数)。
- 两个数都取最大值:。其中 ,故最多有2n位数(A介于2n位数和2n+1位数之间,且是拥有2n+1位数的十进制数的最小值,所以A最多有2n位数)。
2.用分治算法计算 2101×1130
答案:
案例:计算两个 4 位数的乘积n=4

3.a.证明等式
解题思路:利用对数换底公式和指数法则进行变形。设等式左边为 ,右边为 。对两边取自然对数(或以任意底的对数),将不同底的对数转化为同一底,再比较即可。

3.b.为什么比 更适合作为M(n)的闭合公式?
解题思路:由a知道他们二者是数学等价的,但是作为算法复杂度的闭合公式,两者表达形式的直观性和标准习惯不同。
原因分析:

4.a 为什么在大整数乘法算法的乘法次数 M(n)中,不把乘以 的乘法包括进去?
答案:因为在计算机中,乘以 实际上是通过左移十进制位(或二进制位)来实现的,这只需要 O(n)的加法/移位操作,而不需要真正的乘法运算。在分析大整数乘法算法(如 Karatsuba 算法)时,M(n)通常只统计非平凡的乘法(即两个非零数字块的相乘),而将乘以 10n的位移操作视为加法开销的一部分,归入递归式中的线性项 O(n)。
4.b 建立 M(n)递推关系时,另一个“微妙但不影响最终答案”的假设是什么?
答案:这个假设是:将 n 位数拆分为两个 位数时,我们默认这两个部分的位数严格相等(即各占 n/2位)。但实际上,当 n 为奇数时,拆分后的两部分位数可能分别为 和,并不严格相等。
5.在用笔算算法计算两个n位数乘法时,需要做多少次一位数的加法?可以忽略进位导致的加法
答案:
- 精确公式:需要 次一位数加法(忽略进位操作本身)。
- 渐进复杂度:加法次数为 O()。
分析:

6.验证Strassen算法在计算 2×2矩阵乘法时所用到的公式
代入验证可知二者相等,公式正确。具体展开过程略。
7.应用Strassen算法计算两个 4×4矩阵的乘积
给定矩阵:
x
解析:根据提示,当 n=2时停止递归,即使用蛮力法(传统矩阵乘法)计算 2×2子矩阵的乘积。
将 A和 B划分为 2×2分块矩阵:
其中:

- 计算矩阵加减法

- 计算

- 计算结果矩阵 C的四个子块:

- 合并子块得到最终结果:

- 因此,矩阵乘积 A×B为:

8. 对于Strassen算法,其加法次数(包括减法)的递推关系式求解

- Author:RHZ
- URL:http://www.rhzhz.cn/article/3149daca-95bb-803c-918f-de4fd6657399
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!





