日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

函数的渐进增长

發布時間:2023/12/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 函数的渐进增长 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

函數的漸進增長

我們先通過一個例子來看一下,假設兩個算法的輸入規模都是n,算法A要做2n+3次操作,可以理解為先有一個n次的循環,執行完成后,再有一個n次的循環,最后有三次賦值或運算,共2n+3次操作,算法B要做3n+!次操作,那么這兩個算法那個更快呢?


我們發現,當n = 1時,算法A的效率不如算法B(次數比B多一次)。而當n = 2時,兩者效率相同;當n >2時,算法A就開始優于算法B了,隨著n的增加,算法A比算法B越來越好了。我們可以說,算法A總體上要好于算法B。

此時我們給出這樣的定義,輸入規模n在沒有限制的情況下,只要超過一個數值N,這個函數就總是大于另一個函數,我們稱函數是漸進增長的。

函數的漸進增長:給定兩個函數f(n)和g(n),如果存在一個整數N,使得對于所有的n > N,f(n)總是比g(n)大,那么,就可以說f(n)的漸進增長大于g(n)。

從中我們可以發現,隨著n的增大,后面的+3還是+1其實是不影響最終的算法變化的,所以,我們可以忽略這些加法常數。

再來看第二個例子,算法C是4n + 8,算法D是2n2(平方) + 1:


當n≤3的時候,算法C要差于算法D(因為算法C次數比較多),但當n>3后,算法C的優勢就越來越優于算法D了,到后來更是遠遠勝過。而當后面的常數去掉后,我們發現其實結果沒有發生改變。甚至我們再觀察發現,哪怕去掉與n相乘的常數,這樣的結果也沒發生改變,算法C′的次數隨著n的增長,還是遠小于算法D′。也就是說,與最高次項相乘的常數并不重要。

再看第三個例子,算法E是2n2(平方)+3n+1,算法F是2n3(三次方)+3n+1


當n=1的時候,算法E與算法F結果相同,但當n>1后,算法E的優勢就要開始優于算法F,隨著n的增大,差異非常明顯。通過觀察發現,最高次項的指數大的,函數隨著n的增長,結果也會變得增長特別快。

來看最后一個例子。算法G是2n2(平方),算法H是3n+1,算法I是2n2(平方)+3n+1:


這組數據應該就看得很清楚。當n的值越來越大時,你會發現,3n+1已經沒法和2n2的結果相比較,最終幾乎可以忽略不計。也就是說,隨著n值變得非常大以后,算法G其實已經很趨近于算法I。于是我們可以得到這樣一個結論,判斷一個算法的效率時,函數中的常數和其他次要項常常可以忽略,而更應該關注主項(最高階項)的階數。

判斷一個算法好不好,我們只通過少量的數據是不能做出準確判斷的。根據剛才的幾個樣例,我們發現,如果我們可以對比這幾個算法的關鍵執行次數函數的漸近增長性,基本就可以分析出:某個算法,隨著n的增大,它會越來越優于另一算法,或者越來越差于另一算法。這其實就是事前估算方法的理論依據,通過算法時間復雜度來估算算法時間效率。

總結

以上是生活随笔為你收集整理的函数的渐进增长的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。