我正在学习数据结构和算法课程(这很艰难)。我们学习了求解基本递推关系的主要方法,当它们的形式为 aT(n/b)+f(n) 时。现在我们已经了解了线性时间选择算法,它的关系不是这种形式,我被要求发现它的最坏情况运行时间是渐近符号。
我发现递归关系为:
在我看来,大师方法并没有考虑到这一点——我很可能是错的。如果不是,那么您如何找到最坏情况下的运行时间?
主定理不适用,但直接证明此递归的紧界并不难。
你知道你不能做得比O(n)更好,因为该术语已经在循环中。你被告知这是一个线性时间算法,根据一些经验,你会猜测子问题的总大小小于 n 的事实,所以你可以做O(n)是一个很好的选择.
剩下的就是证明。
你可以很容易地通过归纳来证明这一点。设 C 是一个(大)常数,使得:
T(n) <= T(n/101 + 1) + T(151n/202 + 101) + C(n+1)/202,对于所有n,(eq 1),和
T(n) <= C(n+1),对于所有n < 1000 (eq 2)
对于任何n >= 1000,如果(eq 2)适用于所有较小的n,那么我们有
T(n) <= T(n/101 + 1) + T(151n/202 + 101) + C(n+1)/202 (eq 1)
T(n) <= C(n+202)/101 + C(151n+20604)/202 + C(n+1)/202 (subst eq 2)
T(n) <= C(2n+404)/202 + C(151n+20604)/202 + C(n+1)/202
T(n) <= C(156n+20604)/202
T(n) <= C(0.78n + 102) <= C(n - 0.22n + 102) <= C(n - 220 + 102)(因为 n>=1000)
T(n) <= C(n+1)
所以,如果我们像上面一样选择C,那么 (eq 2) 对n < 1000成立的事实意味着它对所有n 成立,并且T(n) 在 O(n) 中
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句