因為在計算機程式設計的學習中,我們需要掌握乙個類似於「需求量」的東西,怎麼去理解需求量呢,舉個最簡單的例子,你有乙個雙層迴圈,這個雙層迴圈所需要的時間,就是乙個增長量。具體一點可以這麼去解釋這個問題,如果你在乙個迴圈裡面的每乙個步驟所需要的時間都不同的話,那麼:你的需求量就是乙個分布式的增長。我們需要了解乙個程式的線性增長或者減少,就必須要了解一些實質性的東西。廢話不多,下面開始講解各個知識點:
這裡我還是不想照著書上講,那樣太沒意思了,我就說說我個人的理解,大家可以參考,切勿全部相信我說的。θ(n^2)=ax^2+bx+c,這個公式大家上初中的時候應該都學過了吧,就是乙個一元二次方程的標準式,任何的(x+c)^2其中 c為常量,都可以化簡為θ(n^2)=ax^2+bx+c的這種形式,我個人覺得這是一種非常糟糕的形式,或者說,這種形式所造成的時間代價是最大的,雖然我經常寫這種糟糕的**。
好了,下面我來介紹幾種演算法當中的記號的作用:
θ 給出了這個函式的上界和下界
о 給出了上界
ω 給出了下界
由於我們今天想做的一件事情,是要明白這3個符號的具體用處,你可以把上界或者下界理解為「參考函式」,在**裡面,你可以理解為執行緒,我們假設有3個不同的執行緒,這3個不同的執行緒在某個瞬間他們會有同樣的消耗,也就是說效率相等,當過了這個時間以後,就會向這個被參考的函式的的上界飛去或者下界飛去,這裡說的上界或者下界和區間是不同的,因為區間是乙個基本資料型別,而這個上界或者下界是乙個你可以理解為object的東西,也就是乙個參考執行緒。這個參考執行緒的效率在平衡點以後,隨著時間的推移,就會永遠處於遞增(效率大於被參考執行緒)和遞減(效率小於被參考執行緒)這樣。
由此我們可以總結出乙個公式: a<=b<=c,這是乙個極其簡單的不等式,但是其中蘊含了上界下界的概念,讓我再來重寫這個不等式。
(a=b當且僅當2條函式相交)∪(a
當然了,任何的函式的變體都適合於上面的邏輯,只要符合就ok。
就寫這麼多了,本來想放首頁的,結果發現自己還有好多不理解,於是乎,就等下次吧,上首頁這種事情不能強求的,每天有進步就行了!
函式的增長 演算法導論 2
1.引言 這一章主要是介紹一些概念,雖然很乏味,但是它確實能夠幫助我們去更好的分析 處理問題。2.漸進記號 1 記號 g n 通俗地講,若存在正常數才c1,c2,使得對於足夠大的n,函式f n 能 夾入 c1 g n 與c2 g n 之間,則f n 屬於集合 g n 通常把f n g n 記為f n...
演算法導論 基礎知識 函式的增長
各種語句和模組分析應遵循的規則 1 賦值語句和讀寫語句 執行時間取 o 1 有函式呼叫的除外,此時要考慮函式的執行時間。2 順序執行語句 執行時間有加法規則確定,即該序列中耗時最多的語句的執行時間。3 條件分支語句 執行時間有條件測試 通常為 o 1 加上分支中執行時間最長的語句的執行時間。4 迴圈...
《演算法導論》筆記 第3章 函式的增長
第3章 函式的增長 漸進記號 記號對任乙個函式f n 若存在正常數c1,c2,使當n充分大時,f n 能被夾在c1g n 和c2g n 中間,則f n 屬於集合 g n 因為 g n 是乙個集合,可以寫成 f n g n 表示f n 是 g n 的元素。g n 的定義需要每個成員f n g n 都是...