遞迴關係式與主定理

正則條件(regularity condition)

主定理的情況三說「頂層主導,所以答案是 Theta(f(n))」。但這個說法只有在工作量「確實」會隨著往樹下走而縮小時才成立。正則條件就是確保這件事的細則要求——一個小檢查,確認 f 在較小輸入上不會亂來。

條件是:存在某常數 c < 1,使得對所有夠大的 n,a f(n/b) <= c f(n)。把它讀成「所有子節點的合併工作 a f(n/b),至多是父節點合併工作 f(n) 的某個常數比例 c」。若成立,則遞迴樹每一層的成本至多是上一層的 c 倍,於是各層總和形成一個遞減的幾何級數;把公比 c < 1 的幾何級數加總,總和就只是第一項的常數倍,即 Theta(f(n))。沒有這個條件,每層工作可能不會衰減,你就無法斷定樹根主導。

實務上,對任何「在多項式意義上比 n^(log_b a) 大」的一般多項式 f(n) = n^k,這個條件會自動成立(你可以算出 a (n/b)^k = (a / b^k) n^k,而因子 a/b^k < 1 正是因為 k > log_b a)。這就是教科書常常不提它就直接套用情況三的原因。把它放在心上的誠實理由是:對奇怪的 f 它「可能」失效——例如會振盪或有非單調片段的函數——這時即使 f 在多項式意義上較大,情況三也就是不能用。這個條件是護欄,不是形式。

對 T(n) = 4 T(n/2) + n^3:log_2 4 = 2,f(n) = n^3 > n^2。檢查正則條件:4 (n/2)^3 = 4 n^3 / 8 = n^3 / 2 = (1/2) f(n),故 c = 1/2 < 1。成立,所以情況三給出 T(n) = Theta(n^3)。

正則條件意指子節點合併工作的總和,是父節點的某個固定比例(< 1)。

對單純的多項式,這個條件會自動成立,但並非對所有函數都如此——它正是可能讓情況三失效的關鍵。若 f 非單調或會振盪,別假設正則條件成立;要驗證它。

又称
smoothness conditionregularity check for Case 3規則性條件