我很困惑如何使用数学归纳来证明Big 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?
是否安全答案 0 :(得分:2)
一种可能的方法:假设T
的非递归公式并证明它。之后,显示您找到的公式是您想要的Big 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 = k - 1
,我们展示了如果它适用于任何k
,它也适用于1
。也就是说,正如我们为2
所证明的那样,2
也证明了这一点。正如3
证明的那样,n - 1
也证明了这一点。因为它是......
因此,在我们的证明中,我们不假设该术语对于{{1}}是正确的,我们只是在假设它是真的时才做出声明,然后在一个初始案例中使用我们的公式,并使用归纳法。