1. 程式人生 > >算法分析基礎——差消法求解高階遞推方程

算法分析基礎——差消法求解高階遞推方程

最值 直接 相等 長度 str http 技術分享 時間復雜度 alt

差消法,簡單來講,就是對高階的遞推方程作差,轉化為一階方程後再運用叠代法。有了叠代法的基礎後,差消法理解起來就很容易了。這裏舉出對快速排序的分析加以說明。

對於快排,我們知道選擇不同的軸值,會導致不同的算法效率。最壞的情況下,選取的軸值恰好是待排序數組的最值,那麽排序的效率就會退化為線性時間。現在我們來估算平均情況下快速排序的時間復雜度。

設T(n)為待排序數組長度為n時,快速排序算法需要的比較次數。那麽T(1) = 0,而T(n)的遞推方程相對於軸值的選取有如下n種情況:

T(n) = T(0) + T(n - 1) + n - 1

T(n) = T(1) + T(n - 2) + n - 1

...

T(n) = T (n - 1) + T(0) + n - 1

假定選取的軸值在排序後的數組中的每個位置出現的概率相等。那麽平均情況下,就可以計算得到T(n)的遞推表達式為

技術分享圖片

這是n階的遞推方程,不適合直接采用叠代法。接下來即運用差消法來求解:將O(n)用cn來表達,得到

技術分享圖片

技術分享圖片

兩式相減得

技術分享圖片

再同除以n(n+1),得到熟悉的一階遞推方程

技術分享圖片

於是我們得出T(n) = Θ(nlogn)。

算法分析基礎——差消法求解高階遞推方程