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