在Cormen的《算法导论》中,我正在尝试解决以下问题:证明递归关系T(n) = T(n-1) + n的解是O(n2),使用代换法证明。但我似乎找不到正确的过程。教材只简单地涉及了它,而我搜索的大多数网站似乎都假定我已经知道了如何使用代换法。如果有人能给我一个简单的、分步的指南,或者甚至是一个链接,我会非常感激。
为了方便起见,这是我迄今为止的尝试:
T(n) <= c(n^2)
<= c(n-1)^2 + n
<= c(n^2 -2n +1) + n(我很确定这不小于c(n^2))
谢谢。
更新:这里有一个例子,说明我想要实现的方法,以避免混淆。
证明解是O(nlog(n))
T(n) = 2T([n/2]) + n
代换法要求我们证明对于某个正常数c>0,T(n) <= cn*lg(n)。假设对于任意小于n的正整数m=[n/2],该界限成立,得到T([n/2]) <= c[n/2]*lg([n/2])。将其代入递归式得到以下结果:
T(n) <= 2(c[n/2]*lg([n/2])) + n
<= cn*lg(n/2) + n
= cn*lg(n) - cn*lg(2) + n
= cn*lg(n) - cn + n
<= cn*lg(n)(只要c>=1,最后一步就成立)