7、计算复杂度相关知识解析

计算复杂度相关知识解析

1. 归纳证明

我们可以利用归纳法来证明公式的等式关系。以 $\sum_{i = 1}^{n}i$ 为例,证明过程如下:
$\sum_{i = 1}^{n}i = (\sum_{i = 1}^{n - 1}i) + n = \frac{n(n - 1)}{2} + n = \frac{n(n - 1)}{2} + \frac{2n}{2} = \frac{n^2 - n + 2n}{2} = \frac{n^2 + n}{2} = \frac{n(n + 1)}{2}$
从公式的左边到右边,我们可以看到要证明的两者确实相等,这样就完成了归纳证明。归纳证明不需要我们遍历所有步骤,只要创建了这样的元证明,就证明了等式对所有的 $n$ 都成立,这就是归纳法的强大之处。

2. 提高 PyList 追加操作的效率

最初我们想找出向 PyList 追加 $n$ 个元素所需的时间。使用之前的追加方法,其时间复杂度为 $O(n^2)$。这是因为第一次调用追加操作时要复制一个元素,第二次要复制两个元素,第三次要复制三个元素,依此类推。根据前面的证明,$1 + 2 + 3 + \cdots + n = \frac{n(n + 1)}{2}$,该公式中最高次项是 $n^2$ 项,所以之前的追加方法具有 $O(n^2)$ 的复杂度,这不是一个好的结果。

例如,在一个复杂程序中,如果有 100,000 个图形命令,再添加一个命令大约需要 27 秒,这是不可接受的。在大 O 表示法中,我们说这个追加方法是 $O(n^2)$ 复杂度的。当 $n$ 很大时,具有 $O(n^2)$ 复杂度的程序或函数性能不佳,通常应避免编写具有此类计算复杂度的代

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值