主定理(master theorem)
过两周要参加校赛了,本着对于校赛蹭件衣服认真严谨的态度,做下去年的校赛题。写一道水题的时候发现了个知识漏洞——主定理,题目链接:链接。
首先,主定理是对递归式处理时间复杂度用的。对于形如T(n)=a*T(n/b)+f(n)的递归式,可以用主定理来求解。
它将规模为n的问题分解为a个子问题,每个子问题规模为n/b,其中,a和b都是正常数。a个子问题进行递归求解,每个花费时间T(n/b)。
严格来说,n/b可能不是整数,这是涉及到向上取整或者是向下取整,但无论哪种方式,对于递归式的渐进性质没有影响。
对于具体情况,借鉴了这里,就不赘述。
对于上面有一点补充,对于大于(小于),并不是直观上的大于(小于),而是多项式意义上的大于(小于)。也就是说f(n)必须渐进地大于(小于)n(log~b~a)。还要相差一个因子 ne。
而且,需要满足“正则”条件:a*f(n/b)<=cf(n)。