【发布时间】:2016-06-14 10:35:37
【问题描述】:
我被要求证明:
对于每个 n>=n0 和 T(n) = T(an) + T(bn) + n 对于 n>n0, a+bT(n) = O(n)。
提示:通过归纳证明:T(n) ≤ cn 是一个合适的 c。
我想知道在这种情况下如何通过归纳证明。
谢谢。
【问题讨论】:
标签: complexity-theory induction
我被要求证明:
对于每个 n>=n0 和 T(n) = T(an) + T(bn) + n 对于 n>n0, a+bT(n) = O(n)。
提示:通过归纳证明:T(n) ≤ cn 是一个合适的 c。
我想知道在这种情况下如何通过归纳证明。
谢谢。
【问题讨论】:
标签: complexity-theory induction
如果我们假设an 和bn 的不等式成立,那么
现在我们不知道这个常量和c之间的确切关系;但是如果我们看一下
但是a + b可以任意接近1,这意味着c可以任意大。这有点违背 O 表示法的观点,因为常数必须是有限的。因此我们取下界:
因此我们找到了假设可以成立的c 的范围。 1 的下限是因为您的域n >= n0 表示T(n0) = n0。这里的常数是 1,所以c 必须至少为 1 才能满足假设的初始界限。这也将a 和b 的值限制为正数。
但要使假设成立,a, b 可以在[0, 1) 中取任何 值,这意味着如果边界对于T(n) 是正确的,那么对于任何更大的参数也是正确的例如T(n + 1).
所以我们知道:
n = n0 的假设成立
n 为真,那么n + 1 也为真
因此通过归纳,T(n) <= cn 表示任何 n >= n0,其中 c 满足之前的界限。
【讨论】:
T(an0) 和T(bn0) 都有参数< n0,因为你说T(n) 是为n >= n0 定义的,所以我们将它们设为零