假如 a[n]=32n−1−3a[n] = 32^{n - 1}-3a[n]=32n−1−3, 我们希望通过 O(logn)O(logn)O(logn) 的方法求出数列的第 iii 项 a[i]a[i]a[i],不妨令 b[n]=2n−1b[n] = 2^{n - 1}b[n]=2n−1,显然我们可以通过 O(logn)O(logn)O(logn) 的方法求出 b[n]b[n]b[n],而 a[n]=3b[n]−3a[n] = 3b[n] - 3a[n]=3b[n]−3。
推而广之,如果我们想要计算数列 a[n]=k1⋅e1n+k2⋅e2n+⋯+km⋅emna[n] = k_1\cdot e_1^{n}+k_2\cdot e^{n}_2+\cdots+k_m\cdot e^{n}_ma[n]=k1⋅e1n+k2⋅e2n+⋯+km⋅emn 的第 nnn 项, 可以看作是等比数列 基 bib_ibi =eine_i^{n}ein 的线性组合后的结果, 利用程序可以在 O(logn)O(logn)O(logn) 的时间内求出 bib_ibi,总时间复杂度为 O(mlogn)O(mlogn)O(mlogn)
程序化计算线性变换后的等比数列
最新推荐文章于 2025-01-15 23:32:01 发布