我如何理解主定理,算法可以递归定义为:
a T(n/b) + O(n^d)
其中a是子问题的数量,n/b是子问题的大小,O(n^d)是子问题的重组时间。计算主定理的时间复杂度如下:
T(n) = { O(n^d) if d > log base b of a
{
{ O(n^d log n) if d = log base b of a
{
{ O(n^ (log base b of a) ) if d < log base b of a
我的问题是,如果重组时间不是以 O(n^d) 的形式表示怎么办?例如 O(2^n) 或 O(log(n))。如何确定时间复杂度?