社区讨论

主定理狗都不学

学术版参与者 42已保存回复 126

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
126 条
当前快照
1 份
快照标识符
@lo83q1l7
此快照首次捕获于
2023/10/27 12:16
2 年前
此快照最后确认于
2023/10/27 12:16
2 年前
查看原帖
略标题党。

解决递归式时间复杂度题目的新方法

在初赛中,递归式时间复杂度计算通常以选择题的形式出现,所以可以不求解而是验证。
这里给出一种快速验证时间复杂度的不严谨简便方法,在主定理不适用的情况下也能使用,我和机房同学称之为 o 定理。
例 1(主定理不适用):
T(n)=4nT(n)+nT(n) = 4\sqrt{n}T(\sqrt{n}) + n
若要检验时间复杂度是不是 O(nlog2n)O(n\log^2n),只需带入 T(n)=knlog2nT(n) = kn\log^2n,得等式右边为 4n×knlog2(n12)+n=4kn×14log2n+n=klog2n+n4\sqrt{n}\times k \sqrt{n} \log^2 (n^{\frac{1}{2}}) + n = 4kn\times \frac{1}{4}\log^2n+n=k\log^2n+n,最高次项为 klog2nk\log^2n,等式左边也是 klog2nk\log^2n,所以成立。
例 2(主定理适用):
T(n)=T(n2)+nlognT(n) = T(\frac{n}{2})+n\log{n}
带入 T(n)=knlognT(n) = kn\log n,得等式右边为 k2logn2+nlogn=k2(logn+C)+nlogn=k+2n2logn+kC2\frac{k}{2}\log{\frac{n}{2}} + n\log{n} = \frac{k}{2}(\log n + C)+n\log n = \frac{k+2n}{2}\log n + \frac{kC}{2},等式左边为 knlognkn\log n,令 k=2k = 2,等式左右最高次项相同。
例 3(主定理不适用):
T(n)=3T(n2)+4T(n4)+nT(n) = 3T(\frac{n}{2}) + 4T(\frac{n}{4})+n
带入 kn2kn^2,得等式右边为 3k×n24+4k×n216+n=3kn24+kn24+n=kn2+n3k\times\frac{n^2}{4}+4k\times\frac{n^2}{16} + n = \frac{3kn^2}{4} + \frac{kn^2}{4} + n = kn^2 + n,左右最高次项相同。
初赛模拟的时候随便想的,如果错了轻喷

回复

126 条回复,欢迎继续交流。

正在加载回复...