簡體   English   中英

什么是順序符號f(n)= O(g(n))?

[英]What is order notation f(n)=O(g(n))?

問題1:在什么情況下O(f(n)) = O(kf(n))是時間復雜度分析的最合適形式?

問題2:O符號的數學定義出發,如何證明對於正常數kO(f(n)) = O(kf(n))

對於第一個問題,我認為這是時間復雜度的平均情況和最壞情況的形式。 我對嗎? 那我還要寫些什么呢?

對於第二個問題,我認為我們需要在數學上定義函數。 答案是否像是因為常數乘以對應於O定義中任意常數k的值的重新調整?

我的觀點:對於第一個,我認為這是時間復雜度的平均情況和最壞情況的形式。 我對嗎? 我還要寫些什么?

沒有! 大O符號與一般情況或最壞情況無關。 它僅與一個功能的增長順序有關,尤其是一個功能相對於另一個功能增長的速度。 函數f在一般情況下可以是O(n) ,在最壞情況下可以是O(n) O(n^2) -這僅表示函數根據其輸入而表現不同,因此必須分別考慮這兩種情況。

關於問題2,從問題的措辭來看,我很明顯需要從Big O的數學定義開始。為了完整性,它是:

形式定義:f(n)= O(g(n))表示存在正常數c和k,使得對於所有n≥k,0≤f(n)≤cg(n)。 c和k的值必須對於函數f是固定的,並且不得依賴於n。

(來源http://www.itl.nist.gov/div897/sqg/dads/HTML/bigOnotation.html

因此,您需要根據此定義進行工作,並編寫數學證明以證明f(n) = O(k(n)) 在上述定義中,先用O(k*f(n))替換O(g(n)) 其余的應該很容易。

問題1有點含糊,但您肯定沒有答案2。 問題是“從O符號的數學定義開始”。 這意味着您的講師希望您使用數學定義:

當且僅當極限[x-> a +] | f(x)/ g(x)|時,f(x)= O(g(x)) <無限,對於一些

他希望您插入g(x)= kf(x)並證明不等式成立。

您發布的一般性論點可能會讓您部分功勞,但這是推理而不是數學,問題是要求數學。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM