我正在学习数据结构和算法课程(这很难)。我们了解了当aT(n / b)+ f(n)形式时解决基本递归关系的主方法。现在我们已经了解了线性时间选择算法,它具有不是这种形式的关系,我被要求发现它更糟糕的情况下运行时间是渐近符号。
我发现复发关系为:
在我看来,Master Method并没有考虑到这一点 - 我可能错了。如果它没有,那么你如何找到更糟糕的运行时间?
答案 0 :(得分:0)
主定理并不适用,但直接证明这种复发的严格限制并不太难。
你知道你不能比 O(n)做得更好,因为这个词已经复发了。你被告知它是一个线性时间算法,并且有一些经验你可以猜测,因为子问题的总大小比某个因子小n,所以你可以做到这一点很好强> O(n)的强>
剩下的就是证明它。
你可以通过归纳很容易地证明这一点。设C为(大)常数,使得:
对于所有 n,T(n)< = T(n / 101 + 1)+ T(151n / 202 + 101)+ C(n + 1)/ 202
,(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)