主定理是获得递归关系的解的直接方法,只要它是以下类型:
T(n) = aT(n/b) + f(n) where a >= 1 and b > 1
该定理由以下三种情况组成:
1如果f(n)= ( )其中c < 那么T(n)= (n )
2,如果f(n)= ( )其中c = 那么T(n)= ( 登录n)
3,如果f(n)= ( )其中c> 那么T(n)= (f(n))
想象以树的形式重复出现aT(n / b)+ f(n)。
情况1涵盖了子节点比父节点执行更多工作的情况。
例如,方程T(n)= 2T(n / 2)+1属于情况1的类别,从下面的树中我们可以清楚地看到,在每个级别上,子节点的工作量是父节点的两倍。
T(n) ------(1)
/ \
T(n/2) T(n/2) ------(2)
/ \ / \
情况2涵盖了子节点和父节点进行相同工作量的情况。
例如,等式T(n)= 2T(n / 2)+ n属于情况2的类别,从下面的树中我们可以清楚地看到,在每个级别上,子节点执行的工作量与父节点相同。
T(n) ------(n)
/ \
T(n/2) T(n/2) ------(n)
/ \ / \
情况3涵盖了父节点比子节点执行更多工作的情况。
T(n)= T(n / 2)+ n是情况3的示例,其中父母比孩子做更多的工作。
T(n) ------(n)
|
T(n/2) ------(n/2)
|
在案例1和案例2中,案例条件本身确保孩子所做的工作等于或多于父母,而案例3则不是。
在第3种情况下,我们采用了监管条件,以确保父母的行为至少与子女的行为相同。
情况3的监管条件是
af(n/b)<=cf(n).
这表示f(n)(在根中完成的工作量)至少应与在较低级别中完成的工作之和一样大。
方程T(n)= T(n / 2)+ n(sin(n – / 2)+ 2)是监管条件产生巨大差异的示例。该方程式不满足情况1和情况2。在情况3中,对于较大的n值,它永远无法满足调节条件。因此,该方程超出了主定理的范围。