算法和递归帮助?

时间:2011-11-04 16:51:33

标签: algorithm

我有以下递归:T(n)= 2 * T(n / 4)+ T(n / 2)+ n我需要知道确切的等式,我知道Master定理不会帮助我,并且迭代似乎是错误的......

请告诉我如何进行此类递归。 提前谢谢。

嘿所有,谢谢你的回复我需要复杂性。我需要了解如何解决这些问题。

3 个答案:

答案 0 :(得分:1)

首先,您需要为此定义一些限制,否则它将永远不会结束,您将坚持使用OverflowException。 像n这样的东西是整数,最小值是0。

请您以这种方式提出有关您问题的更多详情?

答案 1 :(得分:1)

这无助于你弄清楚如何做到这一点,但显然Wolfram Alpha可以得到正确的答案。也许您可以查找文档或让Mathematica向您展示解决此问题所需的步骤:

Wolfram Alpha: T(n)=2*T(n/4)+T(n/2)+n

要将粗略的上限和下限放在搜索空间上,您可能已经识别出您的T(n)在3T(n / 2)+ n以及2以下(n / 4)+ n的上限。所以O(n ^(3/2))和W(n),由主定理。

一般来说,解决复发关系难题。

答案 2 :(得分:1)

T(n) = O(nlogn)W(nlogn)

要证明,根据O的定义,我们需要找到常量n0c,以便: 对于每个n>=n0T(n)<=cnlogn

我们将使用n上的归纳来证明所有T(n)<=cnlogn的{​​{1}}

让我们暂时跳过基本情况......(我们稍后会回来)

假设:我们假设每n>=n0k<n

论文:我们想证明T(k)<=cklogk

但是,T(n)<=cnlogn

使用我们得到的假设:

T(n)=2T(n/4)+T(n/2)+n

因此,取T(n)<=2(c(n/4)log(n/4))+c(n/2)log(n/2)+n=cnlogn + n(1-3c/2)证明我们的论文,因为c>=2/3

现在我们需要证明基本情况:

我们将T(n)<=cnlogn,因为如果我们选择n0=2,则n0=1将为logn,这对我们的论文无效。所以我们的基本案例是0。我们需要以下命题:

n=2,3,4

T(2) <= 2clog2

T(3) <= 3clog3

因此,通过T(4) <= 4clog4c=max{2/3, T(2)/2, T(3)/3log3, T(4)/8},我们会找到常量n0=2c,以便每个自然n0n>=n0 }

T(n)<=cnlogn的演示是模拟的。

所以基本上,在这些你不能使用Masther定理的情况下,你需要“猜测”结果并通过归纳证明它。

有关这类演示的更多信息,请参阅“算法简介”