首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >证明递归函数的上界复杂度?

证明递归函数的上界复杂度?
EN

Stack Overflow用户
提问于 2014-02-12 00:28:44
回答 1查看 2.6K关注 0票数 2

我很困惑如何用数学归纳法来证明一个递归函数的大O,给出了它的递归关系。

示例:

河内塔递归实现的递推关系为: T(n) = 2T(n-1) +1 T( 1 ) = 1,我们证明了这种递推方法是O(n) = 2n -1,用数学归纳法证明了这一结论。

在递归的情况下,我是否总是假设n= k-1而不是n=k?这是课堂讲稿给出的假设。

假设f(n-1) = 2^(n-1) -1为真。

我理解非递归数学归纳法,我们假设n= k,因为它只是变量的变化。那么,为什么假定n=k-1是安全的呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-12 01:06:41

一种可能的方法是:假设T的非递归公式,并喜欢它。在那之后,表明你找到的公式是在你想要的大O中。

为了证明,您可以使用归纳,这是快速和容易的情况下。要做到这一点,首先要说明您的公式适用于第一个值(通常是01,在您的示例中是1和琐碎的)。

然后,您将看到,如果它适用于任意数n - 1,则它也适用于其继任者n。为此,您使用了T(n)的定义(在您的示例中是T(n) = 2 T(n - 1) + 1):正如您知道formla对于n - 1保持的那样,您可以用公式替换T(n - 1)的出现。在您的示例中,您将得到(使用公式T(n) = 2^n - 1)

代码语言:javascript
运行
复制
T(n) = 2T(n - 1) + 1
     = 2(2^(n - 1) - 1) + 1
     = 2^n - 2 + 1
     = 2^n + 1

正如您所看到的,如果我们假设n适用于n - 1,那么它适用于n - 1

现在来了归纳的诀窍:我们展示了我们的公式适用于n = 1,并且我们展示了如果它适用于任何n = k - 1,它也适用于k。也就是说,正如我们对1所做的那样,它也被证明为2。正如它在2中得到的证明一样,它也被证明为3。而事实上..。

因此,在我们的证明中,我们并不假定这个术语对n - 1是正确的,我们只是在假设它是真的的情况下,然后给出了一个初始情况的公式,并使用了归纳法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21716193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档