递归关系[关闭]

2023-11-22

如何以最佳复杂度计算非常大的 n (例如 10^14 )的 tribonacci 数。 Tribonacci 数定义为F(n)=F(n-1)+F(n-2)+F(n-3) with F0=1, F1=2, F2=4.

或复发定义为F(n)=aF(n-1)+bF(n-2)+cF(n-3) with F0=1, F1=2, F2=4.

我想计算 log(n) 中的第 n 项,就像第 n 个斐波那契数一样。

如何生成基础矩阵以使用矩阵求幂来计算第 n 个 学期?

以前我尝试使用 DP 来实现它,但由于我们无法采用如此大尺寸的数组,因此它无法正常工作。类似地,由于 10^14 的大量数量的堆栈溢出,递归在这里不起作用。


The best asymptotic complexity for tribonacci numbers will be using a matrix exponentiation method like the one for Fibonacci numbers. Specifically, written correctly, this is O(log n) integer operations, rather than O(n) (like the dynamic programming method) or O(3n) (like the naive solution).

兴趣矩阵是

    [1, 1, 1]
M = [1, 0, 0]
    [0, 1, 0]

and the nth tribonacci number is in the upper left corner of Mn. The matrix exponentiation must be computed by squaring to achieve log(n) complexity.

(for F(n+3) = a F(n+2) + b F(n+1) + c F(n),矩阵为:

    [a, b, c]
M = [1, 0, 0]
    [0, 1, 0]

and the result is {Fn+2,Fn+1,Fn} = Mn {F2,F1,F0}, also see here.)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

递归关系[关闭] 的相关文章

  • 如何使用递归函数返回 ArrayList

    我是java新手 我正在努力克服 我必须做一些作业 我从中解决了很多问题 但有时我不知道该怎么做 我的问题 我必须为二叉树构建一些函数 例如添加节点 计数节点 删除节点等 其中大多数我都能找到自己的算法 现在我正在努力解决递归方法 我在其中
  • 棒材切割 - 动态规划

    问题陈述 棒材切割问题如下 给定一根长度为n英寸和价格表Pi for i 1 2 3 n 确定最大收益Rn可以通过切割棒并出售碎片来获得 请注意 如果价格Pn对于一根长度的杆n足够大 最佳解决方案可能根本不需要切割 考虑以下情况 n 4 图
  • 按字母/字典顺序排列的两个字符串的平均值

    假设您采用字符串 a 和 z 并按字母顺序列出它们之间的所有字符串 a b c x y z 取这个列表的中点 你就会找到 m 所以这有点像取这两个字符串的平均值 您可以将其扩展到具有多个字符的字符串 例如 aa 和 zz 之间的中点将位于列
  • Tarjan 算法的非递归版本

    我有以下 Tarjan 算法的 递归 实现来查找图中的强连接组件 并且工作正常 public class StronglyConnectedComponents public static List
  • 如何在 Android 上动态地将元素添加到 ListView 中?

    任何人都可以解释或建议动态创建一个教程ListView https developer android com reference android widget ListView在安卓中 这是我的要求 我应该能够通过按下按钮动态添加新元素
  • 如果我在计算强连通分量时不使用 G 转置会怎样?

    我正在阅读算法导论 在 22 5 强连通分量中 算法 STRONGLY CONNECTED COMPONENT G 定义为 调用 DFS G 计算每个顶点 u 的完成时间 u f 计算 G 转置 调用 DFS G transpose 但在
  • 拓扑排序卡恩算法 BFS 或 DFS

    拓扑排序的方法是BFS还是DFS 哪个正确 我认为BFS是对的 但有些网站说DFS 有些网站说BFS 我很困惑 卡恩算法与 BFS 或 DFS 相同吗 或者BFS 或DFS 只是卡恩算法的工具 Kahn算法和DFS在实践中都用于拓扑排序 选
  • 将曲线图案与图像边缘匹配

    我有一个要搜索沿其边缘的曲线的目标图像和一个包含该曲线的模板图像 我需要实现的是在目标图像中找到模板图像中的曲线的最佳匹配 并根据分数来判断是否匹配 这还包括曲线的旋转和大小调整 目标图像可以是 Canny Edge 检测器的输出 如果这能
  • 位图中连续区域的计数是否可以比 O(r * c) 改进?

    您将获得一张由卫星拍摄的表面图像 该图像是一个位图 其中水用 标记 土地标记为 相邻组 形成一个岛屿 二 如果它们水平 垂直或对角相邻 则它们是相邻的 您的任务是打印位图中岛屿的数量 输入示例 输出 5 这是我的实现 需要O r c 空间和
  • com.jcraft.jsch.JSchException:算法协商失败

    我正在尝试从客户端计算机连接 sftp 服务器 但是 com jcraft jsch JSchException 算法协商失败 我收到这种错误 com jcraft jsch JSchException Algorithm negotiat
  • Fortran 77 中的局部变量是静态的还是堆栈动态的?

    对于我的编程语言 第一类硬件问题询问 FORTRAN 中的局部变量是静态的还是堆栈动态的 初始化为默认值的局部变量是静态的还是堆栈动态的 向我展示一些带有解释的代码以支持您的答案 提示 检查这一点的最简单方法是让您的程序测试子程序的历史敏感
  • 如何编写一个简单的版本控制系统?

    我想做一个简单的版本控制系统 但我不知道如何构建我的数据和代码 这是一个简短的例子 用户登录 User has two options when uploading a file 提交新文件 提交文件的新版本 用户应该能够看到树 版本不同
  • 准备与大数据相关的设计和架构问题的最佳方法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 递归最长递增子序列的记忆

    我为最长递增子序列提出了简单的以下递归解决方案 但是 您可以帮助将记忆包含到这个递归解决方案中吗 public int findLIS int a int maxSoFar int item int count if item a leng
  • 转置矩阵存储在一维数组中,无需使用额外的内存[重复]

    这个问题在这里已经有答案了 可能的重复 矩阵的就地转置 https stackoverflow com questions 9227747 in place transposition of a matrix 最近参加了技术笔试 通过以下问
  • 高效找到圆和网格的交点

    找到由圆心和半径定义的圆与任意网格的交点的好方法是什么 An illustration of the points I am trying to find 到目前为止我想到的可能的解决方案 找到位于中心 半径之间的所有线 对于每条线计算交点
  • 将 diff 转换为带有删除线的 Markdown?

    我想转换输出diff 在 Markdown 文件上 降价与
  • Firebase 中的递归错误太多

    我的全局作用域中有一个函数 用于侦听 FB 引用上的值 function updateCredits userID var userRef database ref users userID userRef on value functio
  • 使用 Javascript 中的用户输入动态更改表格单元格

    这就是我想要做的 我有一个表格 由 Javascript 创建 每个单元格中都有用户输入 该表只是为了确认用户输入的数据是否正确 如果用户看到错误 他们单击需要编辑的单元格 它会在表格单元格中放置一个文本框 其中包含当前单元格数据 然后 如
  • 如何有效地从连续字符串中提取文字单词? [复制]

    这个问题在这里已经有答案了 可能的重复 如何将没有空格的文本拆分为单词列表 https stackoverflow com questions 8870261 how to split text without spaces into li

随机推荐

  • 为什么 C 和 C++ 中 NULL 指针的定义不同?

    In C NULL定义为 void 0而在 C 中则是0 为什么会这样呢 在C中我可以理解如果NULL不是类型转换为 void 那么编译器可能 可能不会生成警告 除了这个 还有什么原因吗 早在 C 03 中 ISO 规范 4 10 1 将空
  • 如何更改通过 WindowManager 添加的窗口的 z 顺序?

    是否可以指定每个窗口的 z 顺序 在下图中 每个 editText 都位于通过 WindowManager 添加的自己的窗口中 正如你所看到的 我有一个 z 顺序问题 就像你在图片上看到的那样最后添加的窗口接缝采用更高的 z 顺序 因此 我
  • 在 Linux 上安装 PyQt5 5.14.1

    pip3 install PyQt5 Collecting PyQt5 Using cached https files pythonhosted org packages 3a fb eb51731f2dc7c22d8e1a63ba88f
  • 设置捆绑值返回 nil

    我向我的应用程序添加了一个 设置 包 在 Xcode 中 它出现在我的项目树视图的根目录中 The Root plist文件看起来像这样
  • 可以对 Julia 代码进行逐行分析吗?

    我有一些长达数百行的 Julia 函数 我想对其进行分析 以便我可以优化代码 我知道基准测试工具包允许使用以下命令测量函数的总体执行时间和内存消耗 btime or benchmark 但这些函数没有告诉我函数内部的瓶颈在哪里 因此 我的第
  • findall/3 在其结果列表中创建新的、不相关的变量

    permutation A B C Z Z A B C Z A C B Z B A C Z B C A Z C A B Z C B A false 说得通 我可以研究以下的排列 A B C 并且该排列包含与中相同的元素 A B C 所以我对
  • 如何禁止两个相互冲突的选项

    有没有办法向 Python 的 ArgumentParser 指定两个可选标志发生冲突 arg parser add argument c clean action store true arg parser add argument d
  • CallExpression 和 MemberExpression 之间的区别

    有什么不同 我看了ECMAScript规范 但不明白 真正的代码示例会有很大帮助 如果你能解释这里的每一行那就太好了 MemberExpression PrimaryExpression FunctionExpression MemberE
  • 检测有向图中循环的最佳算法[关闭]

    Closed 这个问题是基于意见的 目前不接受答案 是否有一种有效的算法来检测有向图中的循环 我有一个有向图 表示需要执行的作业的时间表 作业是节点 依赖项是边 我需要检测该图中导致循环依赖的循环错误情况 Tarjan 的强连通分量算法 h
  • Pandas Dataframe / Numpy 数组“轴”定义中的歧义

    我对 python 轴的定义方式以及它们是否引用 DataFrame 的行或列感到非常困惑 考虑下面的代码 gt gt gt df pd DataFrame 1 1 1 1 2 2 2 2 3 3 3 3 columns col1 col2
  • JavaScript 中的 Console.log 输出

    Why do console log 00 and console log 01 在浏览器控制台中打印 0 和 1 而不是 00 和 01 console log 00 prints 0 console log 01 prints 1 co
  • Flex-box:将最后一行与网格对齐

    我有一个简单的弹性盒布局 其中包含如下容器 grid display flex flex flow row wrap justify content space between 现在我希望最后一行中的项目与另一行对齐 justify con
  • 如何将相同类型的多个参数传递给 jQuery Get

    我正在尝试使用 jQuery get 从网站获取一些数据 我需要设置2个相同类型的参数 q Some Text q Some other text jQuery 似乎用第二个实例覆盖 q 的第一个实例 并且仅发送 1 有什么办法解决这个问题
  • 适用于 iOS 的 WebDav 客户端库 [已关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 是否有适用于 iOS 的 WebDav 客户端实现 看一下WTclient
  • 当只需要一个字节时,为什么 Rust 使用两个字节来表示这个枚举?

    它似乎足够聪明 只为 A 使用一个字节 但不够聪明 为 B 使用一个字节 即使只有 8 8 64 种可能性 有什么方法可以让 Rust 解决这个问题 还是我必须手动实现更紧凑的布局 游乐场链接 allow dead code enum A
  • Python 3:gzip.open() 和模式

    https docs python org 3 library gzip html 我正在考虑使用gzip open 我有点困惑mode争论 模式参数可以是 r rb a ab w wb x 中的任何一个 或 xb 表示二进制模式 或 rt
  • 检测 32 位或 64 位 Windows

    我想检测当前的Windows操作系统是32位还是64位 如何用C 实现呢 我不需要处理器类型 我想要操作系统的位类型 这是因为您可以在 64 位处理器上安装 32 位操作系统 要调用的函数是IsWow64Process or IsWow64
  • 无会话的 Passport js 身份验证

    我是expressjs和passportjs的初学者 我使用护照和 GoogleStrategy 通过谷歌进行身份验证 使用下面的代码我有req user id 123456 in 用户 你好路由处理程序 但我想得到一些类似的没有会话支持的
  • 如何使用 iCloud 访问 Xcode 项目

    我最近购买了一台 MacBook Pro 我将用它来开发 iPhone 应用程序 我希望能够在 Macbook 和 iMac 之间传输 Xcode 项目 就像使用 iCloud 传输 Word 文档一样 有没有一种安全的方法可以做到这一点
  • 递归关系[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 如何以最佳复杂度计算非常大的 n 例如 10 14 的 tribonacci 数 Tri