《演算法導論》讀書筆記 第三章函式的增長 課後題

2022-07-17 05:06:11 字數 2768 閱讀 7805

本章的課後題看一下即可,比較平凡。

3.1漸近記號

引用一下別人的答案,非常感謝:

|概念回顧|

當輸入規模大到使只有執行時間的增長量級有關時,就使在研究演算法的漸進效率

幾個重要漸進記號的定義:

|習題解答|3.1-1 設f(n)與g(n)都是漸進非負函式。利用θ記號的基本定義來證明max(f(n),g(n))=θ(f(n)+g(n))。

證明:因為f(n)和g(n)都使漸進非負函式,同時假設存在這樣的整數c1,c2和n0,使得:

0<=c1(f(n)+g(n))<=max(f(n)+g(n))<=c2(f(n)+g(n)) 成立。

令c2=1,則第3個不等式顯然成立,因為兩正數之和定大於兩個中的最大值;再令c1=1/2,則第2個不等式也成立,因為兩正數中最大的乙個數定大於或等於兩數的平均值;第1個不等式,因為f(n)與g(n)都使漸進非負,所以也顯然成立。綜上,既該等式確實成立。最後再根據θ記號的定義可得:max(f(n),g(n))=θ(f(n)+g(n))。

3.1-2 證明對任意實常數a和b,其中b>0,有

[2](n+a)^b=θ(n^b)

證明:要想證明上式成立,先要來證明等式:

[1]0<=c1(n^b)<=(n+a)^b<=c2(n^b)

也就使說存在兩個正常數c1,c2,使得當n充分大時(n+a)^b,能夠被夾在c1(n^b)和c2(n^b)中間。顯然,因為b>0,c1,c2已知為正常數,所以第乙個等式:0<=c1(n^b)當n充分大時成立。接著,第

二、三個等式分別除於(n^b)後得(n^b不可能為0):c1<=((n+a)/n)^b<=c2,進一步推得:c1<=(1+a/n)^b<=c2。又因為,a,b均為實常數,且當n充分大時,a/n趨向於0。所以,c1,c2分別可取值1/2,2,使得等式成立,等式(1)成立,也就證明了等式(2)成立。

3.1-3 解釋為什麼「演算法a的執行時間至少是o(n²)」這句話是無意義的。

答:根據o記號的定義可知,它是用來表示上界的,當用它作為演算法的最壞情況執行時間的上界時,就有對任意輸入的執行時間的上界。我們說「乙個演算法a的執行時間為o(n²)」,它表示的是說該演算法執行時間的乙個上界,適用於每個輸入的執行時間,這與題中的「至少是」表達的是同乙個意思。所以題中的話是無意義的。

3.1-4  2^(n+1)=o(2^n)成立嗎?2^(2n)=o(2^n)成立嗎?

答:第乙個成立;第二個不成立。

因為,[1]0<=2^(n+1)<=c(2^n),當n充分大時,第乙個等式0<=2^(n+1)顯然成立。第二個等式兩邊分別除以2^n,得:2<=c,即c>=2。即存在這樣兩個正常數c(c可取大於等於2的任意乙個常數)使得等式(1)成立,所以得:2^(n+1)=o(2^n)成立。

同理,0<=2^(2n)<=c(2^n),第二個等式兩邊除以(2^n)得:2^n<=c,因為c為正常數,當n充分大時,不存在這樣的c使之成立,也就證明了,2^(2n)=o(2^n)不成立。

3.1-5 證明定理3.1

定理3.1 在o中表示當n趨於無窮大時,函式f(n)相對於g(n)來說就不重要了。

證明:根據o記號的定義:對f(n)=o(g(n)),界o<=f(n)<=cg(n)對所有常數c>0成立,這句話說明了函式g(n)的增長速度要快於f(n),當n趨向無窮大時,差距就更大了。所以等式3.1時成立的。

3.1-6 證明:乙個演算法的執行時間是θ(g(n))當且僅當其最壞情況執行時間o(g(n)),且最佳情況執行時間是ω(g(n))。

證明:乙個演算法的執行時間是θ(g(n)),則說明存在這樣兩個正常數c1,c2使得(當n充分大時):0<=c1g(n)<=f(n)<=c2g(n),因而等式0<=c1g(n)<=f(n)成立,完整地說,即存在正常數c1和n0,使得對所有n>=n0,有0<=c1g(n)<=f(n)成立。所以,根據ω記號的定義得:該演算法的最佳情況執行時間是ω(g(n))。同理,因為等式0<=f(n)<=c2g(n)成立,所以該演算法的最壞情況執行時間是o(g(n))。綜上,證得該說法成立。

3.1-7 證明o(g(n))∩ω(g(n))是空集。

證明:根據o(g(n))=,而集合ω(g(n))=。

給出對應的ω(g(n,m))和θ(g(n,m))的定義。

[1] ω(g(n,m))=

[2] θ(g(n,m))=

3.2標準記號

下面這個答案比較靠譜,引用一下別人的答案,非常感謝:

非常遺憾的是,乙個方向沒有證出來。利用斯特林公式就容易證明了。關於斯特林公式;

3.2-4

前者不是多項式有界的,後者是多項式有界的。

3.2-5

第二個,因為第二個不過就是lg*n – 1 顯然比第乙個大。

3.2-6

顯然,代入即可。

3.2-7

數學歸納法可驗證。

3.2-8

這個問題可以將左邊去ln,再進行推導。

思考題題目已經解決了,公式太多不打了。

第三章讀書筆記

程序管理 3.1程序 程序就是處於執行期的程式 目標碼存放在某種儲存介質上 但程序並不僅僅侷限於一段可執行程式 執行執行緒,執行緒,是程序活動的物件。兩種虛擬機制 虛擬處理器和虛擬記憶體。最終,程式通過exit 系統呼叫退出執行。3.2程序描述及任務結構 核心把程序的列表存放在叫做任務佇列的雙向迴圈...

第三章讀書筆記

本章是講了git的使用入門,為學習本書的人展示了git的基本用法。儘管git並不是學習android移植和linux核心 驅動開發必須掌握的技術。但對於深入研究這些底層技術的人來說,git將成為學習過程中必不可少的工具。git是什麼,git就是乙個開源的分布式版本控制系統,用以有效 高速的處理從很小...

第三章 查詢 三 《演算法》讀書筆記

目錄3.3.2 紅黑二叉查詢樹 3.3.3 實現 3.3.4 刪除操作 3.3.5 紅黑樹的性質 定義。一棵2 3查詢樹或為一棵空樹,或由以下結點組成 和以前一樣,我們將指向一顆空樹的連線稱為空鏈結。3.3.1.2 向2 結點中插入新鍵 3.3.1.3 向一棵只含有乙個3 結點的樹中插入新鍵 3.3...