【问题标题】:Can you help me to solve recurrence relation T(1)=5, and for all n>=2, T(n)=2T(n-1)+(3*n+1)你能帮我解决递归关系 T(1)=5,对于所有 n>=2,T(n)=2T(n-1)+(3*n+1)
【发布时间】:2021-02-07 12:20:40
【问题描述】:

T(1)=5,

对于所有n>=2: T(n)=2T(n-1)+(3*n+1).

我试图解决这个问题,但是我遇到了 3*n+1 的问题。当我把n-1,n-2,...,我不知道如何确定这个问题的公式。

【问题讨论】:

  • 我可能错了,但看起来像((2^n)*n)
  • 当我放 n-2 时,我不会得到 3*n-5
  • 我投票结束这个问题,因为它是一个数学问题,而不是一个计算机编程问题。
  • 这类问题可以通过计算机代数系统来解决,例如wolframalpha.com/input/?i=T%28n%29%3D2T%28n-1%29%2B%283*n%2B1%29会给你答案。给出答案很容易验证它就是答案。

标签: time-complexity recurrence


【解决方案1】:

因为术语只有(3*n+1) 而不是T(3*n+1),所以这是可以解决的。第一印象:您有2T(n-1) 作为子项,所以解决方案类似于2^n

通过简单的 Excel 数据分析,我找到了解决方案 T(n)=-7-3n+15 * 2^(n-1),我将尝试手动解决它,如果找到正确的路径,我会更新我的答案。

编辑:这比预期的要困难......

解释:

  • 第一步是获取n 的求和公式。您可以从前几个T(n) 中得出这种模式。
  • 一旦你得到了模式,试着去掉总和。
  • 要求解总和,请尝试以与sum_(i=1)^n (1) = nsum_(i=0)^n (2^i) = 2^(n+1)-1 类似的格式获取它们
  • 为此,您可以操作索引,例如sum_(i=2)^n (n-i) = sum_(i=0)^(n-2) (i),或在总和中包含/排除元素。
  • 最棘手的部分是解决sum_(i=0)^n ((n-i)*(2^i))。这里的想法是将乘法(取决于i)转换为和(也取决于i)。
  • 请注意不断变化的索引编号。 sum_(i=0)^n (2^i)sum_(i=1)^n (2^i) 不一样
  • 该路径不是最有效的路径,请随意简化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 2021-08-30
    相关资源
    最近更新 更多