三、遞迴樹分析法

FibonacciCode發表於2020-12-30

1 問題

在這裡插入圖片描述

2 解決思路

使用遞迴樹猜想一個上界,使用歸納法證明上界也是下界。

2.1 使用遞迴樹(recursion tree)猜想結論(不嚴謹)

使用遞迴樹兩點:1⃣️逐行展開;2⃣️逐行相加;

逐行展開

本質上是分解問題,每個非葉子結點表示分解+合併問題所付出的代價,葉子結點表示解決邊界問題所付出的代價。
在這裡插入圖片描述

逐層求和

這裡要注意,除去非葉子結點,每一層的和呈現出等比數列性質,計算整個代價 T ( n ) T(n) T(n)本質上就是分解(合併)問題付出的代價+解決遞迴邊界付出的代價。

Case1:

分解問題的代價:
在這裡插入圖片描述
在這裡插入圖片描述
解決遞迴邊界的代價:
Θ ( n l o g b a ) \Theta(n^{log_ba}) Θ(nlogba)
取多項式最高次項,因此 T ( n ) = O ( n l o g b a ) T(n) = O(n^{log_ba}) T(n)=O(nlogba);

Case2:

分解問題的代價:
在這裡插入圖片描述
解決遞迴邊界的代價:
Θ ( n l o g b a ) \Theta(n^{log_ba}) Θ(nlogba)
取多項式最高次項,因此 T ( n ) = O ( n l o g b a l o g b n ) T(n) = O(n^{log_ba}log_bn) T(n)=O(nlogbalogbn);

Case3:

分解問題的代價:
根據假設容易得到
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
上面的不等號是漸進成立的,所以為了保證對每一個 n n n都成立,對於前有限的 n n n,要加上每一個都要加上一個足夠大的常數,因此有下面的式子。
在這裡插入圖片描述
解決遞迴邊界的代價:
Θ ( n l o g b a ) \Theta(n^{log_ba}) Θ(nlogba)
取多項式最高次項,因此 T ( n ) = O ( f ( n ) ) T(n) = O(f(n)) T(n)=O(f(n));

2.2 使用歸納法證明結論(嚴謹)

上面的遞迴樹分析只是大概得到了一個上界,下面使用數學歸納發證明上屆也是下界。

Case1:

在這裡插入圖片描述

Case2:

在這裡插入圖片描述

Case3:

在這裡插入圖片描述

3 結論

  1. 先使用非嚴謹的形式分析、猜想,然後用數學歸納法證明,這個思路貫穿整個導論一書;
  2. 主定理由遞迴樹推出,很多情形不符合主定理的假設,但是遞迴樹+歸納法仍然可以解決,所以整個過程最有價值的是這套分析、證明方法,而非主定理。
  3. 上面在使用歸納法證明時,漸進符號的威力驚豔了我!

相關文章