我注意到1000n或10n的大O與O(n)是相同的,但是2^n和3^n的大O是不同的:O(2^n )和O(3^n),我沒有得到的是爲什麼我們不能忽略這種情況下的常量(2或3)以及是否有任何數學證明證明這一點?指數函數的大O符號
回答
因爲k
的常數值滿足不等式3^n <= k * 2^n
的任意大n
。因此f(n) = 3^n
不是O(2^n)
的成員。
請參閱http://en.wikipedia.org/wiki/Big_O_notation#Family_of_Bachmann.E2.80.93Landau_notations。
準確地說,您正在展示一個聲稱「O(3^n)= O(2^n)」的反例。特別是,'f(n)= 3^n'在'O(3^n)'中,但不在'O(2^n)'中,使用上面給出的參數。因此,這些集合不等於通過擴張性公理 – rliu
@roliu:我不知道這個公理是什麼,但是,這是暗示的論證;) –
這是最流行的集合論中的一個公理,ZFC:https:/ /en.wikipedia.org/wiki/Zermelo%E2%80%93Fraenkel_set_theory。它只是說「如果它們包含相同的元素,則兩組相等」。從來沒有人以真實的證據引用它,但我只是試圖說服SO開始使用實際的數學推理而不是直覺(對於數學術語來說,這是非常冗長的)。如果您只是想在編寫代碼時決定使用哪個實現,則可以使用直覺。當有人說「證明這一點」時,我認爲你應該,你知道,使用數學:) – rliu
雖然對於原來的提問者來說這可能不再有用,
我認爲可以以更簡單的方式接近它。
O形表示法的基本defenition:當且僅當F(G)將是O(G(N)),
則存在一個有理數C,對於其保持使f(G)= C * G(N),對於n> = N0
(N0爲一個數字,你要振作精神)
讓我們嘗試應用此3爲O^N(2^n)的
3^N = 2^n * c
3^n = 2^n *(3^n/2^n)
3^N = 2^N *(3/2)^ n的
3^N = 2^N * 1.5^N
這意味着C = 1.5^n的是不是一個合理的數字,但它本身就是一個指數函數。
在另一方面,以下爲O 3^N(2^n)的相同,我們將得到2^N < = 3^N *(2/3)^ n的
這可能看起來像是一個衝突,直到你意識到所有n> 0的0.75^n < 1,這意味着如果你採取任何c> 1,它將大於0。從n = 0開始的67^n
爲了應對兩個複雜性f(n)和g(n)你應用的極限: lim_ {n - > \ inf} f(n)/ g(n)和你有三個可能的答案:
1)lim_ {n - > \ inf} f(n)/ g(n)= 0;這意味着f(n)∈O(g(n))和g(n)∉O(f(n))
2)lim_ {n-> \ inf} f(n)/ g n)= +/- inf;這意味着f(n)∉O(g(n))和g(n)∈O(f(n))
3)lim_ {n-> \ inf} f(n)/ g n)∈實數;這意味着f(n)∈O(g(n))和g(n)∈O(f(n))
然後去demostrade 2^n∈O(3^n)
lim_ {N - > \ INF} 2^N/3^N = lim_ {N - > \ INF}(2/3)^ n = 0的
和IS實例闡述,並且我們也demostraded 3 (2^n),並且很容易看出,這使得極限收斂到0,那麼極限的結果取決於常數,我的意思是lim_ {n-> inf} a^n = 0如果0 < a < 1並且lim_ {n-inf} a^n = inf如果a> 1;
爲了更好地理解檢查:算法導論,第三版 通過托馬斯·H·科門,查爾斯·E·萊澤森,羅納德L.維斯特和克利福德·斯坦
我的算法教授,我希望它幫助您。保重。
- 1. 大O符號Python函數
- 2. 大O符號 - 遞歸函數
- 3. 大O分析指數函數
- 4. 大O符號的數據結構
- 5. 這個函數的大O符號是什麼?
- 6. clojure庫函數的大O
- 7. 函數的大O計算
- 8. 指數大O等效
- 9. 總和大O符號的
- 10. Java中的大O符號
- 11. 算法的大O符號
- 12. 大O和函數統治
- 13. 大O和等號,符號的濫用
- 14. 大O符號證明
- 15. BIG-O /大哦符號
- 16. 大O符號混亂(C++)
- 17. 大O符號幫助
- 18. 大O符號和漸近
- 19. 大O符號,爲什麼
- 20. 大O符號算法
- 21. 簡化大O符號
- 22. 大O符號和遞歸
- 23. 使用大O符號
- 24. 困惑於大O符號
- 25. 大O,大歐米茄,大theta函數
- 26. 函數指針的C++重複符號
- 27. 大O符號 - O(n日誌(N))對O(的log(n^2))
- 28. 大O - 增長的函數的速度
- 29. 計算遞歸函數的大O
- 30. 記錄函數的大O表示
您不會忽略大O符號中的常量。你忽略係數。 2和3是基礎,而不是係數。 – kqr
你能說出Big-Oh的定義嗎?記住Big-Oh有一個數學定義,不應該直接使用。記住「有時你可以忽略常量」是一種壞習慣,在我看來。 – rliu