【问题标题】:Fibonacci Series generation using Matrices [closed]使用矩阵生成斐波那契数列 [关闭]
【发布时间】:2013-07-22 06:12:30
【问题描述】:

有一个关于Fibonacci Series 的问题发布,我对此非常熟悉。但是有多个答案和相关的问题。当我感兴趣地挖掘它时,有一个解决方案是linked to here

这个算法通过 O(log(n)) 解决了这个问题,相当令人印象深刻。但我无法理解逻辑和所谓的 Matrix exponentiation [查看 wiki,但无法与之相关]。

任何人都可以通过更多细节和更好的解释准确地解释他们是如何实现的[如果你可以用代码解释,更喜欢用 Java,很有帮助]。

谢谢:)

【问题讨论】:

  • 我建议在投反对票之前发表评论,为什么?我想了解该算法,寻求帮助以弄清楚到底做了什么。
  • 没有投反对票,但这可能是因为使用的逻辑更多地是在数学方面。该页面上使用的代码只是数学逻辑的实现。
  • @Blastfurnace,看到那些链接,有点难以理解那里的逻辑是如何实现的。也许我可以这样问,如何在 O(log n) 时间内求解斐波那契数列?使用 Matrix 或其他东西。

标签: java algorithm fibonacci


【解决方案1】:

你需要了解的是算法,而不是实现。

您需要了解的第一件事是,此算法不会为您提供所有斐波那契数,只会给出具有 n 即 2 次幂的那些数。

第二件事是,恒定大小矩阵的乘法当然需要恒定 (O(1)) 时间。

现在的诀窍是正确注意第 n 个斐波那契数可以通过您链接中描述的矩阵的 n 次乘法形成,我将其称为 M

您现在可以通过将矩阵运算从 M*(M*(M*M)) 到 (M*M)*(M*M) 的“重新排序”来获得对数复杂度。对于每个矩阵平方,您将转到 M^2n 而不是 M^n+1。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-18
    • 2015-04-25
    • 2017-11-13
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 2014-11-09
    • 1970-01-01
    相关资源
    最近更新 更多