1.递归式
一般来说,最坏时间复杂度由递归式给出,为求出其渐进的界以判断复杂度大小,需求解递归式。
主要有三种方法:代入法、递归树法和主方法。
代换法
使用:先猜测某个界的存在,再用数学归纳法去证明该猜测的正确性。
诀窍:多用于解的形式很容易猜,或者与自己之前记得的递归式相似的情形。
递归树法
使用:将递归式转化成树形结构,在递归树中,每一个结点都代表递归函数调用集合中一个子问题的代价。将递归树中每一层内的代价相加得到一个每层代价的集合,再将每层的代价相加得到递归式所有层次的总代价。
诀窍:适合用来产生好的猜测,然后用代换法加以验证。
主方法
使用:直接给出形如T(n) = af(n/b) + f(n)的递归式的界,如下: