演算法導論4 3

2022-07-07 16:18:12 字數 2080 閱讀 6923

代入法求解遞迴式分為兩步:

猜測解的形式。

用數學歸納法求出解中的常數,並證明解是正確的。

但是並不存在通用的方法來猜測遞迴式的正確解,但是也是有一些技巧的:

使用遞迴樹輔助猜測

先猜測乙個較為寬鬆的上界和下界,然後縮小範圍

證明:\(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...