当前位置: 首页 > 知识库问答 >
问题:

求解递推方程T(n)=3 m*T(n-m)

仲孙献
2023-03-14

我明天有一个计算机科学期中考试,我需要帮助确定一个特定递归函数的复杂性,如下所示,这比我已经研究过的东西要复杂得多:它有两个变量

T(n)=3 mT(n-m)

在m为常数的简单情况下,可以通过编写解包关系轻松获得公式;然而,在这种情况下,拆包并不会使生活变得更容易,如下所示(假设t(0)=c):

T(n)=3 mT(n-m)

T(n-1)=3 mT(n-m-1)

T(n-2)=3 mT(n-m-2)

...

显然,根据这些不等式,没有直接的消去法。所以,我想知道我是否应该对这种情况使用另一种技术。

共有1个答案

田丰
2023-03-14

不要担心m,这只是一个常数。然而,您错误地展开了递归。展开的每个步骤涉及三个操作:

  1. 取T的值和自变量值,其小于m

所以,它看起来像这样:

T(n) = m * T(n - m) + 3 =                                        (Step 1)
     = m * (m * T(n - 2*m) + 3) + 3 =                            (Step 2)
     = m * (m * (m * T(n - 3*m) + 3) + 3) + 3 = ...              (Step 3)

等等展开T(n)到步骤k将由以下公式得出:

T(n) = m^k * T(n - k*m) + 3 * (1 + m + m^2 + m^3 + ... + m^(k-1))

现在设置n-k*m=0,使用初始条件T(0),得到:

k = n / m

现在你需要使用一个几何级数和的公式-最后你会得到一个T(n)的闭合公式(我把最后一步留给你)。

 类似资料:
  • 我需要以下递归关系的帮助。 T(1)=1 T(n)=T(n-1)*n 这就是我尝试过的。我想我可能把替换部分搞砸了,但请再看一次,让我知道我得到的时间复杂度是否正确。 现在我不确定我所做的是否完全正确,但如果有任何帮助,我将不胜感激。

  • 问题内容: 我想在表中添加可变数量的记录(天) 我已经看到了一个很好的解决方案: 但是可悲的是,这在UDF中不起作用(因为#temp和SET ROWCOUNT)。知道如何实现吗? 目前,我正在使用WHILE和表变量来完成此操作,但是就性能而言,这并不是一个好的解决方案。 问题答案: 这是我正在使用的方法,并且对于我的目的和使用SQL 2000来说效果最佳。因为就我而言,它位于UDF中,所以我不能使

  • 问题内容: 在一定数量的行之后,如何重新启动我的Row_Number。 例如 我该怎么转 进入 请注意,实际上没有办法根据ID进行分区。 我尝试使用递归CTE并非常接近。 这: 返回值: 与第一个ID距离很近。 任何帮助将是巨大的。 谢谢, 将要 问题答案: 使用模运算符: 如果不是列,则还可以使用以下功能:

  • 问题内容: 是否可以捕获这些快捷方式? + + + 我试过了,但是没有用: 当我按下它时,它会显示在控制台中,但是如果按下+,它什么都不会显示,并打开一个新选项卡。 我想捕获这些快捷方式并阻止任何浏览器操作。 问题答案: 样例代码: Firefox (已测试6.0.1) 在Firefox中,两个事件侦听器均有效。如果按或键组合,则将在控制台上同时显示两条消息,并且浏览器不会打开选项卡,也不会要求保

  • 问题内容: 我在数据库上有一些性能测试结果,我要做的是将每1000条记录 分组 (以前按日期升序排列),然后将结果与 AVG 进行汇总。 我实际上正在寻找标准的SQL解决方案,但是任何T-SQL特定的结果也值得赞赏。 查询如下所示: 问题答案: 这样的事情应该会让您入门。如果您可以提供实际的架构,我可以进行适当的更新。

  • 本文向大家介绍Java泛型 T与T的使用方法详解,包括了Java泛型 T与T的使用方法详解的使用技巧和注意事项,需要的朋友参考一下 泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。 在集合框架(Collec