我很困惑如何用数学归纳法来证明一个递归函数的大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是安全的呢?
发布于 2014-02-12 01:06:41
一种可能的方法是:假设T
的非递归公式,并喜欢它。在那之后,表明你找到的公式是在你想要的大O中。
为了证明,您可以使用归纳,这是快速和容易的情况下。要做到这一点,首先要说明您的公式适用于第一个值(通常是0
或1
,在您的示例中是1
和琐碎的)。
然后,您将看到,如果它适用于任意数n - 1
,则它也适用于其继任者n
。为此,您使用了T(n)
的定义(在您的示例中是T(n) = 2 T(n - 1) + 1
):正如您知道formla对于n - 1
保持的那样,您可以用公式替换T(n - 1)
的出现。在您的示例中,您将得到(使用公式T(n) = 2^n - 1
)
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
是正确的,我们只是在假设它是真的的情况下,然后给出了一个初始情况的公式,并使用了归纳法。
https://stackoverflow.com/questions/21716193
复制相似问题