1.递归式
一般来说,最坏时间复杂度由递归式给出,为求出其渐进的界以判断复杂度大小,需求解递归式。
主要有三种方法:代入法、递归树法和主方法。
代换法
使用:先猜测某个界的存在,再用数学归纳法去证明该猜测的正确性。
诀窍:多用于解的形式很容易猜,或者与自己之前记得的递归式相似的情形。
递归树法
使用:将递归式转化成树形结构,在递归树中,每一个结点都代表递归函数调用集合中一个子问题的代价。将递归树中每一层内的代价相加得到一个每层代价的集合,再将每层的代价相加得到递归式所有层次的总代价。
诀窍:适合用来产生好的猜测,然后用代换法加以验证。
主方法
使用:直接给出形如T(n) = af(n/b) + f(n)的递归式的界,如下:
2.概率分析和随机算法
背景:雇佣问题
假设你要雇佣一个新的办公室助理。雇佣代理每天给你推荐一个应聘者,由你面试这个人,如果这个应聘者比目前的办公室助理更优秀,你就会辞掉当前的办公室助理,然后聘用这个新的。面试一个人需付给雇佣代理一笔费用,聘用办公助理也需要费用,并且,当你雇佣一个人时,需要支付给雇佣代理一大