代入法求解遞迴式分為兩步:
猜測解的形式。
用數學歸納法求出解中的常數,並證明解是正確的。
但是並不存在通用的方法來猜測遞迴式的正確解,但是也是有一些技巧的:
使用遞迴樹輔助猜測
先猜測乙個較為寬鬆的上界和下界,然後縮小範圍
證明:\(t(n) = t(n-1)+n\)的解為\(o(n^2)\)猜測:\(t(n) \le \)
證明:\[\begin
t(n) &= t(n-1) + n \\
&\le +n \\
& = cn^2 -2cn +c +n \le
\end
\]此處只要\(-2cn+c+n\le 0\),上述不等式成立;
所以\[c \ge }
\]因此可令\(c = 1\),證畢。
證明: \(t(n)=t(\lceil n/2\rceil)+1\)的解為\(o(\lg)\)證明:
\[\begin
t(n) &= t(\lceil n/2 \rceil) + 1 \\
&= c\lg}+1 \\
&= c\lg - c + 1 \le }
\end
\]令\(c=1\),上式成立,證畢;
我們看到\(t(n)=2t(\lfloor n/2 \rfloor)+n\)的解為\(o(n\lg)\)。證明\(\omega(n\lg)\)也是這個遞迴式的解。從而得出結論: 解為\(\theta(n\lg)\)。證明:
\[\begin
t(n) &= 2t(\lfloor n/2 \rfloor)+n \\
&=cn\lg}+n \\
&=cn\lg - cn + n \ge }
\end
\]令\(c=1\),上式成立,證畢;
證明:通過做出不同的歸納假設,我們不必調整歸納證明中的邊界條件,即可克服遞迴式(4.19)中邊界條件\(t(1)=1\)帶來的困難。將假設換位\(t(n)\le+d}\),其中\(d\ge0\)即可;
證明:歸併排序的嚴格遞迴式(4.3)的解為\(\theta(n\lg)\)。嚴格遞迴式4.3:
證明: \(t(n)=2t(\lfloor n/2 \rfloor+17)+n\)的解為\(o(n\lg)\)。證明:
\[\begin
t(n) &= 2t(\lfloor n/2 \rfloor + 17)+n \\
&\end
\]//todo
使用4.5節中的主方法,可以證明\(t(n)=4t(n/3)+n\)的解為\(t(n)=\theta(n^)\)。說明基於假設\(t(n)\le}\)的代入法不能證明這一結論。然後說明如何通過減去乙個低階項完成代入法證明。//todo
使用4.5節中的主方法,可以證明\(t(n)=4t(n/2)+n\)的解為\(t(n)=\theta(n^2)\)。說明基於假設\(t(n)=\le\)的代入法不能證明這一結論。然後說明如何通過減去乙個低階項完成代入法證明。//todo
利用改變變數的方法求解遞迴式\(t(n)=3t(\sqrt)+\log\)。你的解應該是漸近緊確的。不必擔心數值是否為整數。//to
演算法導論 思考題 4 3
a.利用主方法可得,t n n的log3 4次方 b.n f n lgn,不能應用主方法 共log3 n 1層,每層代價n lg n 3 的i次方 最後一層共n個 1 的結點,代價為 n t n n lg n 3 的i次方 n n lgn n n log3 2 n o n 又因為t n 最後一層代價...
《演算法筆記》4 3遞迴
一.分治 分治是一種思想,可以用遞迴的方法實現,也可以用非遞迴的方法實現 二.遞迴 自底向上 三.題目 1.全排列 方法一 include using namespace std int n p 11 void generatep int index else if t 0 int main 方法二...
演算法筆記 4 3 遞迴
三.回溯 2.字母全排列 3.數樓梯 總時間限制 1000ms 記憶體限制 65536kb 描述逆波蘭表示式是一種把運算子前置的算術表示式,例如普通的表示式2 3的逆波蘭表示法為 2 3。逆波蘭表示式的優點是運算子之間不必有優先順序關係,也不必用括號改變運算次序,例如 2 3 4的逆波蘭表示法為 2...