《演算法導論》筆記系列之第三章函式的增長

2021-07-25 22:18:15 字數 2425 閱讀 4831

第三章的開頭提出了三個記號來表示函式的漸近緊確界。

θ⁆、ο ⁆和ω⁆記號:

在每個部分,標出的n0的值是最小的可能值,任何更大的值也將有效。

(a)θ⁆記號限制乙個函式在常量因子內。如果存在正常量n0、c1和c2,使得在no及其右邊,f(n)的值總位於c1g(n)和c2g(n)之間或等於它們,那麼記f(n)=θ(g⁆(n))。

(b)ο⁆記號為函式給出乙個在常量因子內的上界。如果存在正數n0和c,使得在n0及其右邊,f(n)的值總小於或等於cg(n)的值。那麼記f(n)=ο(g(n))

(c) ω⁆ 記號為函式給出乙個在常量因子內的下界。如果存在正數n0和c,使得在n0及其右邊,f(n) 的值總大於或等於cg(n), 那麼 記f(n)=ω(g(n))

記得在第二章中,我們使用o(n^2)來表示演算法的執行時間的近似資料級。在書中第三章,作者證明了,即使在數學上, 扔掉低價項,並忽略最高端項前的係數,這樣的等價表示也是成立的。首先是:1/2 n^2−3n=θ(n^2 ) ⁆ 即:

對正常量c1、c2和n0,使得對所有n>= n0,有: c_1 n^2≤ 1/2 n^2−3n≤ c_2 n^2 ⁆ .

// 使用o記號,我們總是可以僅僅通過檢查演算法的總體結構就可以 描述演算法的執行時間。

證明了漸近上界與f(n)的關係,我們就可以僅僅分析演算法的總體結構來描述演算法的執行時間。比如在插入排序演算法中,一共有兩個迴圈。外迴圈對n個元素的n-1個都必須進行操作,第二個迴圈則對每個元素,都要遍歷一次已排好序的序列,這序列的最大值也是n,每次遍歷的操作時間為o(1),因此,可以說,該雙層迴圈立即產生了o(n^2)的上界。

因此,就要注意這裡o(n^2)的意思,不是指對於插入排序的每個輸入,它的執行時間都是o(n^2),因為很明顯當n個元素已好序時,其時間是o(n)。所以,當我們說「執行時間為o(n^2)時,意指的是存在乙個o(n^2)的函式f(n),使得對n 的任意值,不管選擇什麼特定的規模為n的輸入,其執行時間的上界都是f(n),也就是說最壞情況執行時間為o(n^2)。

ω ω記號提供了漸近下界。

ω⁆ 記號 非漸近緊確的下界

ο⁆ 記號 非漸近緊確的下界

以上兩個記號出現的原因是因為由ω確定的漸近下界和ο確定的漸近上界,有可是是也可能不是漸近緊確的。因此,模擬ο 和 ω 的定義,給出了ο 和ω 的定義。

ο: ο(g(n))=⁆ 例如,2n=o(n2)⁆ ,但是2n2 ≠ o(n^2)⁆

蘊涵著以下含義:

lim_(n→∞)⁡〖(f(n))/(g(n))=0〗

ω: ω(g(n))=。蘊涵著以下含義:

lim_(n→∞)⁡〖(f(n))/(g(n))=〗 ∞

還有漸近運算的運算性質 :

傳遞性

自反性:

對稱性:

轉置對稱性:

而且:兩個函式f和g的漸近比較關係可與實數a與b之間的比較做模擬:

f(n)=o(g(n)) 類似於a<= b

f(n)=ω(g(n)) 類似於a>= b

f(n)=θ(g(n)) 類似於a= b

f(n)=o(g(n)) 類似於a< b

f(n)=w(g(n)) 類似於a> b

但是實數的三分性不能帶到漸近運算中:

對任意兩個實數a和b,下列三種情況恰有一種必須成立:a < b, a=b, 或a > b。

雖然任意兩個實數都可以進行比較,但不是所有函式都可以漸近比較。也就是對於兩個函式f(n)和g(n),可能f(n)=ο(g(n)) 或 f(n) = ω(g(n))都不成立。

3.2 標準記號與常用函式

3.2節在我看來就是複習了高中知識,其中講解了以下函式模型及術語:

單詞性

向下取整與向上取整

模運算

多項式

指數 對數

階乘 多重函式

多重對數函式:是乙個增長非常慢的函式

斐波那契數列:可以證明斐波那契數列以指數形式增長。

第三章完。

越看演算法導論,越有一種強烈的意識:它是教你怎樣設計演算法,從第2章開始講解分析演算法複雜度的步驟,以及分治法這種設計演算法的技術,到第三章全部是度量演算法複雜度的函式模型(工具),該書從最基礎的講起,以數字的方式嚴謹清晰的證明各種定理,定義各種模型。這讓我本來上學沒有理解的數學概念,許多認為沒有意義的數學概念,在這裡感受到了實實在在地用處,這些知識被賦予了生命力。在我看來,書中的字不再是字,而是一幅一幅鮮活的影象,向我展示著作者的思想(當時我現在的程度還無法徹底領悟到大牛的思想),有種非常強烈的與作者溝通的快感。

相信我接下來《演算法導論》的學習會更加有意義。

ps:課後習題大概看了一遍,練習題比較簡單,都是對章節內容的重複考查。難度不大。思考題目的在於啟發思考,難度稍大,但總體來說,完全可以解決。基本上都是看一遍就有了證明思路。潛在問題是,沒有下筆寫,沒有看過標準答案,無法從數學上證明我的證明是正確的。(無法做到像作者那樣的嚴謹清晰,只是能講明思路)

之後會不定期更新後面的思考題。

演算法導論 第三章 函式的增長

漸近記號 1 漸近上界記號o 大寫o 含義 漸近地給出了乙個函式在常量因子內的上界 2 漸進下界記號 大寫 含義 漸進的給出乙個函式在常量因子的下界 漸進緊確界記號 含義 漸進的給出了乙個函式的上界和下界,eg 形式證明 n n 2 3 n n n 非漸進緊確上界記號o 小寫0 如果f n o g ...

工程導論第三章

工程與技術的關係 工程依賴技術的發展,技術是實現工程的手段。其二,技術比工程更依賴科學的發展。由此可見,兩者的關係十分密切,但是相較於工程,技術對於科學發展的依賴性更強。工程技術的傳統學科很多,大家最熟悉的因該是土木工程,但其實還有很多這樣的工程學科,我們舉一些例子 建築工程 機械工程 電氣工程 化...

工程導論第三章

第三章 需求分析 分析方法都應該遵守以下準則 1 必須理解並且描述問題的資訊域,根據這條準則建立資料模型。2 必須定義軟體應該完成的功能,這條準則要求建議功能模型。3 必須描述作為外部事件結果的軟體行為,這條準則要求建立行為模型。4 必須對描述資訊,功能和行為的模型進行分解,用層次的方式細節。需求分...