gpt4 book ai didi

algorithm - 在 log n 时间内解决类似斐波那契的递归问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:30:02 25 4
gpt4 key购买 nike

求斐波那契数列的第 n 项f(n) = f(n-1) + f(n-2) 可以通过内存在 O(n) 时间内解决。

更有效的方法是使用分而治之法在 log n 时间内求解矩阵 [ [1,1] , [1,0] ] 的 n 次方。

是否有类似的方法可以遵循f(n) = f(n-1) + f(n-x) + f(n-x+1) [ x 是某个常数]。

只存储前面的 x 个元素,这可以在 O(n) 时间内解决。

有没有更好的办法解决这个递归问题。

最佳答案

正如您已经怀疑的那样,这将非常相似。使用 x * x 矩阵的 n 次方

|1 0 0 0  .... 1 1|
|1
| 1
| 1
| 1
| 1
...................
...................
| ... 1 0|

如果将这个矩阵乘以向量,这很容易理解

f(n-1), f(n-2), ... , f(n-x+1), f(n-x)

结果是

f(n), f(n-1), ... , f(n-x+1)

矩阵求幂可以在 O(log(n)) 时间内完成(当 x 被认为是常量时)。

对于斐波那契递推,也有一个封闭公式的解法,看这里http://en.wikipedia.org/wiki/Fibonacci_number , 寻找 Binet 或 Moivre 的公式。

关于algorithm - 在 log n 时间内解决类似斐波那契的递归问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7686183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com