【问题标题】:Expanding Recurrence Relation and Finding Closed Form扩展递归关系并找到封闭形式
【发布时间】:2023-06-14 09:34:01
【问题描述】:

我有一个 sn-p 算法,必须找到最坏情况的递归并找到它的封闭形式。到目前为止,我遇到了最坏的情况:

T(n)= 2T(n/4) + C for n > 1.

我尝试扩展它,我目前有这个表格:

T(n) = 2kT(n/4k) + Ck

其中 k = log4(n) 或 k = (log2(n))/2。

我有 T(1) = 1000。

我不知道下一步该做什么,或者如何准确地找到它的封闭形式。我仍然看不到算法中的模式或我对 T(n) 的扩展。任何见解都会很棒,谢谢。

【问题讨论】:

  • 这是一个简单的等差数列,不是指数数列。 T + c, 3/2T + c, 2T + c, 5/2T + c, 3T + c, 7/2T + c,
  • 考虑一下 k 在你的中间形式中代表什么。它与n有什么关系?特别想一下n = 1的时间,所以可以使用T(1)
  • @JohnC 我将 n/4^k 替换为 1,这也是我得到 k = 0.5log2(n) 的地方。当我在等式中使用 T(1) 时,它变为 2000*2^(0.5log2(n)) + C*0.5log2(n)。然后我应该用递增值替换 n 以找到一个共同的模式吗?
  • 不,那应该是模式,n的一个函数,所以你快到了。但是,这不是第一项的最简单形式。毕竟对数和指数是逆运算...

标签: algorithm data-structures recurrence


【解决方案1】:

当n = 4^k时,你可以得到一个封闭的公式:

T(4^k) = 2^k x 10^3 + C + 2C + ... + 2^(k-1)C
       = 2^k x 10^3 + (2^k - 1)C

最后一个等式来自几何级数公式。

对于所有其他 n,我认为您能做的最好的事情就是申请 master theorem

您的方程属于定理的第 1 种情况(您有 a = 2,b = 4,c = 0)。 因此:

log_b(a) = 1 / 2

T(n) = O(sqrt(n))

我不确定它是否承认一个独特的封闭形式。

【讨论】:

  • 谢谢!我认为它的封闭形式是几何级数的形式(带有 sigma 和其他东西),所以我一直在寻找那种形式......但我想当 n=4 时我们是否有它的 T(n) 和封闭公式^k 它也会起作用.. 我的老师暗示我们从中得到重复的代码将无限循环......但不确定这是否符合她正在寻找的那种封闭形式。不过非常感谢!